From b5d60a301038646695c7bda682ac59fa311cfbbf Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 13 5月 2025 12:55:50 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
---
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