schangxiang@126.com
2024-11-22 6fb9acd1a65da4cb57408a4832d4bee4203f3bb4
增加 任务表
已添加7个文件
1818 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/component/editDialog.vue 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsTask/wmsRbLineTask/index.vue 424 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs 511 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/机器人任务表导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/WmsTask/wmsRbLineTask.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import 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 }
        });
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>
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>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,369 @@
using 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>
        /// åˆ›å»ºäººId
        /// </summary>
        public virtual long? CreateUserId { get; set; }
        /// <summary>
        /// åˆ›å»ºäºº
        /// </summary>
        public virtual string CreateUserName { get; set; }
        /// <summary>
        /// ä¿®æ”¹äººId
        /// </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
    {
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/Dto/WmsRbLineTaskOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
namespace 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>
    /// åˆ›å»ºäººId
    /// </summary>
    public long? CreateUserId { get; set; }
    /// <summary>
    /// åˆ›å»ºäºº
    /// </summary>
    public string CreateUserName { get; set; }
    /// <summary>
    /// ä¿®æ”¹äººId
    /// </summary>
    public long? UpdateUserId { get; set; }
    /// <summary>
    /// ä¿®æ”¹äºº
    /// </summary>
    public string UpdateUserName { get; set; }
    /// <summary>
    /// è½¯åˆ é™¤
    /// </summary>
    public bool IsDelete { get; set; }
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsTask/WmsRbLineTask/WmsRbLineTaskService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,511 @@
using 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}值不正确!");
                }
                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}值不正确!");
                }
                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}值不正确!");
                }
                else
                {
                    bool outIsFlagFinish = _IsFlagFinish.Equals("是") ? true : false;
                    addItem.IsFlagFinish = outIsFlagFinish;
                }
            }
            #endregion
            details.Add(addItem);
        }
        //验重
        await CheckExisitForImport(details);
        return details;
    }
    /// <summary>
    /// æ ¹æ®ç‰ˆæœ¬ä¸‹è½½æœºå™¨äººä»»åŠ¡è¡¨çš„Excel导入模板
    /// </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
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/»úÆ÷ÈËÈÎÎñ±íµ¼ÈëÄ£°å.xlsx
Binary files differ