From de4a3a2c1b39c128d4ecd23367db5fcbda957bdd Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周二, 13 5月 2025 11:21:21 +0800 Subject: [PATCH] 临时提交 --- HIAWms/hiawms_web/src/widgets/WmsTask/Models/WmsTaskDrawer.ts | 97 ++-- HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs | 42 ++ HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/ChangeToPlace.tsx | 166 ++++++++ HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStockDetail.json | 3 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs | 49 ++ HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs | 34 + HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs | 12 HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts | 60 +++ HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialStockAppService.cs | 8 HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx | 12 HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss | 113 +++++ HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs | 12 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs | 7 HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx | 5 HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/WmsTask.ts | 37 + HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx | 317 +++++++++++++++ HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.tsx | 61 +++ HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.module.scss | 3 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/ChangeTaskToPlaceInput.cs | 40 ++ HIAWms/hiawms_web/src/widgets/WmsTask/Models/Service/WmsTaskDrawer.ts | 76 ++- HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/IWmsMaterialStockRepository.cs | 23 + 21 files changed, 1,086 insertions(+), 91 deletions(-) diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts new file mode 100644 index 0000000..035b581 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/Config.ts @@ -0,0 +1,60 @@ +export const columns = [ + { + type: 'seq', + width: 60, + title: '搴忓彿', + }, + { + field: 'materialNo', + title: '鐗╂枡缂栧彿', + }, + { + field: 'materialName', + title: '鐗╂枡鍚嶇О', + }, + { + field: 'placeNo', + title: '搴撲綅缂栧彿', + }, + { + field: 'placeStatusDesc', + title: '搴撲綅鐘舵��', + }, + { + field: 'containerNo', + title: '瀹瑰櫒缂栧彿', + }, + { + field: 'stockNumber', + title: '搴撳瓨鏁伴噺', + }, + { + field: 'materialBatch', + title: '鐗╂枡鎵规', + }, + { + field: 'materialModel', + title: '鍨嬪彿', + }, + { + field: 'areaName', + title: '鎵�灞炲簱鍖�', + }, + { + field: 'checkStatusDesc', + title: '妫�楠岀姸鎬�', + }, + { + field: 'inStockTime', + title: '鍏ュ簱鏃堕棿', + width: 180, + }, + { + field: 'isLockDesc', + title: '閿佸畾鐘舵��', + }, + { + field: 'remark', + title: '澶囨敞', + }, +] diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss new file mode 100644 index 0000000..365acbf --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.module.scss @@ -0,0 +1,113 @@ +.wmsMaterialStockContent { + width: 100%; + height: 80%; + + .wmsMaterialStockList { + width: 100%; + height: calc(100% - 70px); + } + .headerContent { + display: flex; + justify-content: space-between; + align-items: center; + height: 43px; + } + .header { + margin-bottom: 12px; + display: flex; + justify-content: flex-start; + align-items: center; + } +} + +.tagBox { + width: auto; + min-width: 80px; + height: 24px; + background: #ffffff; + border-radius: 19px 19px 19px 19px; + opacity: 1; + border: 1px dashed #bcc4cc; + width: 50px; + height: 20px; + font-size: 14px; + font-family: PingFang SC, PingFang SC; + font-weight: 400; + color: #5a84ff; + display: flex; + justify-content: center; + align-items: center; + // cursor: pointer; +} + +.group { + display: flex; + justify-content: space-between; + align-items: center; +} + +.groupTable { + width: 100%; +} + +.overBox { + width: 100%; + height: calc(100% - 20px); + overflow: auto; + :global(.cs-collapse-item__header) { + background-color: #f1f1f1; + padding: 0 20px; + height: 35px; + font-size: 16px; + font-family: PingFang SC, PingFang SC; + font-weight: 500; + } + :global(.cs-collapse-item__content) { + padding-bottom: 0px; + } +} +.groupHeader { + width: 100%; + height: 30px; + background: #ccc; +} + +.hideBlock { + display: none; +} +.queryForm { + padding: 10px; + background: #f5f7fa; + margin-bottom: 0px; + border-radius: 4px; + + .el-form-item { + margin-right: 20px; + margin-bottom: 0; + + // 缁熶竴杈撳叆妗嗗拰閫夋嫨妗嗙殑瀹藉害 + .el-input, .el-select { + width: 200px; // 璁剧疆缁熶竴鐨勫搴� + } + + // 閫夋嫨妗嗗唴閮ㄨ緭鍏ユ鏍峰紡 + .el-select .el-input__wrapper { + height: 32px; // 涓庤緭鍏ユ楂樺害涓�鑷� + padding: 1px 11px; // 涓庤緭鍏ユ鍐呰竟璺濅竴鑷� + } + + // 鏃ユ湡閫夋嫨鍣ㄥ搴� + .el-date-editor { + width: 220px; + } + } +} + +// 濡傛灉闇�瑕佹洿绮剧‘鐨勬帶鍒讹紝鍙互鍗曠嫭璁剧疆 +.formItem { + width: 200px; + + &.el-input, &.el-select { + width: 100%; + } +} \ No newline at end of file diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx new file mode 100644 index 0000000..40d7b2b --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/Pages/WmsMaterialStockDetail/WmsMaterialStockDetail.tsx @@ -0,0 +1,317 @@ +import { computed, defineComponent, onMounted, reactive, ref } from 'vue' +import type { Ref } from 'vue' +import BaseTable from '@/components/Table/Table' +import styles from './WmsMaterialStockDetail.module.scss' +import { useWmsMaterialStock } from '../../../Controllers/WmsMaterialStock' +import IconButton from '@/components/IconButton/IconButton' +import WmsMaterialStockDrawer from '../Dialog/WmsMaterialStockDrawer/WmsMaterialStockDrawer' +import Search from '@/components/Search/Search' +import { columns } from './Config' +import TdButton from '@/components/TdButton/TdButton' +import { vPermission } from '@/libs/Permission/Permission' +import dayjs from 'dayjs' +import { + ElDatePicker, + ElForm, + ElFormItem, + ElInput, + ElOption, + ElSelect, +} from 'element-plus' +import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer' + +interface RenderTableType { + url?: string + dataSource: Ref<any[]> + isDrag?: boolean + isChecked?: boolean + isHidePagination?: boolean + params?: Record<string, any> + autoHeight?: boolean +} + +export default defineComponent({ + name: 'WmsMaterialStock', + directives: { + permission: vPermission, + }, + setup(props, ctx) { + const { + dataSource, + contextMenu, + dialogConfig, + tableRef, + current, + search, + sort, + headers, + onError, + onSearch, + onRowClick, + onConfirmWmsMaterialStock, + onCheck, + onAddWmsMaterialStock, + onExport, + openDetail, + onSuccess, + onBeforeUpload, + } = useWmsMaterialStock(props, ctx) + + // 鏂板鐨勬煡璇㈡潯浠� + const queryForm = ref({ + containerNo: '', + materialNo: '', + materialName: '', + containerType: '', + containerStatus: '', + storageTypeNo: 1, + placeStatus: '', + placeNo: '', + isLock: '', + emptyContainer: '', + dateRange: [], + filter: '', + }) + + const queryParams = computed(() => ({ + ...queryForm.value, + containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺 + containerStatus: queryForm.value.containerStatus || '', + storageTypeNo: queryForm.value.storageTypeNo || 1, // 澶勭悊涓嬫媺 + placeStatus: queryForm.value.placeStatus || '', + islock: queryForm.value.isLock || '', + emptyContainer: queryForm.value.emptyContainer || '', + startTime: queryForm.value.dateRange[0] || '', + endTime: queryForm.value.dateRange[1] || '', + })) + + // 鍔ㄦ�佹灇涓鹃�夐」 + const enumOptions = reactive({ + containerType: [] as Array<{ label: string; value: any }>, + containerStatus: [] as Array<{ label: string; value: any }>, + storageTypeNo: [] as Array<{ label: string; value: any }>, + placeStatus: [] as Array<{ label: string; value: any }>, + yesOrNo: [] as Array<{ label: string; value: any }>, + }) + + // 鑾峰彇鏋氫妇鏁版嵁 + const fetchEnumData = async () => { + try { + // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇 + const containerTypeData = await getWmsEnumData({ + EnumName: 'ContainerTypeEnum', + }) + enumOptions.containerType = containerTypeData.map((item) => ({ + label: item.description, + value: item.value, + })) + // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇 + const storageTypeNoData = await getWmsEnumData({ + EnumName: 'PlaceTypeEnum', + }) + enumOptions.storageTypeNo = storageTypeNoData.map((item) => ({ + label: item.description, + value: item.value, + })) + + // 鑾峰彇閲囪喘绫诲瀷鏋氫妇 + const placeStatusData = await getWmsEnumData({ + EnumName: 'PlaceStatusEnum', + }) + enumOptions.placeStatus = placeStatusData.map((item) => ({ + label: item.description, + value: item.value, + })) + + // 鑾峰彇閲囪喘绫诲瀷鏋氫妇 + const containerStatusData = await getWmsEnumData({ + EnumName: 'ContainerStatusEnum', + }) + enumOptions.containerStatus = containerStatusData.map((item) => ({ + label: item.description, + value: item.value, + })) + + const yesNoData = await getWmsEnumData({ + EnumName: 'YesNoEnum', + }) + enumOptions.yesOrNo = yesNoData.map((item) => ({ + label: item.description, + value: item.value, + })) + } catch (error) { + console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error) + } + } + + // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹� + onMounted(() => { + fetchEnumData() + handleQuery() + }) + + // 鏂板鐨勬煡璇㈡柟娉� + const handleQuery = async () => { + console.log('鏌ヨ鏉′欢:', queryParams.value) + // tableRef.value.getTableList() + tableRef.value.getList(queryParams.value) + } + + // 閲嶇疆鏌ヨ鏉′欢 + const resetQuery = () => { + queryForm.value = { + containerNo: '', + materialNo: '', + materialName: '', + containerType: '', + containerStatus: '', + storageTypeNo: 1, + placeStatus: '', + placeNo: '', + isLock: '', + emptyContainer: '', + dateRange: [], + filter: '', + } + } + /** + * @returns 琛ㄦ牸 + */ + const RenderBaseTable = (props: RenderTableType) => { + const { + url, + dataSource, + isDrag, + isChecked, + isHidePagination, + params, + autoHeight, + } = props + props.params = { + ...queryParams.value, + ...params, + } + return ( + <div + class={{ + [styles.wmsMaterialStockList]: true, + }} + > + <BaseTable + ref={tableRef} + url={url} + sortUrlTpl="/api/v1/HIAWms/wmsMaterialStock/{id}/adjustsort/{sort}" + v-model:dataSource={dataSource.value} + columns={columns} + contextMenu={contextMenu} + params={params} + isDrag={isDrag} + isChecked={isChecked} + autoHeight={autoHeight} + onCheck={onCheck} + onRowClick={onRowClick} + isHidePagination={isHidePagination} + pageSize={20} + v-slots={{ + inStockTime: ({ row }: any) => { + return ( + <div> + {row.inStockTime != null + ? dayjs(row.inStockTime).format('YYYY-MM-DD HH:mm:ss') + : '-'} + </div> + ) + }, + name: ({ row }: any) => { + return row?.name ? ( + <TdButton + onClick={() => openDetail(row)} + text={<span style="color:#5a84ff">璇︽儏</span>} + icon="scale" + tip={row?.name} + hover + > + {row?.name} + </TdButton> + ) : ( + '-' + ) + }, + }} + ></BaseTable> + </div> + ) + } + return () => { + return ( + <div class={styles.wmsMaterialStockContent}> + {/* 娣诲姞/缂栬緫 */} + <WmsMaterialStockDrawer + v-model={dialogConfig.visible} + title={dialogConfig.title} + row={current.value} + sort={sort.value} + onConfirm={onConfirmWmsMaterialStock} + /> + {/* 楂樼骇鏌ヨ */} + {/* <WmsMaterialStockDetailDrawer + ref="wmsTaskQueryDrawerRef" + v-model={dialogConfigForQuery.visible} + title={dialogConfigForQuery.title} + row={current.value} + sort={sort.value} + onConfirmQuery={handleQuery} + onRestQuery={resetQuery} + onClose={closeQuery} + /> */} + <div class={styles.headerContent}> + <div class={styles.header}> + <IconButton + v-permission="wmsMaterialStock-add" + icon="add-p" + onClick={onAddWmsMaterialStock} + type="primary" + > + 娣诲姞 + </IconButton> + <el-divider direction="vertical" /> + <el-upload + v-permission="wmsMaterialStock-import" + name="file" + accept=".xlsx,.xls,.csv" + show-file-list={false} + onError={onError} + onSuccess={onSuccess} + before-upload={onBeforeUpload} + headers={headers.value} + action="/api/v1/HIAWms/wmsMaterialStock/import" + > + <IconButton icon="in">瀵煎叆</IconButton> + </el-upload> + + <IconButton + v-permission="wmsMaterialStock-output" + icon="out" + onClick={onExport} + > + 瀵煎嚭 + </IconButton> + </div> + {/* <Search + placeholder="璇疯緭鍏ュ叧閿瓧" + v-model={search.value} + onConfirm={onSearch} + style={{ marginTop: '-1px' }} + /> */} + </div> + <RenderBaseTable + url="/api/v1/HIAWms/wmsMaterialStock" + dataSource={dataSource} + isChecked={true} + isDrag={true} + /> + </div> + ) + } + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx index 9bb4efb..ac9b87a 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/WmsMaterialStock.tsx @@ -22,7 +22,10 @@ }) const entityNames = getEntityNames(Models) -const nameToLabelMap = [{ name: 'WmsMaterialStock', label: '搴撳瓨' }] +const nameToLabelMap = [ + { name: 'WmsMaterialStock', label: '搴撳瓨' }, + { name: 'WmsMaterialStockDetail', label: '搴撳瓨鏄庣粏' }, +] export default defineComponent({ name: 'WmsMaterialStock', diff --git a/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStockDetail.json b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStockDetail.json new file mode 100644 index 0000000..454b838 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsMaterialStock/Views/config/WmsMaterialStockDetail.json @@ -0,0 +1,3 @@ +{ + "name": "WmsMaterialStockDetail" +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/ChangeToPlace.tsx b/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/ChangeToPlace.tsx new file mode 100644 index 0000000..aaac6f4 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/ChangeToPlace.tsx @@ -0,0 +1,166 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { WmsTaskDrawer } from '../Models/WmsTaskDrawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const ChangeToPlace = (props: any, ctx?: any) => { + const wmsTaskDrawer = injectModel<WmsTaskDrawer>('wmsTaskDrawer') + /** + * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 娣诲姞鐨刦orm瀛楁 + */ + const formItems = reactive([ + { + label: '浠诲姟鍙�', + prop: 'taskNo', + el: 'input', + disabled: disabled, + placeholder: '璇疯緭鍏ヤ换鍔″彿', + rules: [{ required: true, message: '浠诲姟鍙蜂笉鑳戒负绌�', trigger: 'blur' }], + }, + { + label: '璧峰搴撲綅', + prop: 'sourcePlace', + el: 'input', + disabled: disabled, + rules: [{ required: true, message: '璧峰搴撲綅涓嶈兘涓虹┖', trigger: 'blur' }], + placeholder: '璇疯緭鍏ヨ捣濮嬪簱浣�', + }, + { + label: '鐩爣搴撲綅', + prop: 'toPlace', + el: 'input', + // disabled: disabled, + rules: [{ required: true, message: '鐩爣搴撲綅涓嶈兘涓虹┖', trigger: 'blur' }], + placeholder: '璇疯緭鍏ョ洰鏍囧簱浣�', + }, + { + label: '鍨嬪彿', + prop: 'mutableParam1', + el: 'input', + disabled: disabled, + placeholder: '璇疯緭鍏ュ彲鍙樺彉閲�1', + }, + ]) + /** + * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 淇濆瓨 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + taskNo: formData.value.taskNo, + sourcePlace: formData.value.sourcePlace, + toPlace: formData.value.toPlace, + mutableParam1: formData.value.mutableParam1, + } + const id = current.value.id + await wmsTaskDrawer.changeTaskToPlace(data) + ElMessage.success('淇敼鎴愬姛') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + /** + * 寮圭獥鎵撳紑鑾峰彇璇︽儏 + */ + const onOpenChange = async () => { + if (current.value) { + const res = await wmsTaskDrawer.getWmsTaskDetail(current.value) + + formData.value = { + taskNo: res.taskNo, + sourcePlace: res.sourcePlace, + toPlace: res.toPlace, + mutableParam1: res.mutableParam1, + id: res.id, + } + if (res.taskStatus != 1) { + disabled.value = true + } + updateCheckData() + } else { + ElMessage.warning('璇峰厛閫夋嫨涓�鏉℃暟鎹�') + visible.value = false + return + } + } + + watch(() => current.value, onOpenChange) + + return { + formItems, + formData, + visible, + formRef, + onOpenChange, + onClose, + onConfirm, + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/WmsTask.ts b/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/WmsTask.ts index 5233f95..c81cd4e 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/WmsTask.ts +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Controllers/WmsTask.ts @@ -67,6 +67,11 @@ title: '', }) + const dialogChangeToPlaceConfig = reactive({ + visible: false, + title: '', + isAdd: false, + }) /** * 鍒嗛〉鏁版嵁 */ @@ -84,6 +89,14 @@ sort.value = row.sort } + const openChangToPlace = (row: any) => { + current.value = row + dialogChangeToPlaceConfig.visible = true + dialogChangeToPlaceConfig.title = '淇敼鐩爣搴撲綅' + dialogChangeToPlaceConfig.isAdd = false + console.log('row', row) + } + const contextMenu = [ { label: '灞曞紑璇︽儏', @@ -95,18 +108,16 @@ divided: true, icon: 'o', }, - // { - // label: '鍚戜笂娣诲姞', - // fn: (c: CurrentType, pageNum: number) => { - // current.value = null - // sort.value = c.index + 1 + (pageNum - 1) * 50 - // dialogConfig.visible = true - // dialogConfig.title = '娣诲姞' - // dialogConfig.isAdd = false - // }, - // divided: true, - // icon: 'up', - // }, + { + label: '淇敼鐩爣搴撲綅', + fn: (c: CurrentType) => { + current.value = null + sort.value = c.row.sort + nextTick(() => openChangToPlace(c.row)) + }, + divided: true, + icon: 'up', + }, { label: '寮哄埗瀹屾垚', fn: async (c: CurrentType) => { @@ -278,6 +289,7 @@ dialogConfig, dialogConfigForQuery, dialogSettingConfig, + dialogChangeToPlaceConfig, tableRef, current, search, @@ -289,6 +301,7 @@ onError, onSuccess, openDetail, + openChangToPlace, onSearch, onExport, onRowClick, diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Models/Service/WmsTaskDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsTask/Models/Service/WmsTaskDrawer.ts index 3ccea93..00f8f6d 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsTask/Models/Service/WmsTaskDrawer.ts +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Models/Service/WmsTaskDrawer.ts @@ -1,34 +1,42 @@ -import { Base } from '@/libs/Base/Base' -const request = Base.request - -/** - * 娣诲姞 - * @returns - */ -export const addWmsTask = (data: any) => { - return request.post('/api/v1/HIAWms/wmsTask', data) -} - -/** - * 鑾峰彇璇︽儏 - * @returns - */ -export const getWmsTask = (id: string) => { - return request.get(`/api/v1/HIAWms/wmsTask/${id}`) -} - -/** - * 鏇存柊 - * @returns - */ -export const updateWmsTask = (id: string, data: Record<string, any>) => { - return request.put(`/api/v1/HIAWms/wmsTask/${id}`, data) -} - -/** - * 鑾峰彇鏋氫妇 - * @returns - */ -export const getWmsEnumData = (data: any) => { - return request.post('/api/v1/HIAWms/WmsEnum', data) -} +import { Base } from '@/libs/Base/Base' +const request = Base.request + +/** + * 娣诲姞 + * @returns + */ +export const addWmsTask = (data: any) => { + return request.post('/api/v1/HIAWms/wmsTask', data) +} + +/** + * 鑾峰彇璇︽儏 + * @returns + */ +export const getWmsTask = (id: string) => { + return request.get(`/api/v1/HIAWms/wmsTask/${id}`) +} + +/** + * 鏇存柊 + * @returns + */ +export const updateWmsTask = (id: string, data: Record<string, any>) => { + return request.put(`/api/v1/HIAWms/wmsTask/${id}`, data) +} + +/** + * 鑾峰彇鏋氫妇 + * @returns + */ +export const getWmsEnumData = (data: any) => { + return request.post('/api/v1/HIAWms/WmsEnum', data) +} + +/** + * 淇敼鐩爣搴撲綅 + * @returns + */ +export const changeToPlace = (data: any) => { + return request.post('/api/v1/HIAWms/wmsTask/ChangeTaskToPlace', data) +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Models/WmsTaskDrawer.ts b/HIAWms/hiawms_web/src/widgets/WmsTask/Models/WmsTaskDrawer.ts index 08058db..67f06f9 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsTask/Models/WmsTaskDrawer.ts +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Models/WmsTaskDrawer.ts @@ -1,44 +1,53 @@ -import { Base } from '@/libs/Base/Base' -import { - addWmsTask, - getWmsTask, - updateWmsTask, - getWmsEnumData, -} from './Service/WmsTaskDrawer' -import { useGlobalState } from '@/libs/Store/Store' - -export class WmsTaskDrawer extends Base<{ [key: string]: any }> { - constructor() { - super({ - data: [], - wmsTask: {}, - }) - } - - /** - * 娣诲姞 - * @param data - */ - async addWmsTask(data: Record<string, any>) { - return addWmsTask(data) - } - /** - * 鏇存柊 - * @param data - */ - async updateWmsTask(id: string, data: Record<string, any>) { - return updateWmsTask(id, data) - } - - /** - * 鑾峰彇璇︽儏 - */ - async getWmsTaskDetail(current: any, id?: string) { - return getWmsTask(id || current?.id) - } - - // 鑾峰彇鏋氫妇鍊� - async getWmsEnumData(data: Record<string, any>) { - return getWmsEnumData(data) - } -} +import { Base } from '@/libs/Base/Base' +import { + addWmsTask, + getWmsTask, + updateWmsTask, + getWmsEnumData, + changeToPlace, +} from './Service/WmsTaskDrawer' +import { useGlobalState } from '@/libs/Store/Store' + +export class WmsTaskDrawer extends Base<{ [key: string]: any }> { + constructor() { + super({ + data: [], + wmsTask: {}, + }) + } + + /** + * 娣诲姞 + * @param data + */ + async addWmsTask(data: Record<string, any>) { + return addWmsTask(data) + } + /** + * 鏇存柊 + * @param data + */ + async updateWmsTask(id: string, data: Record<string, any>) { + return updateWmsTask(id, data) + } + + /** + * 鏇存柊 + * @param data + */ + async changeTaskToPlace(data: Record<string, any>) { + return changeToPlace(data) + } + + /** + * 鑾峰彇璇︽儏 + */ + async getWmsTaskDetail(current: any, id?: string) { + return getWmsTask(id || current?.id) + } + + // 鑾峰彇鏋氫妇鍊� + async getWmsEnumData(data: Record<string, any>) { + return getWmsEnumData(data) + } +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.module.scss b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.module.scss new file mode 100644 index 0000000..177adca --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.module.scss @@ -0,0 +1,3 @@ +.drawer { + width: 800px; +} diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.tsx b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.tsx new file mode 100644 index 0000000..43716d7 --- /dev/null +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog.tsx @@ -0,0 +1,61 @@ +import { SetupContext, defineComponent } from 'vue' +import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' +import styles from './ChangeToPlaceDialog.module.scss' +import { ChangeToPlace } from '../../../../Controllers/ChangeToPlace.tsx' +import DyForm from '@/components/DyForm/DyForm' + +// @ts-ignore +export default defineComponent<{ + [key: string]: any +}>({ + name: '寮圭獥', + props: { + modelValue: { + type: Boolean, + default: false, + }, + title: { + type: String, + default: '', + }, + row: { + type: Object, + }, + sort: { + type: Number, + default: 0, + }, + }, + emits: ['update:modelValue', 'close', 'submit', 'confirm'], + setup(props: Record<string, any>, ctx: SetupContext) { + const { + onClose, + onConfirm, + onOpenChange, + formRef, + visible, + formItems, + formData, + } = ChangeToPlace(props, ctx) + return () => ( + <BaseDrawer + class={styles.drawer} + size="800px" + title={props.title || '娣诲姞'} + v-model={visible.value} + close-on-click-modal={true} + onConfirm={onConfirm} + onOpen={onOpenChange} + before-close={onClose} + onClose={onClose} + > + <DyForm + ref={formRef} + formData={formData.value} + labelWidth="150px" + formItemProps={formItems} + ></DyForm> + </BaseDrawer> + ) + }, +}) diff --git a/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx index 5cca268..e62dc46 100644 --- a/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx +++ b/HIAWms/hiawms_web/src/widgets/WmsTask/Views/Pages/WmsTask/WmsTask.tsx @@ -5,6 +5,7 @@ import { useWmsTask } from '../../../Controllers/WmsTask' import IconButton from '@/components/IconButton/IconButton' import WmsTaskDrawer from '../Dialog/WmsTaskDrawer/WmsTaskDrawer' +import ChangeToPlaceDialog from '../Dialog/ChangeToPlaceDialog/ChangeToPlaceDialog' import WmsTaskQueryDrawer from '../Dialog/WmsTaskQueryDrawer/WmsTaskQueryDrawer' import Search from '@/components/Search/Search' import { columns } from './Config' @@ -43,6 +44,7 @@ contextMenu, dialogConfig, dialogConfigForQuery, + dialogChangeToPlaceConfig, tableRef, current, search, @@ -264,6 +266,16 @@ onRestQuery={resetQuery} onClose={closeQuery} /> + <ChangeToPlaceDialog + ref="changeToPlace" + v-model={dialogChangeToPlaceConfig.visible} + title={dialogChangeToPlaceConfig.title} + row={current.value} + sort={sort.value} + onConfirmQuery={handleQuery} + onRestQuery={resetQuery} + onClose={closeQuery} + /> <div class={styles.headerContent}> <div class={styles.header}> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/ChangeTaskToPlaceInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/ChangeTaskToPlaceInput.cs new file mode 100644 index 0000000..888ba02 --- /dev/null +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/ChangeTaskToPlaceInput.cs @@ -0,0 +1,40 @@ +锘縰sing CMS.Plugin.HIAWms.Domain.Shared.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask +{ + /// <summary> + /// 淇敼鐩爣搴撲綅鍙傛暟 + /// </summary> + public class ChangeTaskToPlaceInput + { + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public string TaskNo { get; set; } + + /// <summary> + /// 浠诲姟绫诲瀷 + /// </summary> + public TaskTypeEnum TaskType { get; set; } + /// <summary> + /// 璧峰搴撲綅 + /// </summary> + public string? SourcePlace { get; set; } + + /// <summary> + /// 鐩爣搴撲綅 + /// </summary> + public string? ToPlace { get; set; } + + /// <summary> + /// 鍙彉鍙橀噺1 + /// </summary> + public string? MutableParam1 { get; set; } + } +} diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialStockAppService.cs index 7269cab..d297289 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialStockAppService.cs @@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks; +using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; namespace CMS.Plugin.HIAWms.Application.Contracts.Services; @@ -16,6 +17,13 @@ Task<List<WmsMaterialStockDto>> CloneAsync(IEnumerable<Guid> ids); /// <summary> + /// 鑾峰彇搴撳瓨鏄庣粏 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<PagedResultDto<WmsMaterialStockDto>> GetStockDetailAsync(GetWmsMaterialStocksInput input); + + /// <summary> /// Deletes the many asynchronous. /// </summary> /// <param name="ids">The ids.</param> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs index b01823b..425e4c7 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsTaskAppService.cs @@ -57,4 +57,11 @@ /// <param name="input"></param> /// <returns></returns> Task CancelTaskAysnc(WmsTaskStatusDto input); + + /// <summary> + /// 淇敼鐩爣搴撲綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input); } 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 491abba..334b107 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs @@ -1,4 +1,5 @@ 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.WmsMaterialStocks; using CMS.Plugin.HIAWms.Domain.WmsAreas; @@ -6,8 +7,11 @@ using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; using CMS.Plugin.HIAWms.Domain.WmsPlaces; +using CMS.Plugin.HIAWms.Domain.WmsTask; using CmsQueryExtensions; +using CmsQueryExtensions.Extension; using Microsoft.Extensions.DependencyInjection; +using System.Linq.Expressions; using System.Text.Json; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -71,6 +75,51 @@ return new PagedResultDto<WmsMaterialStockDto>(count, ObjectMapper.Map<List<WmsMaterialStock>, List<WmsMaterialStockDto>>(list)); } + public async Task<PagedResultDto<WmsMaterialStockDto>> GetStockDetailAsync(GetWmsMaterialStocksInput input) + { + Check.NotNull(input, nameof(input)); + + if (input.Sorting.IsNullOrWhiteSpace()) + { + input.Sorting = nameof(WmsMaterialStock.Sort); + } + + #region 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = DynamicGetQueryParams(input); + + #endregion + + var count = await _wmsmaterialstockRepository.GetDetailCountAsync(whereConditions); + var list = await _wmsmaterialstockRepository.GetStockDetailListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + + return new PagedResultDto<WmsMaterialStockDto>(count, ObjectMapper.Map<List<WmsMaterialStock>, List<WmsMaterialStockDto>>(list)); + } + + /// <summary> + /// 鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + /// </summary> + /// <param name="input">杈撳叆鍙傛暟</param> + /// <returns></returns> + private FunReturnResultModel<Expression<Func<WmsMaterialStock, bool>>> DynamicGetQueryParams(GetWmsMaterialStocksInput input) + { + //鍔ㄦ�佹瀯閫犳煡璇㈡潯浠� + var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterialStock, GetWmsMaterialStocksInput>(input); + if (!whereConditions.IsSuccess) + { + throw new Exception("鍔ㄦ�佹瀯閫犳煡璇㈡潯浠跺け璐�:" + whereConditions.ErrMsg); + } + + //涔熷彲鍐嶆鑷畾涔夋瀯寤烘煡璇㈡潯浠� + Expression<Func<WmsMaterialStock, bool>> extendExpression = a => a.IsDeleted == false ; + // 浣跨敤 System.Linq.PredicateBuilder 鐨� And + var pres = (System.Linq.Expressions.Expression<Func<WmsMaterialStock, bool>>)(whereConditions.data); + whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); + + return whereConditions; + } + /// <inheritdoc /> public virtual async Task<WmsMaterialStockDto> CreateAsync(WmsMaterialStockCreateDto input) { diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs index d3d4886..a23e39d 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs @@ -694,4 +694,38 @@ await uow.SaveChangesAsync(); await uow.CompleteAsync(); } + + /// <summary> + /// 淇敼鐩爣搴撲綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input) + { + var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); + if (task == null) + { + throw new UserFriendlyException("浠诲姟淇℃伅涓嶅瓨鍦�"); + } + + if (task.TaskStatus != WmsTaskStatus.WEIZHIXING) + { + throw new UserFriendlyException("宸插紑濮嬫垨鑰呯粨鏉熺殑浠诲姟涓嶅厑璁镐慨鏀�"); + } + + var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace }); + if (toplaceStock != null && toplaceStock.Count>0) + { + var model = toplaceStock.FirstOrDefault(); + if (model.MaterialModel != input.MutableParam1) + { + throw new UserFriendlyException("鐩爣搴撲綅鍨嬪彿涓庡綋鍓嶅瀷鍙蜂笉涓�鑷翠笉鍏佽淇敼"); + } + } + + task.ToPlace = input.ToPlace; + + await wmsTaskRepository.UpdateAsync(task); + } } diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/IWmsMaterialStockRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/IWmsMaterialStockRepository.cs index 181ada8..a8ab1c7 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/IWmsMaterialStockRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsMaterialStocks/IWmsMaterialStockRepository.cs @@ -1,3 +1,5 @@ +using CmsQueryExtensions.Extension; +using System.Linq.Expressions; using Volo.Abp.Domain.Repositories; using Volo.Abp.Specifications; @@ -57,6 +59,27 @@ /// <param name="stock"></param> /// <returns></returns> Task<List<WmsMaterialStock>> GetStockListAsync(WmsMaterialStock? stock); + + /// <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<WmsMaterialStock>> GetStockDetailListAsync(FunReturnResultModel<Expression<Func<WmsMaterialStock, 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> GetDetailCountAsync(FunReturnResultModel<Expression<Func<WmsMaterialStock, bool>>> whereConditions, CancellationToken cancellationToken = default); + /// <summary> /// Gets the count asynchronous. /// </summary> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs index 117a125..202ee99 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs @@ -1,6 +1,9 @@ using System.Linq.Dynamic.Core; +using System.Linq.Expressions; using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; +using CMS.Plugin.HIAWms.Domain.WmsTask; using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using CmsQueryExtensions.Extension; using DatabaseSchemaReader.Filters; using Microsoft.EntityFrameworkCore; using SqlKata; @@ -253,9 +256,48 @@ .WhereIf(!string.IsNullOrEmpty(stock?.AreaName), u => u.AreaName.Contains(stock.AreaName)) .WhereIf(stock.IsLock > 0, u => u.IsLock == stock.IsLock) .Where(u => !u.IsDeleted) + .OrderByDescending(x=>x.InStockTime) .ToListAsync(); return baseQuery; } + + /// <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<WmsMaterialStock>> GetStockDetailListAsync(FunReturnResultModel<Expression<Func<WmsMaterialStock, 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) + .OrderBy(x=>x.PlaceNo) + .ThenByDescending(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> GetDetailCountAsync(FunReturnResultModel<Expression<Func<WmsMaterialStock, 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<WmsMaterialStock>> WithDetailsAsync() { diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs index 2b88542..e47bac5 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialStockController.cs @@ -58,6 +58,18 @@ } /// <summary> + /// 鍝嚭鏉ユ槑缁� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [Route("StockDetail")] + public async Task<PagedResultDto<WmsMaterialStockDto>> GetStockDetailAsync(GetWmsMaterialStocksInput input) + { + return await _wmsmaterialstockAppService.GetStockDetailAsync(input); + } + + /// <summary> /// 鍒涘缓wmsmaterialstock. /// </summary> /// <param name="input">杈撳叆.</param> diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs index dc8ece5..5704659 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms/Controller/WmsTaskController.cs @@ -208,5 +208,17 @@ { await _wmsTaskAppService.CancelTaskAysnc(input); } + + /// <summary> + /// 淇敼浠诲姟鐩爣搴撲綅 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [Route("ChangeTaskToPlace")] + public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input) + { + await _wmsTaskAppService.ChangeTaskToPlaceAsync(input); + } } } -- Gitblit v1.9.3