From b641e2ec7ed2ee38747ab156ae501bda87aec0e3 Mon Sep 17 00:00:00 2001
From: zongzhibin <zongzhibin@weben-smart.com>
Date: 周五, 22 11月 2024 13:23:09 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine

---
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs  |  369 +++++++++++
 LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts                                          |   78 ++
 LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/机器人任务表导入模板.xlsx                  |    0 
 LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue                                 |  424 +++++++++++++
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs |  145 ++++
 LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs    |  511 ++++++++++++++++
 LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue                  |  291 +++++++++
 7 files changed, 1,818 insertions(+), 0 deletions(-)

diff --git a/LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts b/LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts
new file mode 100644
index 0000000..18b7337
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts
@@ -0,0 +1,78 @@
+锘縤mport request from '/@/utils/request';
+enum Api {
+  AddWmsRbLineTask = '/api/wmsRbLineTask/add',
+  DeleteWmsRbLineTask = '/api/wmsRbLineTask/delete',
+  UpdateWmsRbLineTask = '/api/wmsRbLineTask/update',
+  PageWmsRbLineTask = '/api/wmsRbLineTask/page',
+  ListWmsRbLineTask = '/api/wmsRbLineTask/list',
+  DetailWmsRbLineTask = '/api/wmsRbLineTask/detail',
+  ImportExcelWmsRbLineTask = '/api/wmsRbLineTask/importExcel',
+  DownloadExcelTemplateWmsRbLineTask = '/api/wmsRbLineTask/downloadExcelTemplate',
+}
+
+// 澧炲姞鏈哄櫒浜轰换鍔¤〃
+export const addWmsRbLineTask = (params?: any) =>
+	request({
+		url: Api.AddWmsRbLineTask,
+		method: 'post',
+		data: params
+	});
+
+// 鍒犻櫎鏈哄櫒浜轰换鍔¤〃
+export const deleteWmsRbLineTask = (params?: any) => 
+	request({
+			url: Api.DeleteWmsRbLineTask,
+			method: 'post',
+			data: params
+		});
+
+// 缂栬緫鏈哄櫒浜轰换鍔¤〃
+export const updateWmsRbLineTask = (params?: any) => 
+	request({
+			url: Api.UpdateWmsRbLineTask,
+			method: 'post',
+			data: params
+		});
+
+// 瀵煎叆鏈哄櫒浜轰换鍔¤〃
+export const importExcelWmsRbLineTask = (params?: any) =>
+	request({
+		url: Api.ImportExcelWmsRbLineTask,
+		method: 'post',
+		data: params
+	});
+
+// 涓嬭浇瀵煎叆鏈哄櫒浜轰换鍔¤〃妯℃澘
+export const downloadExcelTemplateWmsRbLineTask = (params?: any) => 
+	request({
+			url: Api.DownloadExcelTemplateWmsRbLineTask,
+			method: 'get',
+			data: params,
+			responseType: 'blob'
+		});
+
+
+// 鍒嗛〉鏌ヨ鏈哄櫒浜轰换鍔¤〃
+export const pageWmsRbLineTask = (params?: any) => 
+	request({
+			url: Api.PageWmsRbLineTask,
+			method: 'post',
+			data: params
+		});
+
+// 涓嶅垎椤垫煡璇㈡満鍣ㄤ汉浠诲姟琛�
+export const listWmsRbLineTask = (params?: any) => 
+	request({
+			url: Api.ListWmsRbLineTask,
+			method: 'get',
+			data: params
+		});
+
+// 璇︽儏鏈哄櫒浜轰换鍔¤〃
+export const detailWmsRbLineTask = (id: any) => 
+	request({
+			url: Api.DetailWmsRbLineTask,
+			method: 'get',
+			data: { id }
+		});
+
diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue
new file mode 100644
index 0000000..500304c
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue
@@ -0,0 +1,291 @@
+锘�<template>
+	<div class="wmsRbLineTask-container">
+		<el-dialog v-model="isShowDialog" :width="800" draggable="" :close-on-click-modal="false">
+			<template #header>
+				<div style="color: #fff">
+					<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
+					<span>{{ props.title }}</span>
+				</div>
+			</template>
+			<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules" v-loading="loading">
+				<el-row :gutter="35">
+					<el-form-item v-show="false">
+						<el-input v-model="ruleForm.id" />
+					</el-form-item>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鍙�" prop="taskNo">
+							<el-input v-model="ruleForm.taskNo" placeholder="璇疯緭鍏ヤ换鍔″彿" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鍚嶇О" prop="taskName">
+							<el-input v-model="ruleForm.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="閮ㄤ欢鏉$爜" prop="upi">
+							<el-input v-model="ruleForm.upi" placeholder="璇疯緭鍏ラ儴浠舵潯鐮�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="闀�" prop="length">
+							<el-input v-model="ruleForm.length" placeholder="璇疯緭鍏ラ暱" maxlength="53" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="瀹�" prop="width">
+							<el-input v-model="ruleForm.width" placeholder="璇疯緭鍏ュ" maxlength="53" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鍘�" prop="thk">
+							<el-input v-model="ruleForm.thk" placeholder="璇疯緭鍏ュ帤" maxlength="53" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鎵规鍙�" prop="planNo">
+							<el-input v-model="ruleForm.planNo" placeholder="璇疯緭鍏ユ壒娆″彿" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="璁㈠崟鍙�" prop="orderId">
+							<el-input v-model="ruleForm.orderId" placeholder="璇疯緭鍏ヨ鍗曞彿" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鍖呰鍙�" prop="packageCode">
+							<el-input v-model="ruleForm.packageCode" placeholder="璇疯緭鍏ュ寘瑁呭彿" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="搴撲綅缂栫爜" prop="placeCode">
+							<el-input v-model="ruleForm.placeCode" placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟绫诲瀷" prop="rbTaskType">
+							<el-select clearable v-model="ruleForm.rbTaskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+								<el-option v-for="(item,index) in  getEnumRbTaskTypeData" :key="index" :value="item.value" :label="`${item.describe}`"></el-option>
+								
+							</el-select>
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟绫诲瀷鍚嶇О" prop="rbTaskTypeEnumName">
+							<el-input v-model="ruleForm.rbTaskTypeEnumName" placeholder="璇疯緭鍏ヤ换鍔$被鍨嬪悕绉�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鐘舵��" prop="taskStatus">
+							<el-select clearable v-model="ruleForm.taskStatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+								<el-option v-for="(item,index) in  getEnumTaskStatusData" :key="index" :value="item.value" :label="`${item.describe}`"></el-option>
+								
+							</el-select>
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鐘舵�佸悕绉�" prop="taskStatusName">
+							<el-input v-model="ruleForm.taskStatusName" placeholder="璇疯緭鍏ヤ换鍔$姸鎬佸悕绉�" maxlength="255" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鎻忚堪" prop="taskDescribe">
+							<el-input v-model="ruleForm.taskDescribe" placeholder="璇疯緭鍏ヤ换鍔℃弿杩�" maxlength="255" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟娑堟伅" prop="taskMsg">
+							<el-input v-model="ruleForm.taskMsg" placeholder="璇疯緭鍏ヤ换鍔℃秷鎭�" maxlength="255" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="涓嬪彂鏃堕棿" prop="issueTime">
+							<el-date-picker v-model="ruleForm.issueTime" type="date" placeholder="涓嬪彂鏃堕棿" />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟瀹屾垚鏃堕棿" prop="finishedTime">
+							<el-date-picker v-model="ruleForm.finishedTime" type="date" placeholder="浠诲姟瀹屾垚鏃堕棿" />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鏄惁鏍囪寮哄埗瀹屾垚" prop="isFlagFinish">
+							<el-switch v-model="ruleForm.isFlagFinish" active-text="鏄�" inactive-text="鍚�" />
+							
+						</el-form-item>
+						
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="cancel">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submit" :disabled="disabled_btn">纭� 瀹�</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+<style scoped>
+:deep(.el-select),
+:deep(.el-input-number) {
+	width: 100%;
+}
+</style>
+<script lang="ts" setup>
+	import { ref,onMounted } from "vue";
+	import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
+	import { ElMessage } from "element-plus";
+	import type { FormRules } from "element-plus";
+	import { addWmsRbLineTask, updateWmsRbLineTask, detailWmsRbLineTask } from "/@/api/main/WmsTask/wmsRbLineTask";
+	import { getAPI } from '/@/utils/axios-utils';
+	import { SysEnumApi } from '/@/api-services/api';
+
+	const getEnumRbTaskTypeData = ref<any>([]);
+	const getEnumTaskStatusData = ref<any>([]);
+	//鐖剁骇浼犻�掓潵鐨勫弬鏁�
+	var props = defineProps({
+		title: {
+		type: String,
+		default: "",
+	},
+	});
+	//鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟
+	const emit = defineEmits(["reloadTable"]);
+	const ruleFormRef = ref();
+	const isShowDialog = ref(false);
+	const loading = ref(false);
+	const disabled_btn = ref(false);
+	const ruleForm = ref<any>({});
+	//鑷娣诲姞鍏朵粬瑙勫垯
+	const rules = ref<FormRules>({
+		taskNo: [{required: true, message: '璇疯緭鍏ヤ换鍔″彿锛�', trigger: 'blur',},],
+		upi: [{required: true, message: '璇疯緭鍏ラ儴浠舵潯鐮侊紒', trigger: 'blur',},],
+		length: [{required: true, message: '璇疯緭鍏ラ暱锛�', trigger: 'blur',},],
+		width: [{required: true, message: '璇疯緭鍏ュ锛�', trigger: 'blur',},],
+		thk: [{required: true, message: '璇疯緭鍏ュ帤锛�', trigger: 'blur',},],
+		planNo: [{required: true, message: '璇疯緭鍏ユ壒娆″彿锛�', trigger: 'blur',},],
+		orderId: [{required: true, message: '璇疯緭鍏ヨ鍗曞彿锛�', trigger: 'blur',},],
+		packageCode: [{required: true, message: '璇疯緭鍏ュ寘瑁呭彿锛�', trigger: 'blur',},],
+		placeCode: [{required: true, message: '璇疯緭鍏ュ簱浣嶇紪鐮侊紒', trigger: 'blur',},],
+		taskStatus: [{required: true, message: '璇烽�夋嫨浠诲姟鐘舵�侊紒', trigger: 'change',},],
+		taskStatusName: [{required: true, message: '璇疯緭鍏ヤ换鍔$姸鎬佸悕绉帮紒', trigger: 'blur',},],
+		isFlagFinish: [{required: true, message: '璇烽�夋嫨鏄惁鏍囪寮哄埗瀹屾垚锛�', trigger: 'change',},],
+		isDelete: [{required: true, message: '璇烽�夋嫨杞垹闄わ紒', trigger: 'change',},],
+	});
+
+	/*
+	 * 鎵撳紑寮圭獥
+	 * @param flag 鏍囪锛�1鏂板 2缂栬緫 3鏌ョ湅锛�
+	 * @param row  琛屾暟鎹�
+	 */
+	const openDialog = async (flag: number,row: any) => {
+		// ruleForm.value = JSON.parse(JSON.stringify(row));
+		// 鏀圭敤detail鑾峰彇鏈�鏂版暟鎹潵缂栬緫
+		let rowData = JSON.parse(JSON.stringify(row));
+		if (rowData.id)
+			ruleForm.value = (await detailWmsRbLineTask(rowData.id)).data.result;
+		else {
+		    ruleForm.value = rowData;
+			ruleForm.value.isFlagFinish = false;//蹇呭~锛岃祴鍊奸粯璁ゅ��
+		}
+		isShowDialog.value = true;
+	};
+
+	// 鍏抽棴寮圭獥
+	const closeDialog = () => {
+		emit("reloadTable");
+		isShowDialog.value = false;
+	};
+
+	// 鍙栨秷
+	const cancel = () => {
+		isShowDialog.value = false;
+	};
+
+	// 鎻愪氦
+	const submit = async () => {
+	    disabled_btn.value = true;
+		ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
+			if (isValid) {
+			    loading.value = true;
+				let values = ruleForm.value;
+				let ret={};
+				let title='鏂板';
+				if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
+					ret = await addWmsRbLineTask(values);
+				} else {
+					title='缂栬緫';
+					ret = await updateWmsRbLineTask(values);
+				}
+				loading.value = false;
+				disabled_btn.value = false;
+				if(ret.data.type=="success"){
+					ElMessage.success(title+'鎴愬姛');
+					closeDialog();
+				}
+			} else {
+			    disabled_btn.value = false;
+				ElMessage({
+					message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜,
+					type: "error",
+				});
+			}
+		});
+	};
+
+	
+
+
+
+
+
+	// 椤甸潰鍔犺浇鏃�
+	onMounted(async () => {
+			getEnumRbTaskTypeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('RbTaskTypeEnum')).data.result ?? [];
+			getEnumTaskStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TaskStatusEnum')).data.result ?? [];
+	});
+
+	//灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠�
+	defineExpose({ openDialog });
+</script>
+
+
+
+
diff --git a/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue b/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue
new file mode 100644
index 0000000..d10b29e
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue
@@ -0,0 +1,424 @@
+锘�<template>
+  <div class="wmsRbLineTask-container">
+    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> 
+      <el-form :model="queryParamsWmsRbLineTask" ref="queryForm" labelWidth="90">
+        <el-row>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+            <el-form-item label="鍏抽敭瀛�">
+              <el-input v-model="queryParamsWmsRbLineTask.searchKey" clearable="" placeholder="浠诲姟鍙�,浠诲姟鍚嶇О,閮ㄤ欢鏉$爜,鎵规鍙�,璁㈠崟鍙�,鍖呰鍙�,搴撲綅缂栫爜,浠诲姟绫诲瀷鍚嶇О,浠诲姟鐘舵�佸悕绉�,浠诲姟鎻忚堪,浠诲姟娑堟伅,鍒涘缓浜�,淇敼浜�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟鍙�">
+              <el-input v-model="queryParamsWmsRbLineTask.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟鍚嶇О">
+              <el-input v-model="queryParamsWmsRbLineTask.taskName" clearable="" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="閮ㄤ欢鏉$爜">
+              <el-input v-model="queryParamsWmsRbLineTask.upi" clearable="" placeholder="璇疯緭鍏ラ儴浠舵潯鐮�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="闀�">
+              <el-input v-model="queryParamsWmsRbLineTask.length" clearable="" placeholder="璇疯緭鍏ラ暱"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="瀹�">
+              <el-input v-model="queryParamsWmsRbLineTask.width" clearable="" placeholder="璇疯緭鍏ュ"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="鍘�">
+              <el-input v-model="queryParamsWmsRbLineTask.thk" clearable="" placeholder="璇疯緭鍏ュ帤"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="鎵规鍙�">
+              <el-input v-model="queryParamsWmsRbLineTask.planNo" clearable="" placeholder="璇疯緭鍏ユ壒娆″彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="璁㈠崟鍙�">
+              <el-input v-model="queryParamsWmsRbLineTask.orderId" clearable="" placeholder="璇疯緭鍏ヨ鍗曞彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="鍖呰鍙�">
+              <el-input v-model="queryParamsWmsRbLineTask.packageCode" clearable="" placeholder="璇疯緭鍏ュ寘瑁呭彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="搴撲綅缂栫爜">
+              <el-input v-model="queryParamsWmsRbLineTask.placeCode" clearable="" placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟绫诲瀷">
+              <el-select clearable="" v-model="queryParamsWmsRbLineTask.rbTaskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                <el-option v-for="(item,index) in getEnumRbTaskTypeData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟绫诲瀷鍚嶇О">
+              <el-input v-model="queryParamsWmsRbLineTask.rbTaskTypeEnumName" clearable="" placeholder="璇疯緭鍏ヤ换鍔$被鍨嬪悕绉�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟鐘舵��">
+              <el-select clearable="" v-model="queryParamsWmsRbLineTask.taskStatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+                <el-option v-for="(item,index) in getEnumTaskStatusData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟鐘舵�佸悕绉�">
+              <el-input v-model="queryParamsWmsRbLineTask.taskStatusName" clearable="" placeholder="璇疯緭鍏ヤ换鍔$姸鎬佸悕绉�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟鎻忚堪">
+              <el-input v-model="queryParamsWmsRbLineTask.taskDescribe" clearable="" placeholder="璇疯緭鍏ヤ换鍔℃弿杩�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟娑堟伅">
+              <el-input v-model="queryParamsWmsRbLineTask.taskMsg" clearable="" placeholder="璇疯緭鍏ヤ换鍔℃秷鎭�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="涓嬪彂鏃堕棿">
+              <el-date-picker placeholder="璇烽�夋嫨涓嬪彂鏃堕棿" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsRbLineTask.issueTimeRange" />
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="浠诲姟瀹屾垚鏃堕棿">
+              <el-date-picker placeholder="璇烽�夋嫨浠诲姟瀹屾垚鏃堕棿" value-format="YYYY/MM/DD" type="daterange" v-model="queryParamsWmsRbLineTask.finishedTimeRange" />
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIWmsRbLineTask">
+            <el-form-item label="鏄惁鏍囪寮哄埗瀹屾垚">
+              <el-select clearable="" v-model="queryParamsWmsRbLineTask.isFlagFinish" placeholder="璇烽�夋嫨鏄惁鏍囪寮哄埗瀹屾垚">
+                <el-option v-for="(item,index) in getEnumIsFlagFinishData_Index" :key="index" :value="item.value" :label="`${item.describe}`" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb10">
+            <el-form-item>
+              <el-button-group style="display: flex; align-items: center;">
+                <el-button type="primary"  icon="ele-Search" @click="handleQueryWmsRbLineTask" v-auth="'wmsRbLineTask:page'" :disabled="disabled_btnWmsRbLineTask"> 鏌ヨ </el-button>
+                      <el-button icon="ele-Refresh" @click="resetWmsRbLineTask"> 閲嶇疆 </el-button>
+                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIWmsRbLineTask" v-if="!showAdvanceQueryUIWmsRbLineTask" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button>
+                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIWmsRbLineTask" v-if="showAdvanceQueryUIWmsRbLineTask" style="margin-left:5px;"> 闅愯棌 </el-button>
+                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWmsRbLineTask" v-auth="'wmsRbLineTask:add'"> 鏂板 </el-button>
+                <el-button type="primary" style="margin-left:5px;" icon="ele-Upload" @click="openImportExcelWmsRbLineTask"  v-auth="'wmsRbLineTask:importExcel'" > 瀵煎叆 </el-button>
+                <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelWmsRbLineTask"  v-auth="'wmsRbLineTask:exportExcel'" > 瀵煎嚭 </el-button>
+              </el-button-group>
+            </el-form-item>
+            
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
+      <el-table
+                ref="tableRefWmsRbLineTask"
+				:data="tableDataWmsRbLineTask"
+				style="width: 100%"
+				v-loading="loadingWmsRbLineTask"
+				tooltip-effect="light"
+                				row-key="id"
+                @sort-change="sortChangeWmsRbLineTask"
+				border="">
+        <el-table-column type="index" label="搴忓彿" width="55" align="center"/>
+        <el-table-column prop="taskNo" label="浠诲姟鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="taskName" label="浠诲姟鍚嶇О"  show-overflow-tooltip="" />
+        <el-table-column prop="upi" label="閮ㄤ欢鏉$爜"  show-overflow-tooltip="" />
+        <el-table-column prop="length" label="闀�"  show-overflow-tooltip="" />
+        <el-table-column prop="width" label="瀹�"  show-overflow-tooltip="" />
+        <el-table-column prop="thk" label="鍘�"  show-overflow-tooltip="" />
+        <el-table-column prop="planNo" label="鎵规鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="orderId" label="璁㈠崟鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="packageCode" label="鍖呰鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="placeCode" label="搴撲綅缂栫爜"  show-overflow-tooltip="" />
+          <el-table-column prop="rbTaskType" label="浠诲姟绫诲瀷"  show-overflow-tooltip="" >
+            <template #default="scope">
+              <el-tag>{{ getEnumDesc(scope.row.rbTaskType, getEnumRbTaskTypeData_Index)}}</el-tag>
+            </template>
+          </el-table-column>
+        <el-table-column prop="rbTaskTypeEnumName" label="浠诲姟绫诲瀷鍚嶇О"  show-overflow-tooltip="" />
+          <el-table-column prop="taskStatus" label="浠诲姟鐘舵��"  show-overflow-tooltip="" >
+            <template #default="scope">
+              <el-tag>{{ getEnumDesc(scope.row.taskStatus, getEnumTaskStatusData_Index)}}</el-tag>
+            </template>
+          </el-table-column>
+        <el-table-column prop="taskStatusName" label="浠诲姟鐘舵�佸悕绉�"  show-overflow-tooltip="" />
+        <el-table-column prop="taskDescribe" label="浠诲姟鎻忚堪"  show-overflow-tooltip="" />
+        <el-table-column prop="taskMsg" label="浠诲姟娑堟伅"  show-overflow-tooltip="" />
+         <el-table-column prop="issueTime" label="涓嬪彂鏃堕棿" width="80" :formatter="formatDate_T_Date"  show-overflow-tooltip="" />
+         <el-table-column prop="finishedTime" label="浠诲姟瀹屾垚鏃堕棿" width="80" :formatter="formatDate_T_Date"  show-overflow-tooltip="" />
+        <el-table-column prop="isFlagFinish" label="鏄惁鏍囪寮哄埗瀹屾垚"  show-overflow-tooltip="">
+          <template #default="scope">
+            <el-tag v-if="scope.row.isFlagFinish"> 鏄� </el-tag>
+            <el-tag type="danger" v-else> 鍚� </el-tag>
+            
+          </template>
+          
+        </el-table-column>
+         <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
+         <el-table-column prop="updateTime" label="淇敼鏃堕棿" width="130" :formatter="formatDate_T_Time"  show-overflow-tooltip="" />
+        <el-table-column prop="createUserName" label="鍒涘缓浜�"  show-overflow-tooltip="" />
+        <el-table-column prop="updateUserName" label="淇敼浜�"  show-overflow-tooltip="" />
+        <el-table-column label="鎿嶄綔" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wmsRbLineTask:update') || auth('wmsRbLineTask:delete')">
+          <template #default="scope">
+            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWmsRbLineTask(scope.row)" v-auth="'wmsRbLineTask:update'"> 缂栬緫 </el-button>
+            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWmsRbLineTask(scope.row)" v-auth="'wmsRbLineTask:delete'"> 鍒犻櫎 </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+				v-model:currentPage="tableParamsWmsRbLineTask.page"
+				v-model:page-size="tableParamsWmsRbLineTask.pageSize"
+				:total="tableParamsWmsRbLineTask.total"
+				:page-sizes="[10, 20, 50, 100, 200, 500]"
+				small=""
+				background=""
+				@size-change="handleSizeChangeWmsRbLineTask"
+				@current-change="handleCurrentChangeWmsRbLineTask"
+				layout="total, sizes, prev, pager, next, jumper"
+	/>
+      <printDialogWmsRbLineTask
+        ref="printDialogRefWmsRbLineTask"
+        :title="printWmsRbLineTaskTitle"
+        @reloadTable="handleQueryWmsRbLineTask" />
+      <editDialogWmsRbLineTask
+        ref="editDialogRefWmsRbLineTask"
+        :title="editWmsRbLineTaskTitle"
+        @reloadTable="handleQueryWmsRbLineTask"
+      />
+      <importExcelDialog
+        ref="importExcelDialogRefWmsRbLineTask"
+        :title="importExcelTitleWmsRbLineTask"
+        @parentUploadFun="handleImportExcelWmsRbLineTask"
+        @parentDownFun="handleDownExcelWmsRbLineTask"
+      />
+    </el-card>
+  </div>
+</template>
+
+<script lang="ts" setup="" name="wmsRbLineTask">
+  import { ref,onMounted } from "vue";
+  import { ElMessageBox, ElMessage } from "element-plus";
+  import { auth } from '/@/utils/authFunction';
+  import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
+  import { formatDate,formatDate_T_Date,formatDate_T_Time,defaultTimeRange } from '/@/utils/formatTime';
+  import importExcelDialog from '/@/components/importExcel/index.vue' //寮曞叆瀵煎叆缁勪欢
+  import { exportPageExcel } from '/@/utils/exportPageExcel' //寮曞叆瀵煎嚭鏂规硶
+
+
+  import printDialogWmsRbLineTask from '/@/views/system/print/component/hiprint/preview.vue'
+  import editDialogWmsRbLineTask from '/@/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue'
+  import { pageWmsRbLineTask, deleteWmsRbLineTask,importExcelWmsRbLineTask,downloadExcelTemplateWmsRbLineTask } from '/@/api/main/WmsTask/wmsRbLineTask';
+	import { getAPI } from '/@/utils/axios-utils';
+	import { SysEnumApi } from '/@/api-services/api';
+  import commonFunction from '/@/utils/commonFunction';
+
+  const getEnumRbTaskTypeData_Index = ref<any>([]);
+  const getEnumTaskStatusData_Index = ref<any>([]);
+  const getEnumIsFlagFinishData_Index = ref<any>([]);
+
+	const { getEnumDesc } = commonFunction();
+  
+  /***************************************************[鏈哄櫒浜轰换鍔¤〃鎿嶄綔]寮�濮�***************************************************/
+  const showAdvanceQueryUIWmsRbLineTask = ref(false);
+  const tableRefWmsRbLineTask = ref(null);
+  const printDialogRefWmsRbLineTask = ref();
+  const editDialogRefWmsRbLineTask = ref();
+  const loadingWmsRbLineTask = ref(false);
+  const disabled_btnWmsRbLineTask = ref(false);
+  const tableDataWmsRbLineTask = ref<any>([]);
+  const queryParamsWmsRbLineTask = ref<any>({});
+  const tableParamsWmsRbLineTask = ref({
+    page: 1,
+    pageSize: 10,
+    total: 0,
+  });
+
+  const printWmsRbLineTaskTitle = ref("");
+  const editWmsRbLineTaskTitle = ref("");
+
+  // 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬�
+  const changeAdvanceQueryUIWmsRbLineTask = () => {
+    showAdvanceQueryUIWmsRbLineTask.value = !showAdvanceQueryUIWmsRbLineTask.value;
+  }
+
+  // 鏌ヨ鏈哄櫒浜轰换鍔¤〃
+  const handleQueryWmsRbLineTask = async () => {
+    loadingWmsRbLineTask.value = true;
+    disabled_btnWmsRbLineTask.value = true;
+    var res = await pageWmsRbLineTask(Object.assign(queryParamsWmsRbLineTask.value, tableParamsWmsRbLineTask.value));
+    if(res.data.type=="success"){
+      tableDataWmsRbLineTask.value = res.data.result?.items ?? [];
+      tableParamsWmsRbLineTask.value.total = res.data.result?.total;
+    }
+    loadingWmsRbLineTask.value = false;
+    disabled_btnWmsRbLineTask.value = false;
+  };
+
+  // 閲嶇疆鏈哄櫒浜轰换鍔¤〃鏌ヨ
+  const resetWmsRbLineTask = async () => {
+    queryParamsWmsRbLineTask.value = {}
+  };
+
+  // 鏈哄櫒浜轰换鍔¤〃鍒楁帓搴�
+  const sortChangeWmsRbLineTask = async (column: any) => {
+	queryParamsWmsRbLineTask.value.field = column.prop;
+	queryParamsWmsRbLineTask.value.order = column.order;
+	await handleQueryWmsRbLineTask();
+  };
+
+  // 鎵撳紑鏂板鏈哄櫒浜轰换鍔¤〃椤甸潰
+  const openAddWmsRbLineTask = () => {
+    editWmsRbLineTaskTitle.value = '娣诲姞鏈哄櫒浜轰换鍔¤〃';
+    editDialogRefWmsRbLineTask.value.openDialog(1,{});
+  };
+
+  // 鎵撳紑鎵撳嵃鏈哄櫒浜轰换鍔¤〃椤甸潰
+  const openPrintWmsRbLineTask = async (row: any) => {
+    printWmsRbLineTaskTitle.value = '鎵撳嵃鏈哄櫒浜轰换鍔¤〃';
+  }
+  
+  // 鎵撳紑缂栬緫鏈哄櫒浜轰换鍔¤〃椤甸潰
+  const openEditWmsRbLineTask = (row: any) => {
+    editWmsRbLineTaskTitle.value = '缂栬緫鏈哄櫒浜轰换鍔¤〃';
+    editDialogRefWmsRbLineTask.value.openDialog(2,row);
+  };
+
+  // 鍒犻櫎鏈哄櫒浜轰换鍔¤〃
+  const delWmsRbLineTask = (row: any) => {
+    ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+  .then(async () => {
+    loadingWmsRbLineTask.value = true;
+    var ret = await deleteWmsRbLineTask(row);
+    if(ret.data.type=="success"){
+        ElMessage.success("鍒犻櫎鎴愬姛");
+	}
+    loadingWmsRbLineTask.value = false;
+    handleQueryWmsRbLineTask();
+  })
+  .catch(() => {});
+  };
+
+  // 鏀瑰彉鏈哄櫒浜轰换鍔¤〃椤甸潰瀹归噺
+  const handleSizeChangeWmsRbLineTask = (val: number) => {
+    tableParamsWmsRbLineTask.value.pageSize = val;
+    handleQueryWmsRbLineTask();
+  };
+
+  // 鏀瑰彉鏈哄櫒浜轰换鍔¤〃椤电爜搴忓彿
+  const handleCurrentChangeWmsRbLineTask = (val: number) => {
+    tableParamsWmsRbLineTask.value.page = val;
+    handleQueryWmsRbLineTask();
+  };
+
+/***************************************************[鏈哄櫒浜轰换鍔¤〃鎿嶄綔]缁撴潫***************************************************/
+/***************************************************[鏈哄櫒浜轰换鍔¤〃瀵煎叆]寮�濮�***************************************************/
+const importExcelTitleWmsRbLineTask = ref("");
+const importExcelDialogRefWmsRbLineTask = ref();
+//鎵撳紑瀵煎叆鐣岄潰
+const openImportExcelWmsRbLineTask = () => {
+    importExcelTitleWmsRbLineTask.value = '瀵煎叆鏈哄櫒浜轰换鍔¤〃';
+    importExcelDialogRefWmsRbLineTask.value.openDialog({});
+};
+//瀵煎叆鏁版嵁
+const handleImportExcelWmsRbLineTask = async (formData:Blob) => {
+   var result = await importExcelWmsRbLineTask(formData);
+   importExcelDialogRefWmsRbLineTask.value.callBackUploadFun(result.data);//鍥炶皟瀵煎叆瀛愰〉闈㈢殑鏂规硶
+   if(result.data.type=="success"){
+    handleQueryWmsRbLineTask();
+   }
+};
+//涓嬭浇瀵煎叆妯℃澘
+const handleDownExcelWmsRbLineTask = async () => {
+   var result = await downloadExcelTemplateWmsRbLineTask();
+   importExcelDialogRefWmsRbLineTask.value.callBackDownFun(result);//鍥炶皟瀵煎叆瀛愰〉闈㈢殑鏂规硶
+};
+/***************************************************[鏈哄櫒浜轰换鍔¤〃瀵煎叆]缁撴潫***************************************************/
+/***************************************************[鏈哄櫒浜轰换鍔¤〃瀵煎嚭]寮�濮�***************************************************/
+//瀹氫箟褰撳墠椤甸潰鐨勬柟娉曠粍
+const functionMapWmsRbLineTask = {
+      getEnumRbTaskTypeData_Index,
+      getEnumTaskStatusData_Index,
+      getEnumIsFlagFinishData_Index,
+      formatDate_T_Date,
+      formatDate_T_Time
+};
+//鐐瑰嚮瀵煎嚭鎸夐挳
+const handleExportExcelWmsRbLineTask = async (formData:Blob) => {
+    loadingWmsRbLineTask.value = true;
+    disabled_btnWmsRbLineTask.value = true;
+    var new_tableParamsWmsRbLineTask=JSON.parse(JSON.stringify(tableParamsWmsRbLineTask.value));
+    new_tableParamsWmsRbLineTask.page = 1;
+    new_tableParamsWmsRbLineTask.pageSize = 100000;
+    var res = await pageWmsRbLineTask(Object.assign(queryParamsWmsRbLineTask.value, new_tableParamsWmsRbLineTask));
+    if(res.data.type=="success"){
+      exportExcelWmsRbLineTask(res.data.result?.items ?? []);
+    }
+    loadingWmsRbLineTask.value = false;
+    disabled_btnWmsRbLineTask.value = false;
+};
+//瀵煎嚭
+const exportExcelWmsRbLineTask  = async (exportDataList:Array) => {
+  exportPageExcel(exportDataList, tableRefWmsRbLineTask,"鏈哄櫒浜轰换鍔¤〃",functionMapWmsRbLineTask);
+};
+/***************************************************[鏈哄櫒浜轰换鍔¤〃瀵煎嚭]缁撴潫***************************************************/
+  // 鏈哄櫒浜轰换鍔¤〃椤甸潰鍔犺浇鏃�
+  onMounted(async () => {
+    getEnumRbTaskTypeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('RbTaskTypeEnum')).data.result ?? [];
+    getEnumTaskStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TaskStatusEnum')).data.result ?? [];
+    getEnumIsFlagFinishData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('TrueFalseEnum')).data.result ?? [];
+  });
+
+  handleQueryWmsRbLineTask();
+</script>
+<style scoped>
+:deep(.el-input),
+:deep(.el-select),
+:deep(.el-input-number) {
+	width: 100%;
+}
+</style>
+
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs
new file mode 100644
index 0000000..727817e
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs
@@ -0,0 +1,369 @@
+锘縰sing Admin.NET.Core;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application;
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃鍩虹杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsRbLineTaskBaseInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        public virtual string TaskName { get; set; }
+        
+        /// <summary>
+        /// 閮ㄤ欢鏉$爜
+        /// </summary>
+        public virtual string UPI { get; set; }
+        
+        /// <summary>
+        /// 闀�
+        /// </summary>
+        public virtual float Length { get; set; }
+        
+        /// <summary>
+        /// 瀹�
+        /// </summary>
+        public virtual float Width { get; set; }
+        
+        /// <summary>
+        /// 鍘�
+        /// </summary>
+        public virtual float Thk { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public virtual string PlanNo { get; set; }
+        
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        public virtual string OrderId { get; set; }
+        
+        /// <summary>
+        /// 鍖呰鍙�
+        /// </summary>
+        public virtual string PackageCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷鍚嶇О
+        /// </summary>
+        public virtual string RbTaskTypeEnumName { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵�佸悕绉�
+        /// </summary>
+        public virtual string TaskStatusName { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鎻忚堪
+        /// </summary>
+        public virtual string TaskDescribe { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟娑堟伅
+        /// </summary>
+        public virtual string TaskMsg { get; set; }
+        
+        /// <summary>
+        /// 涓嬪彂鏃堕棿
+        /// </summary>
+        public virtual DateTime? IssueTime { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟瀹屾垚鏃堕棿
+        /// </summary>
+        public virtual DateTime? FinishedTime { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鏍囪寮哄埗瀹屾垚
+        /// </summary>
+        public virtual bool IsFlagFinish { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTime? CreateTime { get; set; }
+        
+        /// <summary>
+        /// 淇敼鏃堕棿
+        /// </summary>
+        public virtual DateTime? UpdateTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜篒d
+        /// </summary>
+        public virtual long? CreateUserId { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public virtual string CreateUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼浜篒d
+        /// </summary>
+        public virtual long? UpdateUserId { get; set; }
+        
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        public virtual string UpdateUserName { get; set; }
+        
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        public virtual bool IsDelete { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃鍒嗛〉鏌ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsRbLineTaskInput : BasePageInput
+    {
+        /// <summary>
+        /// 鍏抽敭瀛楁煡璇�
+        /// </summary>
+        public string? SearchKey { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string? TaskNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        public string? TaskName { get; set; }
+        
+        /// <summary>
+        /// 閮ㄤ欢鏉$爜
+        /// </summary>
+        public string? UPI { get; set; }
+        
+        /// <summary>
+        /// 闀�
+        /// </summary>
+        public float? Length { get; set; }
+        
+        /// <summary>
+        /// 瀹�
+        /// </summary>
+        public float? Width { get; set; }
+        
+        /// <summary>
+        /// 鍘�
+        /// </summary>
+        public float? Thk { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string? PlanNo { get; set; }
+        
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        public string? OrderId { get; set; }
+        
+        /// <summary>
+        /// 鍖呰鍙�
+        /// </summary>
+        public string? PackageCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string? PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷鍚嶇О
+        /// </summary>
+        public string? RbTaskTypeEnumName { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public Admin.NET.Application.TaskStatusEnum? TaskStatus { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵�佸悕绉�
+        /// </summary>
+        public string? TaskStatusName { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鎻忚堪
+        /// </summary>
+        public string? TaskDescribe { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟娑堟伅
+        /// </summary>
+        public string? TaskMsg { get; set; }
+        
+        /// <summary>
+        /// 涓嬪彂鏃堕棿
+        /// </summary>
+        public DateTime? IssueTime { get; set; }
+        
+        /// <summary>
+         /// 涓嬪彂鏃堕棿鑼冨洿
+         /// </summary>
+         public List<DateTime?> IssueTimeRange { get; set; } 
+        /// <summary>
+        /// 浠诲姟瀹屾垚鏃堕棿
+        /// </summary>
+        public DateTime? FinishedTime { get; set; }
+        
+        /// <summary>
+         /// 浠诲姟瀹屾垚鏃堕棿鑼冨洿
+         /// </summary>
+         public List<DateTime?> FinishedTimeRange { get; set; } 
+        /// <summary>
+        /// 鏄惁鏍囪寮哄埗瀹屾垚
+        /// </summary>
+        public bool? IsFlagFinish { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃澧炲姞杈撳叆鍙傛暟
+    /// </summary>
+    public class AddWmsRbLineTaskInput : WmsRbLineTaskBaseInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [Required(ErrorMessage = "浠诲姟鍙蜂笉鑳戒负绌�")]
+        public override string TaskNo { get; set; }
+        
+        /// <summary>
+        /// 閮ㄤ欢鏉$爜
+        /// </summary>
+        [Required(ErrorMessage = "閮ㄤ欢鏉$爜涓嶈兘涓虹┖")]
+        public override string UPI { get; set; }
+        
+        /// <summary>
+        /// 闀�
+        /// </summary>
+        [Required(ErrorMessage = "闀夸笉鑳戒负绌�")]
+        public override float Length { get; set; }
+        
+        /// <summary>
+        /// 瀹�
+        /// </summary>
+        [Required(ErrorMessage = "瀹戒笉鑳戒负绌�")]
+        public override float Width { get; set; }
+        
+        /// <summary>
+        /// 鍘�
+        /// </summary>
+        [Required(ErrorMessage = "鍘氫笉鑳戒负绌�")]
+        public override float Thk { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵规鍙蜂笉鑳戒负绌�")]
+        public override string PlanNo { get; set; }
+        
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        [Required(ErrorMessage = "璁㈠崟鍙蜂笉鑳戒负绌�")]
+        public override string OrderId { get; set; }
+        
+        /// <summary>
+        /// 鍖呰鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鍖呰鍙蜂笉鑳戒负绌�")]
+        public override string PackageCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "搴撲綅缂栫爜涓嶈兘涓虹┖")]
+        public override string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        [Required(ErrorMessage = "浠诲姟鐘舵�佷笉鑳戒负绌�")]
+        public override Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵�佸悕绉�
+        /// </summary>
+        [Required(ErrorMessage = "浠诲姟鐘舵�佸悕绉颁笉鑳戒负绌�")]
+        public override string TaskStatusName { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鏍囪寮哄埗瀹屾垚
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鏍囪寮哄埗瀹屾垚涓嶈兘涓虹┖")]
+        public override bool IsFlagFinish { get; set; }
+        
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        [Required(ErrorMessage = "杞垹闄や笉鑳戒负绌�")]
+        public override bool IsDelete { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃鍒犻櫎杈撳叆鍙傛暟
+    /// </summary>
+    public class DeleteWmsRbLineTaskInput : BaseIdInput
+    {
+    }
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃鏇存柊杈撳叆鍙傛暟
+    /// </summary>
+    public class UpdateWmsRbLineTaskInput : AddWmsRbLineTaskInput
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鏈哄櫒浜轰换鍔¤〃涓婚敭鏌ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class QueryByIdWmsRbLineTaskInput : DeleteWmsRbLineTaskInput
+    {
+
+    }
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs
new file mode 100644
index 0000000..b0771a4
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs
@@ -0,0 +1,145 @@
+锘縩amespace Admin.NET.Application;
+
+/// <summary>
+/// 鏈哄櫒浜轰换鍔¤〃杈撳嚭鍙傛暟
+/// </summary>
+public class WmsRbLineTaskOutput
+{
+    /// <summary>
+    /// 涓婚敭Id
+    /// </summary>
+    public long? Id { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+    public string TaskNo { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鍚嶇О
+    /// </summary>
+    public string TaskName { get; set; }
+    
+    /// <summary>
+    /// 閮ㄤ欢鏉$爜
+    /// </summary>
+    public string UPI { get; set; }
+    
+    /// <summary>
+    /// 闀�
+    /// </summary>
+    public float Length { get; set; }
+    
+    /// <summary>
+    /// 瀹�
+    /// </summary>
+    public float Width { get; set; }
+    
+    /// <summary>
+    /// 鍘�
+    /// </summary>
+    public float Thk { get; set; }
+    
+    /// <summary>
+    /// 鎵规鍙�
+    /// </summary>
+    public string PlanNo { get; set; }
+    
+    /// <summary>
+    /// 璁㈠崟鍙�
+    /// </summary>
+    public string OrderId { get; set; }
+    
+    /// <summary>
+    /// 鍖呰鍙�
+    /// </summary>
+    public string PackageCode { get; set; }
+    
+    /// <summary>
+    /// 搴撲綅缂栫爜
+    /// </summary>
+    public string PlaceCode { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟绫诲瀷
+    /// </summary>
+    public Admin.NET.Application.RbTaskTypeEnum? RbTaskType { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟绫诲瀷鍚嶇О
+    /// </summary>
+    public string RbTaskTypeEnumName { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鐘舵��
+    /// </summary>
+    public Admin.NET.Application.TaskStatusEnum TaskStatus { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鐘舵�佸悕绉�
+    /// </summary>
+    public string TaskStatusName { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鎻忚堪
+    /// </summary>
+    public string TaskDescribe { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟娑堟伅
+    /// </summary>
+    public string TaskMsg { get; set; }
+    
+    /// <summary>
+    /// 涓嬪彂鏃堕棿
+    /// </summary>
+    public DateTime? IssueTime { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟瀹屾垚鏃堕棿
+    /// </summary>
+    public DateTime? FinishedTime { get; set; }
+    
+    /// <summary>
+    /// 鏄惁鏍囪寮哄埗瀹屾垚
+    /// </summary>
+    public bool IsFlagFinish { get; set; }
+    
+    /// <summary>
+    /// 鍒涘缓鏃堕棿
+    /// </summary>
+    public DateTime? CreateTime { get; set; }
+    
+    /// <summary>
+    /// 淇敼鏃堕棿
+    /// </summary>
+    public DateTime? UpdateTime { get; set; }
+    
+    /// <summary>
+    /// 鍒涘缓浜篒d
+    /// </summary>
+    public long? CreateUserId { get; set; }
+    
+    /// <summary>
+    /// 鍒涘缓浜�
+    /// </summary>
+    public string CreateUserName { get; set; }
+    
+    /// <summary>
+    /// 淇敼浜篒d
+    /// </summary>
+    public long? UpdateUserId { get; set; }
+    
+    /// <summary>
+    /// 淇敼浜�
+    /// </summary>
+    public string UpdateUserName { get; set; }
+    
+    /// <summary>
+    /// 杞垹闄�
+    /// </summary>
+    public bool IsDelete { get; set; }
+    
+    }
+ 
+
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
new file mode 100644
index 0000000..a007bc2
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
@@ -0,0 +1,511 @@
+锘縰sing Admin.NET.Core.Service;
+using Admin.NET.Application.Entity;
+using Microsoft.AspNetCore.Http;
+using System.Data;
+using System.Web;
+using System.Text;
+namespace Admin.NET.Application;
+/// <summary>
+/// 鏈哄櫒浜轰换鍔¤〃鏈嶅姟
+/// </summary>
+[ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
+public class WmsRbLineTaskService : IDynamicApiController, ITransient
+{
+    private readonly SqlSugarRepository<WmsRbLineTask> _rep;
+    public WmsRbLineTaskService(SqlSugarRepository<WmsRbLineTask> rep)
+    {
+        _rep = rep;
+    }
+
+    /// <summary>
+    /// 鍒嗛〉鏌ヨ鏈哄櫒浜轰换鍔¤〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Page")]
+    [Description("WmsRbLineTask/Page")]
+    public async Task<SqlSugarPagedList<WmsRbLineTaskOutput>> Page(WmsRbLineTaskInput input)
+    {
+        var query = CommonPageFilter(input);
+        return await query.OrderBuilder(input, "", "Id").ToPagedListAsync(input.Page, input.PageSize);
+    }
+
+    /// <summary>
+    /// 涓嶅垎椤垫煡璇㈡満鍣ㄤ汉浠诲姟琛�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "List")]
+    [Description("WmsRbLineTask/List")]
+    public async Task<List<WmsRbLineTaskOutput>> List([FromQuery] WmsRbLineTaskInput input)
+    {
+        var query = CommonPageFilter(input);
+        return await query.OrderBuilder(input, "", "Id").Select<WmsRbLineTaskOutput>().ToListAsync();
+    }
+
+    /// <summary>
+    /// 澧炲姞鏈哄櫒浜轰换鍔¤〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Add")]
+    [Description("WmsRbLineTask/Add")]
+    public async Task<long> Add(AddWmsRbLineTaskInput input)
+    {
+        var entity = input.Adapt<WmsRbLineTask>();
+
+        //閲嶅鎬ч獙璇�
+        await CheckExist(entity);
+
+        await _rep.InsertAsync(entity);
+        return entity.Id;
+    }
+
+    /// <summary>
+    /// 鍒犻櫎鏈哄櫒浜轰换鍔¤〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Delete")]
+    [Description("WmsRbLineTask/Delete")]
+    public async Task Delete(DeleteWmsRbLineTaskInput input)
+    {
+        var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        //await _rep.FakeDeleteAsync(entity);   //鍋囧垹闄�
+        await _rep.DeleteAsync(entity);   //鐪熷垹闄�
+    }
+
+    /// <summary>
+    /// 鏇存柊鏈哄櫒浜轰换鍔¤〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Update")]
+    [Description("WmsRbLineTask/Update")]
+    public async Task Update(UpdateWmsRbLineTaskInput input)
+    {
+        var entity = input.Adapt<WmsRbLineTask>();
+
+        //閲嶅鎬ч獙璇�
+        await CheckExist(entity, true);
+
+        await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+    }
+
+    /// <summary>
+    /// 鑾峰彇鏈哄櫒浜轰换鍔¤〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "Detail")]
+    [Description("WmsRbLineTask/Detail")]
+    public async Task<WmsRbLineTask> Detail([FromQuery] QueryByIdWmsRbLineTaskInput input)
+    {
+        return await _rep.GetFirstAsync(u => u.Id == input.Id);
+    }
+
+
+
+
+
+    #region 瀵煎叆
+
+    /// <summary>
+    /// Excel妯℃澘瀵煎叆鏈哄櫒浜轰换鍔¤〃鍔熻兘
+    /// </summary>
+    /// <param name="file">Excel妯℃澘鏂囦欢</param>
+    /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "ImportExcel")]
+    [Description("WmsRbLineTask/ImportExcel")]
+    public async Task<int> ImportExcelAsync(IFormFile file)
+    {
+        int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+        int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+        DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+        var addList = await CommonImport(importDataTable, _DataStartLine);
+        await _rep.InsertRangeAsync(addList);
+        return addList.Count;
+    }
+
+    /// <summary>
+    ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+    /// </summary>
+    /// <param name="dataTable"></param>
+    /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+    /// <returns></returns>
+    private async Task<List<WmsRbLineTask>> CommonImport(DataTable dataTable, int dataStartLine)
+    {
+        var details = new List<WmsRbLineTask>();
+        int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+        foreach (System.Data.DataRow row in dataTable.Rows)
+        {
+            index++;
+            //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+            var addItem = new WmsRbLineTask();
+            #region 瀹氫箟鍙橀噺
+            var _TaskNo = "";//浠诲姟鍙�
+            var _TaskName = "";//浠诲姟鍚嶇О
+            var _UPI = "";//閮ㄤ欢鏉$爜
+            var _Length = "";//闀�
+            var _Width = "";//瀹�
+            var _Thk = "";//鍘�
+            var _PlanNo = "";//鎵规鍙�
+            var _OrderId = "";//璁㈠崟鍙�
+            var _PackageCode = "";//鍖呰鍙�
+            var _PlaceCode = "";//搴撲綅缂栫爜
+            var _RbTaskType = "";//浠诲姟绫诲瀷
+            var _RbTaskTypeEnumName = "";//浠诲姟绫诲瀷鍚嶇О
+            var _TaskStatus = "";//浠诲姟鐘舵��
+            var _TaskStatusName = "";//浠诲姟鐘舵�佸悕绉�
+            var _TaskDescribe = "";//浠诲姟鎻忚堪
+            var _TaskMsg = "";//浠诲姟娑堟伅
+            var _IssueTime = "";//涓嬪彂鏃堕棿
+            var _FinishedTime = "";//浠诲姟瀹屾垚鏃堕棿
+            var _IsFlagFinish = "";//鏄惁鏍囪寮哄埗瀹屾垚
+            #endregion
+
+
+            #region 鍙栧��
+            _TaskNo = row["浠诲姟鍙�"]?.ToString();
+            _TaskName = row["浠诲姟鍚嶇О"]?.ToString();
+            _UPI = row["閮ㄤ欢鏉$爜"]?.ToString();
+            _Length = row["闀�"]?.ToString();
+            _Width = row["瀹�"]?.ToString();
+            _Thk = row["鍘�"]?.ToString();
+            _PlanNo = row["鎵规鍙�"]?.ToString();
+            _OrderId = row["璁㈠崟鍙�"]?.ToString();
+            _PackageCode = row["鍖呰鍙�"]?.ToString();
+            _PlaceCode = row["搴撲綅缂栫爜"]?.ToString();
+            _RbTaskType = row["浠诲姟绫诲瀷"]?.ToString();
+            _RbTaskTypeEnumName = row["浠诲姟绫诲瀷鍚嶇О"]?.ToString();
+            _TaskStatus = row["浠诲姟鐘舵��"]?.ToString();
+            _TaskStatusName = row["浠诲姟鐘舵�佸悕绉�"]?.ToString();
+            _TaskDescribe = row["浠诲姟鎻忚堪"]?.ToString();
+            _TaskMsg = row["浠诲姟娑堟伅"]?.ToString();
+            _IssueTime = row["涓嬪彂鏃堕棿"]?.ToString();
+            _FinishedTime = row["浠诲姟瀹屾垚鏃堕棿"]?.ToString();
+            _IsFlagFinish = row["鏄惁鏍囪寮哄埗瀹屾垚"]?.ToString();
+            #endregion
+
+
+            #region 楠岃瘉
+
+            if (string.IsNullOrEmpty(_TaskNo))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾浠诲姟鍙穄{_TaskNo}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_TaskNo))
+            {
+                addItem.TaskNo = (string)(_TaskNo.Trim());
+            }
+            if (!string.IsNullOrEmpty(_TaskName))
+            {
+                addItem.TaskName = (string)(_TaskName.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_UPI))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾閮ㄤ欢鏉$爜]{_UPI}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_UPI))
+            {
+                addItem.UPI = (string)(_UPI.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_Length))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾闀縘{_Length}涓嶈兘涓虹┖锛�");
+            }
+
+            //if(!string.IsNullOrEmpty(_Length))
+            //{
+            //      addItem.Length = (float)(_Length.Trim());
+            // }
+
+            //if (string.IsNullOrEmpty(_Width))
+            //{
+            //  throw Oops.Oh($"绗瑊index}琛孾瀹絔{_Width}涓嶈兘涓虹┖锛�");
+            //}
+
+            //if(!string.IsNullOrEmpty(_Width))
+            //{
+            //      addItem.Width = (float)(_Width.Trim());
+            // }
+
+            if (string.IsNullOrEmpty(_Thk))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾鍘歖{_Thk}涓嶈兘涓虹┖锛�");
+            }
+
+            //if(!string.IsNullOrEmpty(_Thk))
+            //{
+            //      addItem.Thk = (float)(_Thk.Trim());
+            // }
+
+            if (string.IsNullOrEmpty(_PlanNo))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾鎵规鍙穄{_PlanNo}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_PlanNo))
+            {
+                addItem.PlanNo = (string)(_PlanNo.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_OrderId))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾璁㈠崟鍙穄{_OrderId}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_OrderId))
+            {
+                addItem.OrderId = (string)(_OrderId.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_PackageCode))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾鍖呰鍙穄{_PackageCode}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_PackageCode))
+            {
+                addItem.PackageCode = (string)(_PackageCode.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_PlaceCode))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾搴撲綅缂栫爜]{_PlaceCode}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_PlaceCode))
+            {
+                addItem.PlaceCode = (string)(_PlaceCode.Trim());
+            }
+            if (!string.IsNullOrEmpty(_RbTaskType))
+            {
+                Admin.NET.Application.RbTaskTypeEnum enumRbTaskType = default(Admin.NET.Application.RbTaskTypeEnum);
+
+                if (!Enum.TryParse<Admin.NET.Application.RbTaskTypeEnum>(_RbTaskType, out enumRbTaskType) && !string.IsNullOrEmpty(_RbTaskType))
+                {
+                    throw Oops.Oh($"绗瑊index}琛孾浠诲姟绫诲瀷]{_RbTaskType}鍊间笉姝g‘锛�");
+                }
+                else
+                {
+                    addItem.RbTaskType = enumRbTaskType;
+                }
+
+            }
+            if (!string.IsNullOrEmpty(_RbTaskTypeEnumName))
+            {
+                addItem.RbTaskTypeEnumName = (string)(_RbTaskTypeEnumName.Trim());
+            }
+
+            if (string.IsNullOrEmpty(_TaskStatus))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾浠诲姟鐘舵�乚{_TaskStatus}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_TaskStatus))
+            {
+                Admin.NET.Application.TaskStatusEnum enumTaskStatus = default(Admin.NET.Application.TaskStatusEnum);
+
+                if (!Enum.TryParse<Admin.NET.Application.TaskStatusEnum>(_TaskStatus, out enumTaskStatus) && !string.IsNullOrEmpty(_TaskStatus))
+                {
+                    throw Oops.Oh($"绗瑊index}琛孾浠诲姟鐘舵�乚{_TaskStatus}鍊间笉姝g‘锛�");
+                }
+                else
+                {
+                    addItem.TaskStatus = enumTaskStatus;
+                }
+
+            }
+
+            if (string.IsNullOrEmpty(_TaskStatusName))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾浠诲姟鐘舵�佸悕绉癩{_TaskStatusName}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_TaskStatusName))
+            {
+                addItem.TaskStatusName = (string)(_TaskStatusName.Trim());
+            }
+            if (!string.IsNullOrEmpty(_TaskDescribe))
+            {
+                addItem.TaskDescribe = (string)(_TaskDescribe.Trim());
+            }
+            if (!string.IsNullOrEmpty(_TaskMsg))
+            {
+                addItem.TaskMsg = (string)(_TaskMsg.Trim());
+            }
+            if (!string.IsNullOrEmpty(_IssueTime))
+            {
+                addItem.IssueTime = Convert.ToDateTime(Convert.ToDateTime(_IssueTime.Trim()).ToShortDateString());
+            }
+            if (!string.IsNullOrEmpty(_FinishedTime))
+            {
+                addItem.FinishedTime = Convert.ToDateTime(Convert.ToDateTime(_FinishedTime.Trim()).ToShortDateString());
+            }
+
+            if (string.IsNullOrEmpty(_IsFlagFinish))
+            {
+                throw Oops.Oh($"绗瑊index}琛孾鏄惁鏍囪寮哄埗瀹屾垚]{_IsFlagFinish}涓嶈兘涓虹┖锛�");
+            }
+
+            if (!string.IsNullOrEmpty(_IsFlagFinish))
+            {
+                if (!_IsFlagFinish.Equals("鏄�") && !_IsFlagFinish.Equals("鍚�"))
+                {
+                    throw Oops.Oh($"绗瑊index}琛孾鏄惁鏍囪寮哄埗瀹屾垚]{_IsFlagFinish}鍊间笉姝g‘锛�");
+                }
+                else
+                {
+                    bool outIsFlagFinish = _IsFlagFinish.Equals("鏄�") ? true : false;
+                    addItem.IsFlagFinish = outIsFlagFinish;
+                }
+            }
+
+            #endregion
+
+
+            details.Add(addItem);
+        }
+        //楠岄噸
+        await CheckExisitForImport(details);
+        return details;
+    }
+
+    /// <summary>
+    /// 鏍规嵁鐗堟湰涓嬭浇鏈哄櫒浜轰换鍔¤〃鐨凟xcel瀵煎叆妯℃澘
+    /// </summary>
+    /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "DownloadExcelTemplate")]
+    [Description("WmsRbLineTask/DownloadExcelTemplate")]
+    public IActionResult DownloadExcelTemplate()
+    {
+        string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\鏈哄櫒浜轰换鍔¤〃{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+        var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鏈哄櫒浜轰换鍔¤〃).xlsx", Encoding.GetEncoding("UTF-8"));
+        return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+    }
+
+    #endregion
+
+    #region 绉佹湁鏂规硶
+
+    /// <summary>
+    /// 鍏叡鏌ヨ鏈哄櫒浜轰换鍔¤〃鏉′欢
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    private ISugarQueryable<WmsRbLineTaskOutput> CommonPageFilter(WmsRbLineTaskInput input)
+    {
+        var query = _rep.AsQueryable()
+            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
+                u.TaskNo.Contains(input.SearchKey.Trim())
+                || u.TaskName.Contains(input.SearchKey.Trim())
+                || u.UPI.Contains(input.SearchKey.Trim())
+                || u.PlanNo.Contains(input.SearchKey.Trim())
+                || u.OrderId.Contains(input.SearchKey.Trim())
+                || u.PackageCode.Contains(input.SearchKey.Trim())
+                || u.PlaceCode.Contains(input.SearchKey.Trim())
+                || u.RbTaskTypeEnumName.Contains(input.SearchKey.Trim())
+                || u.TaskStatusName.Contains(input.SearchKey.Trim())
+                || u.TaskDescribe.Contains(input.SearchKey.Trim())
+                || u.TaskMsg.Contains(input.SearchKey.Trim())
+                || u.CreateUserName.Contains(input.SearchKey.Trim())
+                || u.UpdateUserName.Contains(input.SearchKey.Trim())
+            )
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskName), u => u.TaskName.Contains(input.TaskName.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.UPI), u => u.UPI.Contains(input.UPI.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.PlanNo), u => u.PlanNo.Contains(input.PlanNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.OrderId), u => u.OrderId.Contains(input.OrderId.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.PlaceCode), u => u.PlaceCode.Contains(input.PlaceCode.Trim()))
+            .WhereIF(input.RbTaskType.HasValue, u => u.RbTaskType == input.RbTaskType)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.RbTaskTypeEnumName), u => u.RbTaskTypeEnumName.Contains(input.RbTaskTypeEnumName.Trim()))
+            .WhereIF(input.TaskStatus.HasValue, u => u.TaskStatus == input.TaskStatus)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskStatusName), u => u.TaskStatusName.Contains(input.TaskStatusName.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskDescribe), u => u.TaskDescribe.Contains(input.TaskDescribe.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskMsg), u => u.TaskMsg.Contains(input.TaskMsg.Trim()))
+            .WhereIF(input.IsFlagFinish.HasValue, u => u.IsFlagFinish == input.IsFlagFinish)
+            .Select<WmsRbLineTaskOutput>();
+        if (input.IssueTimeRange != null && input.IssueTimeRange.Count > 0)
+        {
+            DateTime? start = input.IssueTimeRange[0].Value.AddDays(-1);
+            query = query.WhereIF(start.HasValue, u => u.IssueTime > start);
+            if (input.IssueTimeRange.Count > 1 && input.IssueTimeRange[1].HasValue)
+            {
+                var end = input.IssueTimeRange[1].Value.AddDays(1);
+                query = query.Where(u => u.IssueTime < end);
+            }
+        }
+        if (input.FinishedTimeRange != null && input.FinishedTimeRange.Count > 0)
+        {
+            DateTime? start = input.FinishedTimeRange[0].Value.AddDays(-1);
+            query = query.WhereIF(start.HasValue, u => u.FinishedTime > start);
+            if (input.FinishedTimeRange.Count > 1 && input.FinishedTimeRange[1].HasValue)
+            {
+                var end = input.FinishedTimeRange[1].Value.AddDays(1);
+                query = query.Where(u => u.FinishedTime < end);
+            }
+        }
+        return query;
+    }
+
+    /// <summary>
+    /// 閲嶅鎬ч獙璇�
+    /// </summary>
+    /// <param name="input">楠岃瘉瀵硅薄</param>
+    /// <param name="isEdit">鏄惁鏄紪杈�</param>
+    /// <returns></returns>
+    private async Task CheckExist(WmsRbLineTask input, bool isEdit = false)
+    {
+
+
+
+        //娌℃湁閰嶇疆缁勫悎鏍¢獙锛屼笉闇�瑕侀獙閲�
+
+
+        //娌℃湁閰嶇疆鍗曠嫭鏍¢獙锛屼笉闇�瑕侀獙閲�
+    }
+
+    /// <summary>
+    /// 鏍规嵁缁勫悎鏍¢獙鍜屽崟鐙牎楠岄獙璇佹暟鎹槸鍚﹀凡瀛樺湪-瀵煎叆鏃堕獙璇�
+    /// </summary>
+    /// <param name="inputs"></param>
+    /// <returns></returns>
+    private async Task CheckExisitForImport(List<WmsRbLineTask> inputs)
+    {
+        if (inputs?.Count <= 0)
+        {
+            throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+        }
+        //鏍规嵁缁勫悎鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+
+
+
+
+
+
+
+
+        //鏍规嵁鍗曠嫭鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+
+
+
+    }
+    #endregion
+
+}
+
diff --git "a/LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/\346\234\272\345\231\250\344\272\272\344\273\273\345\212\241\350\241\250\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/\346\234\272\345\231\250\344\272\272\344\273\273\345\212\241\350\241\250\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
new file mode 100644
index 0000000..573b7e2
--- /dev/null
+++ "b/LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/\346\234\272\345\231\250\344\272\272\344\273\273\345\212\241\350\241\250\345\257\274\345\205\245\346\250\241\346\235\277.xlsx"
Binary files differ

--
Gitblit v1.9.3