2
schangxiang@126.com
2024-11-21 1ae8669338989e827bd38237b7322306332e3b29
2
已添加7个文件
1970 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/mes_BatchOrderUPI_New.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mes_BatchOrderUPI_New/component/editDialog.vue 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mes_BatchOrderUPI_New/index.vue 446 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewOutput.cs 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs 561 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/批次数据导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Web/src/api/main/WmsOrder/mes_BatchOrderUPI_New.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import request from '/@/utils/request';
enum Api {
  AddMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/add',
  DeleteMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/delete',
  UpdateMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/update',
  PageMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/page',
  ListMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/list',
  DetailMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/detail',
  ImportExcelMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/importExcel',
  DownloadExcelTemplateMes_BatchOrderUPI_New = '/api/mes_BatchOrderUPI_New/downloadExcelTemplate',
}
// å¢žåŠ æ‰¹æ¬¡æ•°æ®
export const addMes_BatchOrderUPI_New = (params?: any) =>
    request({
        url: Api.AddMes_BatchOrderUPI_New,
        method: 'post',
        data: params
    });
// åˆ é™¤æ‰¹æ¬¡æ•°æ®
export const deleteMes_BatchOrderUPI_New = (params?: any) =>
    request({
            url: Api.DeleteMes_BatchOrderUPI_New,
            method: 'post',
            data: params
        });
// ç¼–辑批次数据
export const updateMes_BatchOrderUPI_New = (params?: any) =>
    request({
            url: Api.UpdateMes_BatchOrderUPI_New,
            method: 'post',
            data: params
        });
// å¯¼å…¥æ‰¹æ¬¡æ•°æ®
export const importExcelMes_BatchOrderUPI_New = (params?: any) =>
    request({
        url: Api.ImportExcelMes_BatchOrderUPI_New,
        method: 'post',
        data: params
    });
// ä¸‹è½½å¯¼å…¥æ‰¹æ¬¡æ•°æ®æ¨¡æ¿
export const downloadExcelTemplateMes_BatchOrderUPI_New = (params?: any) =>
    request({
            url: Api.DownloadExcelTemplateMes_BatchOrderUPI_New,
            method: 'get',
            data: params,
            responseType: 'blob'
        });
// åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡æ•°æ®
export const pageMes_BatchOrderUPI_New = (params?: any) =>
    request({
            url: Api.PageMes_BatchOrderUPI_New,
            method: 'post',
            data: params
        });
// ä¸åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡æ•°æ®
export const listMes_BatchOrderUPI_New = (params?: any) =>
    request({
            url: Api.ListMes_BatchOrderUPI_New,
            method: 'get',
            data: params
        });
// è¯¦æƒ…批次数据
export const detailMes_BatchOrderUPI_New = (id: any) =>
    request({
            url: Api.DetailMes_BatchOrderUPI_New,
            method: 'get',
            data: { id }
        });
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mes_BatchOrderUPI_New/component/editDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<template>
    <div class="mes_BatchOrderUPI_New-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="areaCode">
                            <el-select clearable v-model="ruleForm.areaCode" placeholder="请选择所在区域">
                                <el-option v-for="(item,index) in  getEnumAreaCodeData" :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="upiStatus">
                            <el-select clearable v-model="ruleForm.upiStatus" placeholder="请选择板料状态">
                                <el-option v-for="(item,index) in  getEnumUpiStatusData" :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="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="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="detailName">
                            <el-input v-model="ruleForm.detailName" 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="matgrid">
                            <el-input v-model="ruleForm.matgrid" 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="isEB">
                            <el-input-number v-model="ruleForm.isEB" placeholder="请输入是否封边" 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="dRNum">
                            <el-input-number v-model="ruleForm.dRNum" placeholder="请输入打孔设备编号" 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="isPA">
                            <el-input-number v-model="ruleForm.isPA" placeholder="请输入是否优化包装" 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="materialIndeX">
                            <el-input-number v-model="ruleForm.materialIndeX" placeholder="请输入锯切图号" 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="包装X坐标" prop="machineXCenter">
                            <el-input v-model="ruleForm.machineXCenter" placeholder="请输入包装X坐标" 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="包装Y坐标" prop="machineYCenter">
                            <el-input v-model="ruleForm.machineYCenter" placeholder="请输入包装Y坐标" 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="包装Z坐标" prop="machineZCenter">
                            <el-input v-model="ruleForm.machineZCenter" placeholder="请输入包装Z坐标" 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="sequence">
                            <el-input-number v-model="ruleForm.sequence" placeholder="请输入层数" 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="shelf">
                            <el-input-number v-model="ruleForm.shelf" placeholder="请输入次序" 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="rotation">
                            <el-input v-model="ruleForm.rotation" 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="info1">
                            <el-input v-model="ruleForm.info1" 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="info2">
                            <el-input v-model="ruleForm.info2" 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="info3">
                            <el-input v-model="ruleForm.info3" placeholder="请输入纸箱高" maxlength="53" show-word-limit clearable />
                        </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 { addMes_BatchOrderUPI_New, updateMes_BatchOrderUPI_New, detailMes_BatchOrderUPI_New } from "/@/api/main/WmsOrder/mes_BatchOrderUPI_New";
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
    const getEnumAreaCodeData = ref<any>([]);
    const getEnumUpiStatusData = 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>({
        upiStatus: [{required: true, message: '请选择板料状态!', trigger: 'change',},],
        planNo: [{required: true, message: '请输入批次号!', trigger: 'blur',},],
        orderId: [{required: true, message: '请输入订单号!', trigger: 'blur',},],
        uPI: [{required: true, message: '请输入部件条码!', trigger: 'blur',},],
        detailName: [{required: true, message: '请输入部件名称!', trigger: 'blur',},],
        length: [{required: true, message: '请输入长!', trigger: 'blur',},],
        width: [{required: true, message: '请输入宽!', trigger: 'blur',},],
        thk: [{required: true, message: '请输入厚!', trigger: 'blur',},],
        packageCode: [{required: true, message: '请输入包装号!', trigger: 'blur',},],
        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 detailMes_BatchOrderUPI_New(rowData.id)).data.result;
        else {
            ruleForm.value = rowData;
        }
        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 addMes_BatchOrderUPI_New(values);
                } else {
                    title='编辑';
                    ret = await updateMes_BatchOrderUPI_New(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 () => {
            getEnumAreaCodeData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('AreaCodeEnum')).data.result ?? [];
            getEnumUpiStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
    });
    //将属性或者函数暴露给父组件
    defineExpose({ openDialog });
</script>
LA24030_LuLiPackageLine_Web/src/views/main/WmsOrder/mes_BatchOrderUPI_New/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,446 @@
<template>
  <div class="mes_BatchOrderUPI_New-container">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="queryParamsMes_BatchOrderUPI_New" 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="queryParamsMes_BatchOrderUPI_New.searchKey" clearable="" placeholder="批次号,订单号,部件条码,部件名称,部件纹理,包装号,创建人,修改人"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="所在区域">
              <el-select clearable="" v-model="queryParamsMes_BatchOrderUPI_New.areaCode" placeholder="请选择所在区域">
                <el-option v-for="(item,index) in getEnumAreaCodeData_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="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="板料状态">
              <el-select clearable="" v-model="queryParamsMes_BatchOrderUPI_New.upiStatus" placeholder="请选择板料状态">
                <el-option v-for="(item,index) in getEnumUpiStatusData_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="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="批次号">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.planNo" clearable="" placeholder="请输入批次号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="订单号">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.orderId" clearable="" placeholder="请输入订单号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="部件条码">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.uPI" clearable="" placeholder="请输入部件条码"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="部件名称">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.detailName" clearable="" placeholder="请输入部件名称"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="长">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.length" clearable="" placeholder="请输入长"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="宽">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.width" clearable="" placeholder="请输入宽"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="厚">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.thk" clearable="" placeholder="请输入厚"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="部件纹理">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.matgrid" clearable="" placeholder="请输入部件纹理"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="是否封边">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.isEB"  clearable="" placeholder="请输入是否封边"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="打孔设备编号">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.dRNum"  clearable="" placeholder="请输入打孔设备编号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="是否优化包装">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.isPA"  clearable="" placeholder="请输入是否优化包装"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="锯切图号">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.materialIndeX"  clearable="" placeholder="请输入锯切图号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="包装号">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.packageCode" clearable="" placeholder="请输入包装号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="包装X坐标">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.machineXCenter" clearable="" placeholder="请输入包装X坐标"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="包装Y坐标">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.machineYCenter" clearable="" placeholder="请输入包装Y坐标"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="包装Z坐标">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.machineZCenter" clearable="" placeholder="请输入包装Z坐标"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="层数">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.sequence"  clearable="" placeholder="请输入层数"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="次序">
              <el-input-number v-model="queryParamsMes_BatchOrderUPI_New.shelf"  clearable="" placeholder="请输入次序"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="转向角度">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.rotation" clearable="" placeholder="请输入转向角度"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="纸箱长">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.info1" clearable="" placeholder="请输入纸箱长"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="纸箱宽">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.info2" clearable="" placeholder="请输入纸箱宽"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New">
            <el-form-item label="纸箱高">
              <el-input v-model="queryParamsMes_BatchOrderUPI_New.info3" clearable="" placeholder="请输入纸箱高"/>
            </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="handleQueryMes_BatchOrderUPI_New" v-auth="'mes_BatchOrderUPI_New:page'" :disabled="disabled_btnMes_BatchOrderUPI_New"> æŸ¥è¯¢ </el-button>
                      <el-button icon="ele-Refresh" @click="resetMes_BatchOrderUPI_New"> é‡ç½® </el-button>
                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUIMes_BatchOrderUPI_New" v-if="!showAdvanceQueryUIMes_BatchOrderUPI_New" style="margin-left:5px;"> é«˜çº§æŸ¥è¯¢ </el-button>
                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUIMes_BatchOrderUPI_New" v-if="showAdvanceQueryUIMes_BatchOrderUPI_New" style="margin-left:5px;"> éšè— </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddMes_BatchOrderUPI_New" v-auth="'mes_BatchOrderUPI_New:add'"> æ–°å¢ž </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Upload" @click="openImportExcelMes_BatchOrderUPI_New"  v-auth="'mes_BatchOrderUPI_New:importExcel'" > å¯¼å…¥ </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Download" @click="handleExportExcelMes_BatchOrderUPI_New"  v-auth="'mes_BatchOrderUPI_New: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="tableRefMes_BatchOrderUPI_New"
                :data="tableDataMes_BatchOrderUPI_New"
                style="width: 100%"
                v-loading="loadingMes_BatchOrderUPI_New"
                tooltip-effect="light"
                                row-key="id"
                @sort-change="sortChangeMes_BatchOrderUPI_New"
                border="">
        <el-table-column type="index" label="序号" width="55" align="center"/>
          <el-table-column prop="areaCode" label="所在区域"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.areaCode, getEnumAreaCodeData_Index)}}</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="upiStatus" label="板料状态"  show-overflow-tooltip="" >
            <template #default="scope">
              <el-tag>{{ getEnumDesc(scope.row.upiStatus, getEnumUpiStatusData_Index)}}</el-tag>
            </template>
          </el-table-column>
        <el-table-column prop="planNo" label="批次号"  show-overflow-tooltip="" />
        <el-table-column prop="orderId" label="订单号"  show-overflow-tooltip="" />
        <el-table-column prop="uPI" label="部件条码"  show-overflow-tooltip="" />
        <el-table-column prop="detailName" 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="matgrid" label="部件纹理"  show-overflow-tooltip="" />
        <el-table-column prop="isEB" label="是否封边"  show-overflow-tooltip="" />
        <el-table-column prop="dRNum" label="打孔设备编号"  show-overflow-tooltip="" />
        <el-table-column prop="isPA" label="是否优化包装"  show-overflow-tooltip="" />
        <el-table-column prop="materialIndeX" label="锯切图号"  show-overflow-tooltip="" />
        <el-table-column prop="packageCode" label="包装号"  show-overflow-tooltip="" />
        <el-table-column prop="machineXCenter" label="包装X坐标"  show-overflow-tooltip="" />
        <el-table-column prop="machineYCenter" label="包装Y坐标"  show-overflow-tooltip="" />
        <el-table-column prop="machineZCenter" label="包装Z坐标"  show-overflow-tooltip="" />
        <el-table-column prop="sequence" label="层数"  show-overflow-tooltip="" />
        <el-table-column prop="shelf" label="次序"  show-overflow-tooltip="" />
        <el-table-column prop="rotation" label="转向角度"  show-overflow-tooltip="" />
        <el-table-column prop="info1" label="纸箱长"  show-overflow-tooltip="" />
        <el-table-column prop="info2" label="纸箱宽"  show-overflow-tooltip="" />
        <el-table-column prop="info3" label="纸箱高"  show-overflow-tooltip="" />
         <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('mes_BatchOrderUPI_New:update') || auth('mes_BatchOrderUPI_New:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditMes_BatchOrderUPI_New(scope.row)" v-auth="'mes_BatchOrderUPI_New:update'"> ç¼–辑 </el-button>
            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delMes_BatchOrderUPI_New(scope.row)" v-auth="'mes_BatchOrderUPI_New:delete'"> åˆ é™¤ </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
                v-model:currentPage="tableParamsMes_BatchOrderUPI_New.page"
                v-model:page-size="tableParamsMes_BatchOrderUPI_New.pageSize"
                :total="tableParamsMes_BatchOrderUPI_New.total"
                :page-sizes="[10, 20, 50, 100, 200, 500]"
                small=""
                background=""
                @size-change="handleSizeChangeMes_BatchOrderUPI_New"
                @current-change="handleCurrentChangeMes_BatchOrderUPI_New"
                layout="total, sizes, prev, pager, next, jumper"
    />
      <printDialogMes_BatchOrderUPI_New
        ref="printDialogRefMes_BatchOrderUPI_New"
        :title="printMes_BatchOrderUPI_NewTitle"
        @reloadTable="handleQueryMes_BatchOrderUPI_New" />
      <editDialogMes_BatchOrderUPI_New
        ref="editDialogRefMes_BatchOrderUPI_New"
        :title="editMes_BatchOrderUPI_NewTitle"
        @reloadTable="handleQueryMes_BatchOrderUPI_New"
      />
      <importExcelDialog
        ref="importExcelDialogRefMes_BatchOrderUPI_New"
        :title="importExcelTitleMes_BatchOrderUPI_New"
        @parentUploadFun="handleImportExcelMes_BatchOrderUPI_New"
        @parentDownFun="handleDownExcelMes_BatchOrderUPI_New"
      />
    </el-card>
  </div>
</template>
<script lang="ts" setup="" name="mes_BatchOrderUPI_New">
  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 printDialogMes_BatchOrderUPI_New from '/@/views/system/print/component/hiprint/preview.vue'
  import editDialogMes_BatchOrderUPI_New from '/@/views/main/WmsOrder/mes_BatchOrderUPI_New/component/editDialog.vue'
  import { pageMes_BatchOrderUPI_New, deleteMes_BatchOrderUPI_New,importExcelMes_BatchOrderUPI_New,downloadExcelTemplateMes_BatchOrderUPI_New } from '/@/api/main/WmsOrder/mes_BatchOrderUPI_New';
    import { getAPI } from '/@/utils/axios-utils';
    import { SysEnumApi } from '/@/api-services/api';
  import commonFunction from '/@/utils/commonFunction';
  const getEnumAreaCodeData_Index = ref<any>([]);
  const getEnumUpiStatusData_Index = ref<any>([]);
    const { getEnumDesc } = commonFunction();
  /***************************************************[批次数据操作]开始***************************************************/
  const showAdvanceQueryUIMes_BatchOrderUPI_New = ref(false);
  const tableRefMes_BatchOrderUPI_New = ref(null);
  const printDialogRefMes_BatchOrderUPI_New = ref();
  const editDialogRefMes_BatchOrderUPI_New = ref();
  const loadingMes_BatchOrderUPI_New = ref(false);
  const disabled_btnMes_BatchOrderUPI_New = ref(false);
  const tableDataMes_BatchOrderUPI_New = ref<any>([]);
  const queryParamsMes_BatchOrderUPI_New = ref<any>({});
  const tableParamsMes_BatchOrderUPI_New = ref({
    page: 1,
    pageSize: 10,
    total: 0,
  });
  const printMes_BatchOrderUPI_NewTitle = ref("");
  const editMes_BatchOrderUPI_NewTitle = ref("");
  // æ”¹å˜é«˜çº§æŸ¥è¯¢çš„æŽ§ä»¶æ˜¾ç¤ºçŠ¶æ€
  const changeAdvanceQueryUIMes_BatchOrderUPI_New = () => {
    showAdvanceQueryUIMes_BatchOrderUPI_New.value = !showAdvanceQueryUIMes_BatchOrderUPI_New.value;
  }
  // æŸ¥è¯¢æ‰¹æ¬¡æ•°æ®
  const handleQueryMes_BatchOrderUPI_New = async () => {
    loadingMes_BatchOrderUPI_New.value = true;
    disabled_btnMes_BatchOrderUPI_New.value = true;
    var res = await pageMes_BatchOrderUPI_New(Object.assign(queryParamsMes_BatchOrderUPI_New.value, tableParamsMes_BatchOrderUPI_New.value));
    if(res.data.type=="success"){
      tableDataMes_BatchOrderUPI_New.value = res.data.result?.items ?? [];
      tableParamsMes_BatchOrderUPI_New.value.total = res.data.result?.total;
    }
    loadingMes_BatchOrderUPI_New.value = false;
    disabled_btnMes_BatchOrderUPI_New.value = false;
  };
  // é‡ç½®æ‰¹æ¬¡æ•°æ®æŸ¥è¯¢
  const resetMes_BatchOrderUPI_New = async () => {
    queryParamsMes_BatchOrderUPI_New.value = {}
  };
  // æ‰¹æ¬¡æ•°æ®åˆ—排序
  const sortChangeMes_BatchOrderUPI_New = async (column: any) => {
    queryParamsMes_BatchOrderUPI_New.value.field = column.prop;
    queryParamsMes_BatchOrderUPI_New.value.order = column.order;
    await handleQueryMes_BatchOrderUPI_New();
  };
  // æ‰“开新增批次数据页面
  const openAddMes_BatchOrderUPI_New = () => {
    editMes_BatchOrderUPI_NewTitle.value = '添加批次数据';
    editDialogRefMes_BatchOrderUPI_New.value.openDialog(1,{});
  };
  // æ‰“开打印批次数据页面
  const openPrintMes_BatchOrderUPI_New = async (row: any) => {
    printMes_BatchOrderUPI_NewTitle.value = '打印批次数据';
  }
  // æ‰“开编辑批次数据页面
  const openEditMes_BatchOrderUPI_New = (row: any) => {
    editMes_BatchOrderUPI_NewTitle.value = '编辑批次数据';
    editDialogRefMes_BatchOrderUPI_New.value.openDialog(2,row);
  };
  // åˆ é™¤æ‰¹æ¬¡æ•°æ®
  const delMes_BatchOrderUPI_New = (row: any) => {
    ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  })
  .then(async () => {
    loadingMes_BatchOrderUPI_New.value = true;
    var ret = await deleteMes_BatchOrderUPI_New(row);
    if(ret.data.type=="success"){
        ElMessage.success("删除成功");
    }
    loadingMes_BatchOrderUPI_New.value = false;
    handleQueryMes_BatchOrderUPI_New();
  })
  .catch(() => {});
  };
  // æ”¹å˜æ‰¹æ¬¡æ•°æ®é¡µé¢å®¹é‡
  const handleSizeChangeMes_BatchOrderUPI_New = (val: number) => {
    tableParamsMes_BatchOrderUPI_New.value.pageSize = val;
    handleQueryMes_BatchOrderUPI_New();
  };
  // æ”¹å˜æ‰¹æ¬¡æ•°æ®é¡µç åºå·
  const handleCurrentChangeMes_BatchOrderUPI_New = (val: number) => {
    tableParamsMes_BatchOrderUPI_New.value.page = val;
    handleQueryMes_BatchOrderUPI_New();
  };
/***************************************************[批次数据操作]结束***************************************************/
/***************************************************[批次数据导入]开始***************************************************/
const importExcelTitleMes_BatchOrderUPI_New = ref("");
const importExcelDialogRefMes_BatchOrderUPI_New = ref();
//打开导入界面
const openImportExcelMes_BatchOrderUPI_New = () => {
    importExcelTitleMes_BatchOrderUPI_New.value = '导入批次数据';
    importExcelDialogRefMes_BatchOrderUPI_New.value.openDialog({});
};
//导入数据
const handleImportExcelMes_BatchOrderUPI_New = async (formData:Blob) => {
   var result = await importExcelMes_BatchOrderUPI_New(formData);
   importExcelDialogRefMes_BatchOrderUPI_New.value.callBackUploadFun(result.data);//回调导入子页面的方法
   if(result.data.type=="success"){
    handleQueryMes_BatchOrderUPI_New();
   }
};
//下载导入模板
const handleDownExcelMes_BatchOrderUPI_New = async () => {
   var result = await downloadExcelTemplateMes_BatchOrderUPI_New();
   importExcelDialogRefMes_BatchOrderUPI_New.value.callBackDownFun(result);//回调导入子页面的方法
};
/***************************************************[批次数据导入]结束***************************************************/
/***************************************************[批次数据导出]开始***************************************************/
//定义当前页面的方法组
const functionMapMes_BatchOrderUPI_New = {
      getEnumAreaCodeData_Index,
      getEnumUpiStatusData_Index,
      formatDate_T_Date,
      formatDate_T_Time
};
//点击导出按钮
const handleExportExcelMes_BatchOrderUPI_New = async (formData:Blob) => {
    loadingMes_BatchOrderUPI_New.value = true;
    disabled_btnMes_BatchOrderUPI_New.value = true;
    var new_tableParamsMes_BatchOrderUPI_New=JSON.parse(JSON.stringify(tableParamsMes_BatchOrderUPI_New.value));
    new_tableParamsMes_BatchOrderUPI_New.page = 1;
    new_tableParamsMes_BatchOrderUPI_New.pageSize = 100000;
    var res = await pageMes_BatchOrderUPI_New(Object.assign(queryParamsMes_BatchOrderUPI_New.value, new_tableParamsMes_BatchOrderUPI_New));
    if(res.data.type=="success"){
      exportExcelMes_BatchOrderUPI_New(res.data.result?.items ?? []);
    }
    loadingMes_BatchOrderUPI_New.value = false;
    disabled_btnMes_BatchOrderUPI_New.value = false;
};
//导出
const exportExcelMes_BatchOrderUPI_New  = async (exportDataList:Array) => {
  exportPageExcel(exportDataList, tableRefMes_BatchOrderUPI_New,"批次数据",functionMapMes_BatchOrderUPI_New);
};
/***************************************************[批次数据导出]结束***************************************************/
  // æ‰¹æ¬¡æ•°æ®é¡µé¢åŠ è½½æ—¶
  onMounted(async () => {
    getEnumAreaCodeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('AreaCodeEnum')).data.result ?? [];
    getEnumUpiStatusData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('UpiStatusEnum')).data.result ?? [];
  });
  handleQueryMes_BatchOrderUPI_New();
</script>
<style scoped>
:deep(.el-input),
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,393 @@
using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;
namespace Admin.NET.Application;
    /// <summary>
    /// æ‰¹æ¬¡æ•°æ®åŸºç¡€è¾“入参数
    /// </summary>
    public class Mes_BatchOrderUPI_NewBaseInput
    {
        /// <summary>
        /// æ‰€åœ¨åŒºåŸŸ
        /// </summary>
        public virtual Admin.NET.Application.AreaCodeEnum? AreaCode { get; set; }
        /// <summary>
        /// æ¿æ–™çŠ¶æ€
        /// </summary>
        public virtual Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public virtual string PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public virtual string OrderId { get; set; }
        /// <summary>
        /// éƒ¨ä»¶æ¡ç 
        /// </summary>
        public virtual string UPI { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        public virtual string DetailName { 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 Matgrid { get; set; }
        /// <summary>
        /// æ˜¯å¦å°è¾¹
        /// </summary>
        public virtual int? IsEB { get; set; }
        /// <summary>
        /// æ‰“孔设备编号
        /// </summary>
        public virtual int? DRNum { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¼˜åŒ–包装
        /// </summary>
        public virtual int? IsPA { get; set; }
        /// <summary>
        /// é”¯åˆ‡å›¾å·
        /// </summary>
        public virtual int? MaterialIndeX { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public virtual string PackageCode { get; set; }
        /// <summary>
        /// åŒ…装X坐标
        /// </summary>
        public virtual float? MachineXCenter { get; set; }
        /// <summary>
        /// åŒ…装Y坐标
        /// </summary>
        public virtual float? MachineYCenter { get; set; }
        /// <summary>
        /// åŒ…装Z坐标
        /// </summary>
        public virtual float? MachineZCenter { get; set; }
        /// <summary>
        /// å±‚æ•°
        /// </summary>
        public virtual int? Sequence { get; set; }
        /// <summary>
        /// æ¬¡åº
        /// </summary>
        public virtual int? Shelf { get; set; }
        /// <summary>
        /// è½¬å‘角度
        /// </summary>
        public virtual float? Rotation { get; set; }
        /// <summary>
        /// çº¸ç®±é•¿
        /// </summary>
        public virtual float? Info1 { get; set; }
        /// <summary>
        /// çº¸ç®±å®½
        /// </summary>
        public virtual float? Info2 { get; set; }
        /// <summary>
        /// çº¸ç®±é«˜
        /// </summary>
        public virtual float? Info3 { 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 Mes_BatchOrderUPI_NewInput : BasePageInput
    {
        /// <summary>
        /// å…³é”®å­—查询
        /// </summary>
        public string? SearchKey { get; set; }
        /// <summary>
        /// æ‰€åœ¨åŒºåŸŸ
        /// </summary>
        public Admin.NET.Application.AreaCodeEnum? AreaCode { get; set; }
        /// <summary>
        /// æ¿æ–™çŠ¶æ€
        /// </summary>
        public Admin.NET.Application.UpiStatusEnum? UpiStatus { get; set; }
        /// <summary>
        /// æ‰¹æ¬¡å·
        /// </summary>
        public string? PlanNo { get; set; }
        /// <summary>
        /// è®¢å•号
        /// </summary>
        public string? OrderId { get; set; }
        /// <summary>
        /// éƒ¨ä»¶æ¡ç 
        /// </summary>
        public string? UPI { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        public string? DetailName { 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? Matgrid { get; set; }
        /// <summary>
        /// æ˜¯å¦å°è¾¹
        /// </summary>
        public int? IsEB { get; set; }
        /// <summary>
        /// æ‰“孔设备编号
        /// </summary>
        public int? DRNum { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¼˜åŒ–包装
        /// </summary>
        public int? IsPA { get; set; }
        /// <summary>
        /// é”¯åˆ‡å›¾å·
        /// </summary>
        public int? MaterialIndeX { get; set; }
        /// <summary>
        /// åŒ…装号
        /// </summary>
        public string? PackageCode { get; set; }
        /// <summary>
        /// åŒ…装X坐标
        /// </summary>
        public float? MachineXCenter { get; set; }
        /// <summary>
        /// åŒ…装Y坐标
        /// </summary>
        public float? MachineYCenter { get; set; }
        /// <summary>
        /// åŒ…装Z坐标
        /// </summary>
        public float? MachineZCenter { get; set; }
        /// <summary>
        /// å±‚æ•°
        /// </summary>
        public int? Sequence { get; set; }
        /// <summary>
        /// æ¬¡åº
        /// </summary>
        public int? Shelf { get; set; }
        /// <summary>
        /// è½¬å‘角度
        /// </summary>
        public float? Rotation { get; set; }
        /// <summary>
        /// çº¸ç®±é•¿
        /// </summary>
        public float? Info1 { get; set; }
        /// <summary>
        /// çº¸ç®±å®½
        /// </summary>
        public float? Info2 { get; set; }
        /// <summary>
        /// çº¸ç®±é«˜
        /// </summary>
        public float? Info3 { get; set; }
    }
    /// <summary>
    /// æ‰¹æ¬¡æ•°æ®å¢žåŠ è¾“å…¥å‚æ•°
    /// </summary>
    public class AddMes_BatchOrderUPI_NewInput : Mes_BatchOrderUPI_NewBaseInput
    {
        /// <summary>
        /// æ¿æ–™çŠ¶æ€
        /// </summary>
        [Required(ErrorMessage = "板料状态不能为空")]
        public override Admin.NET.Application.UpiStatusEnum UpiStatus { 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 UPI { get; set; }
        /// <summary>
        /// éƒ¨ä»¶åç§°
        /// </summary>
        [Required(ErrorMessage = "部件名称不能为空")]
        public override string DetailName { 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 PackageCode { get; set; }
        /// <summary>
        /// è½¯åˆ é™¤
        /// </summary>
        [Required(ErrorMessage = "软删除不能为空")]
        public override bool IsDelete { get; set; }
    }
    /// <summary>
    /// æ‰¹æ¬¡æ•°æ®åˆ é™¤è¾“入参数
    /// </summary>
    public class DeleteMes_BatchOrderUPI_NewInput : BaseIdInput
    {
    }
    /// <summary>
    /// æ‰¹æ¬¡æ•°æ®æ›´æ–°è¾“入参数
    /// </summary>
    public class UpdateMes_BatchOrderUPI_NewInput : AddMes_BatchOrderUPI_NewInput
    {
        /// <summary>
        /// ä¸»é”®Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
    }
    /// <summary>
    /// æ‰¹æ¬¡æ•°æ®ä¸»é”®æŸ¥è¯¢è¾“入参数
    /// </summary>
    public class QueryByIdMes_BatchOrderUPI_NewInput : DeleteMes_BatchOrderUPI_NewInput
    {
    }
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
namespace Admin.NET.Application;
/// <summary>
/// æ‰¹æ¬¡æ•°æ®è¾“出参数
/// </summary>
public class Mes_BatchOrderUPI_NewOutput
{
    /// <summary>
    /// ä¸»é”®Id
    /// </summary>
    public long? Id { get; set; }
    /// <summary>
    /// æ‰€åœ¨åŒºåŸŸ
    /// </summary>
    public Admin.NET.Application.AreaCodeEnum? AreaCode { get; set; }
    /// <summary>
    /// æ¿æ–™çŠ¶æ€
    /// </summary>
    public Admin.NET.Application.UpiStatusEnum UpiStatus { get; set; }
    /// <summary>
    /// æ‰¹æ¬¡å·
    /// </summary>
    public string PlanNo { get; set; }
    /// <summary>
    /// è®¢å•号
    /// </summary>
    public string OrderId { get; set; }
    /// <summary>
    /// éƒ¨ä»¶æ¡ç 
    /// </summary>
    public string UPI { get; set; }
    /// <summary>
    /// éƒ¨ä»¶åç§°
    /// </summary>
    public string DetailName { 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 Matgrid { get; set; }
    /// <summary>
    /// æ˜¯å¦å°è¾¹
    /// </summary>
    public int? IsEB { get; set; }
    /// <summary>
    /// æ‰“孔设备编号
    /// </summary>
    public int? DRNum { get; set; }
    /// <summary>
    /// æ˜¯å¦ä¼˜åŒ–包装
    /// </summary>
    public int? IsPA { get; set; }
    /// <summary>
    /// é”¯åˆ‡å›¾å·
    /// </summary>
    public int? MaterialIndeX { get; set; }
    /// <summary>
    /// åŒ…装号
    /// </summary>
    public string PackageCode { get; set; }
    /// <summary>
    /// åŒ…装X坐标
    /// </summary>
    public float? MachineXCenter { get; set; }
    /// <summary>
    /// åŒ…装Y坐标
    /// </summary>
    public float? MachineYCenter { get; set; }
    /// <summary>
    /// åŒ…装Z坐标
    /// </summary>
    public float? MachineZCenter { get; set; }
    /// <summary>
    /// å±‚æ•°
    /// </summary>
    public int? Sequence { get; set; }
    /// <summary>
    /// æ¬¡åº
    /// </summary>
    public int? Shelf { get; set; }
    /// <summary>
    /// è½¬å‘角度
    /// </summary>
    public float? Rotation { get; set; }
    /// <summary>
    /// çº¸ç®±é•¿
    /// </summary>
    public float? Info1 { get; set; }
    /// <summary>
    /// çº¸ç®±å®½
    /// </summary>
    public float? Info2 { get; set; }
    /// <summary>
    /// çº¸ç®±é«˜
    /// </summary>
    public float? Info3 { 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/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,561 @@
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.WmsOrderGroupName, Order = 100)]
public class Mes_BatchOrderUPI_NewService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _rep;
    public Mes_BatchOrderUPI_NewService(SqlSugarRepository<Mes_BatchOrderUPI_New> rep)
    {
        _rep = rep;
    }
    /// <summary>
    /// åˆ†é¡µæŸ¥è¯¢æ‰¹æ¬¡æ•°æ®
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Page")]
    [Description("Mes_BatchOrderUPI_New/Page")]
    public async Task<SqlSugarPagedList<Mes_BatchOrderUPI_NewOutput>> Page(Mes_BatchOrderUPI_NewInput 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("Mes_BatchOrderUPI_New/List")]
    public async Task<List<Mes_BatchOrderUPI_NewOutput>> List([FromQuery] Mes_BatchOrderUPI_NewInput input)
    {
        var query = CommonPageFilter(input);
        return await query.OrderBuilder(input, "", "Id").Select<Mes_BatchOrderUPI_NewOutput>().ToListAsync();
    }
    /// <summary>
    /// å¢žåŠ æ‰¹æ¬¡æ•°æ®
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Add")]
    [Description("Mes_BatchOrderUPI_New/Add")]
    public async Task<long> Add(AddMes_BatchOrderUPI_NewInput input)
    {
        var entity = input.Adapt<Mes_BatchOrderUPI_New>();
        //重复性验证
        await CheckExist(entity);
        await _rep.InsertAsync(entity);
        return entity.Id;
    }
    /// <summary>
    /// åˆ é™¤æ‰¹æ¬¡æ•°æ®
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Delete")]
    [Description("Mes_BatchOrderUPI_New/Delete")]
    public async Task Delete(DeleteMes_BatchOrderUPI_NewInput 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("Mes_BatchOrderUPI_New/Update")]
    public async Task Update(UpdateMes_BatchOrderUPI_NewInput input)
    {
        var entity = input.Adapt<Mes_BatchOrderUPI_New>();
        //重复性验证
        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("Mes_BatchOrderUPI_New/Detail")]
    public async Task<Mes_BatchOrderUPI_New> Detail([FromQuery] QueryByIdMes_BatchOrderUPI_NewInput 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("Mes_BatchOrderUPI_New/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<Mes_BatchOrderUPI_New>> CommonImport(DataTable dataTable, int dataStartLine)
    {
        var details = new List<Mes_BatchOrderUPI_New>();
        int index = dataStartLine;//模版列名开始行
        foreach (System.Data.DataRow row in dataTable.Rows)
        {
            index++;
            //导入模版定制化代码(替换模版使用)
            var addItem = new Mes_BatchOrderUPI_New();
            #region å®šä¹‰å˜é‡
            var _AreaCode = "";//所在区域
            var _UpiStatus = "";//板料状态
            var _PlanNo = "";//批次号
            var _OrderId = "";//订单号
            var _UPI = "";//部件条码
            var _DetailName = "";//部件名称
            var _Length = "";//长
            var _Width = "";//宽
            var _Thk = "";//厚
            var _Matgrid = "";//部件纹理
            var _IsEB = "";//是否封边
            var _DRNum = "";//打孔设备编号
            var _IsPA = "";//是否优化包装
            var _MaterialIndeX = "";//锯切图号
            var _PackageCode = "";//包装号
            var _MachineXCenter = "";//包装X坐标
            var _MachineYCenter = "";//包装Y坐标
            var _MachineZCenter = "";//包装Z坐标
            var _Sequence = "";//层数
            var _Shelf = "";//次序
            var _Rotation = "";//转向角度
            var _Info1 = "";//纸箱长
            var _Info2 = "";//纸箱宽
            var _Info3 = "";//纸箱高
            #endregion
            #region å–值
            _AreaCode = row["所在区域"]?.ToString();
            _UpiStatus = row["板料状态"]?.ToString();
            _PlanNo = row["批次号"]?.ToString();
            _OrderId = row["订单号"]?.ToString();
            _UPI = row["部件条码"]?.ToString();
            _DetailName = row["部件名称"]?.ToString();
            _Length = row["长"]?.ToString();
            _Width = row["宽"]?.ToString();
            _Thk = row["厚"]?.ToString();
            _Matgrid = row["部件纹理"]?.ToString();
            _IsEB = row["是否封边"]?.ToString();
            _DRNum = row["打孔设备编号"]?.ToString();
            _IsPA = row["是否优化包装"]?.ToString();
            _MaterialIndeX = row["锯切图号"]?.ToString();
            _PackageCode = row["包装号"]?.ToString();
            _MachineXCenter = row["包装X坐标"]?.ToString();
            _MachineYCenter = row["包装Y坐标"]?.ToString();
            _MachineZCenter = row["包装Z坐标"]?.ToString();
            _Sequence = row["层数"]?.ToString();
            _Shelf = row["次序"]?.ToString();
            _Rotation = row["转向角度"]?.ToString();
            _Info1 = row["纸箱长"]?.ToString();
            _Info2 = row["纸箱宽"]?.ToString();
            _Info3 = row["纸箱高"]?.ToString();
            #endregion
            #region éªŒè¯
            if (!string.IsNullOrEmpty(_AreaCode))
            {
                Admin.NET.Application.AreaCodeEnum enumAreaCode = default(Admin.NET.Application.AreaCodeEnum);
                if (!Enum.TryParse<Admin.NET.Application.AreaCodeEnum>(_AreaCode, out enumAreaCode) && !string.IsNullOrEmpty(_AreaCode))
                {
                    throw Oops.Oh($"第{index}行[所在区域]{_AreaCode}值不正确!");
                }
                else
                {
                    addItem.AreaCode = enumAreaCode;
                }
            }
            if (string.IsNullOrEmpty(_UpiStatus))
            {
                throw Oops.Oh($"第{index}行[板料状态]{_UpiStatus}不能为空!");
            }
            if (!string.IsNullOrEmpty(_UpiStatus))
            {
                Admin.NET.Application.UpiStatusEnum enumUpiStatus = default(Admin.NET.Application.UpiStatusEnum);
                if (!Enum.TryParse<Admin.NET.Application.UpiStatusEnum>(_UpiStatus, out enumUpiStatus) && !string.IsNullOrEmpty(_UpiStatus))
                {
                    throw Oops.Oh($"第{index}行[板料状态]{_UpiStatus}值不正确!");
                }
                else
                {
                    addItem.UpiStatus = enumUpiStatus;
                }
            }
            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(_UPI))
            {
                throw Oops.Oh($"第{index}行[部件条码]{_UPI}不能为空!");
            }
            if (!string.IsNullOrEmpty(_UPI))
            {
                addItem.UPI = (string)(_UPI.Trim());
            }
            if (string.IsNullOrEmpty(_DetailName))
            {
                throw Oops.Oh($"第{index}行[部件名称]{_DetailName}不能为空!");
            }
            if (!string.IsNullOrEmpty(_DetailName))
            {
                addItem.DetailName = (string)(_DetailName.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(_Matgrid))
            {
                addItem.Matgrid = (string)(_Matgrid.Trim());
            }
            if (!string.IsNullOrEmpty(_IsEB))
            {
                if (!int.TryParse(_IsEB, out int outIsEB) && !string.IsNullOrEmpty(_IsEB))
                {
                    throw Oops.Oh($"第{index}行[是否封边]{_IsEB}值不正确!");
                }
                if (outIsEB <= 0 && !string.IsNullOrEmpty(_IsEB))
                {
                    throw Oops.Oh($"第{index}行[是否封边]{_IsEB}值不能小于等于0!");
                }
                else
                {
                    addItem.IsEB = outIsEB;
                }
            }
            if (!string.IsNullOrEmpty(_DRNum))
            {
                if (!int.TryParse(_DRNum, out int outDRNum) && !string.IsNullOrEmpty(_DRNum))
                {
                    throw Oops.Oh($"第{index}行[打孔设备编号]{_DRNum}值不正确!");
                }
                if (outDRNum <= 0 && !string.IsNullOrEmpty(_DRNum))
                {
                    throw Oops.Oh($"第{index}行[打孔设备编号]{_DRNum}值不能小于等于0!");
                }
                else
                {
                    addItem.DRNum = outDRNum;
                }
            }
            if (!string.IsNullOrEmpty(_IsPA))
            {
                if (!int.TryParse(_IsPA, out int outIsPA) && !string.IsNullOrEmpty(_IsPA))
                {
                    throw Oops.Oh($"第{index}行[是否优化包装]{_IsPA}值不正确!");
                }
                if (outIsPA <= 0 && !string.IsNullOrEmpty(_IsPA))
                {
                    throw Oops.Oh($"第{index}行[是否优化包装]{_IsPA}值不能小于等于0!");
                }
                else
                {
                    addItem.IsPA = outIsPA;
                }
            }
            if (!string.IsNullOrEmpty(_MaterialIndeX))
            {
                if (!int.TryParse(_MaterialIndeX, out int outMaterialIndeX) && !string.IsNullOrEmpty(_MaterialIndeX))
                {
                    throw Oops.Oh($"第{index}行[锯切图号]{_MaterialIndeX}值不正确!");
                }
                if (outMaterialIndeX <= 0 && !string.IsNullOrEmpty(_MaterialIndeX))
                {
                    throw Oops.Oh($"第{index}行[锯切图号]{_MaterialIndeX}值不能小于等于0!");
                }
                else
                {
                    addItem.MaterialIndeX = outMaterialIndeX;
                }
            }
            if (string.IsNullOrEmpty(_PackageCode))
            {
                throw Oops.Oh($"第{index}行[包装号]{_PackageCode}不能为空!");
            }
            if (!string.IsNullOrEmpty(_PackageCode))
            {
                addItem.PackageCode = (string)(_PackageCode.Trim());
            }
            //if(!string.IsNullOrEmpty(_MachineXCenter))
            //{
            //      addItem.MachineXCenter = (float)(_MachineXCenter.Trim());
            // }
            //if(!string.IsNullOrEmpty(_MachineYCenter))
            //{
            //      addItem.MachineYCenter = (float)(_MachineYCenter.Trim());
            // }
            //if(!string.IsNullOrEmpty(_MachineZCenter))
            //{
            //      addItem.MachineZCenter = (float)(_MachineZCenter.Trim());
            // }
            if (!string.IsNullOrEmpty(_Sequence))
            {
                if (!int.TryParse(_Sequence, out int outSequence) && !string.IsNullOrEmpty(_Sequence))
                {
                    throw Oops.Oh($"第{index}行[层数]{_Sequence}值不正确!");
                }
                if (outSequence <= 0 && !string.IsNullOrEmpty(_Sequence))
                {
                    throw Oops.Oh($"第{index}行[层数]{_Sequence}值不能小于等于0!");
                }
                else
                {
                    addItem.Sequence = outSequence;
                }
            }
            if (!string.IsNullOrEmpty(_Shelf))
            {
                if (!int.TryParse(_Shelf, out int outShelf) && !string.IsNullOrEmpty(_Shelf))
                {
                    throw Oops.Oh($"第{index}行[次序]{_Shelf}值不正确!");
                }
                if (outShelf <= 0 && !string.IsNullOrEmpty(_Shelf))
                {
                    throw Oops.Oh($"第{index}行[次序]{_Shelf}值不能小于等于0!");
                }
                else
                {
                    addItem.Shelf = outShelf;
                }
            }
            //if(!string.IsNullOrEmpty(_Rotation))
            //{
            //      addItem.Rotation = (float)(_Rotation.Trim());
            // }
            //if(!string.IsNullOrEmpty(_Info1))
            //{
            //      addItem.Info1 = (float)(_Info1.Trim());
            // }
            //if(!string.IsNullOrEmpty(_Info2))
            //{
            //      addItem.Info2 = (float)(_Info2.Trim());
            // }
            //if(!string.IsNullOrEmpty(_Info3))
            //{
            //      addItem.Info3 = (float)(_Info3.Trim());
            // }
            #endregion
            details.Add(addItem);
        }
        //验重
        await CheckExisitForImport(details);
        return details;
    }
    /// <summary>
    /// æ ¹æ®ç‰ˆæœ¬ä¸‹è½½æ‰¹æ¬¡æ•°æ®çš„Excel导入模板
    /// </summary>
    /// <returns>下载的模板文件</returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "DownloadExcelTemplate")]
    [Description("Mes_BatchOrderUPI_New/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<Mes_BatchOrderUPI_NewOutput> CommonPageFilter(Mes_BatchOrderUPI_NewInput input)
    {
        var query = _rep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
                u.PlanNo.Contains(input.SearchKey.Trim())
                || u.OrderId.Contains(input.SearchKey.Trim())
                || u.UPI.Contains(input.SearchKey.Trim())
                || u.DetailName.Contains(input.SearchKey.Trim())
                || u.Matgrid.Contains(input.SearchKey.Trim())
                || u.PackageCode.Contains(input.SearchKey.Trim())
                || u.CreateUserName.Contains(input.SearchKey.Trim())
                || u.UpdateUserName.Contains(input.SearchKey.Trim())
            )
            .WhereIF(input.AreaCode.HasValue, u => u.AreaCode == input.AreaCode)
            .WhereIF(input.UpiStatus.HasValue, u => u.UpiStatus == input.UpiStatus)
            .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.UPI), u => u.UPI.Contains(input.UPI.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.DetailName.Contains(input.DetailName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Matgrid), u => u.Matgrid.Contains(input.Matgrid.Trim()))
            .WhereIF(input.IsEB > 0, u => u.IsEB == input.IsEB)
            .WhereIF(input.DRNum > 0, u => u.DRNum == input.DRNum)
            .WhereIF(input.IsPA > 0, u => u.IsPA == input.IsPA)
            .WhereIF(input.MaterialIndeX > 0, u => u.MaterialIndeX == input.MaterialIndeX)
            .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
            .WhereIF(input.Sequence > 0, u => u.Sequence == input.Sequence)
            .WhereIF(input.Shelf > 0, u => u.Shelf == input.Shelf)
            .Select<Mes_BatchOrderUPI_NewOutput>();
        return query;
    }
    /// <summary>
    /// é‡å¤æ€§éªŒè¯
    /// </summary>
    /// <param name="input">验证对象</param>
    /// <param name="isEdit">是否是编辑</param>
    /// <returns></returns>
    private async Task CheckExist(Mes_BatchOrderUPI_New input, bool isEdit = false)
    {
        //没有配置组合校验,不需要验重
        //没有配置单独校验,不需要验重
    }
    /// <summary>
    /// æ ¹æ®ç»„合校验和单独校验验证数据是否已存在-导入时验证
    /// </summary>
    /// <param name="inputs"></param>
    /// <returns></returns>
    private async Task CheckExisitForImport(List<Mes_BatchOrderUPI_New> inputs)
    {
        if (inputs?.Count <= 0)
        {
            throw Oops.Oh($"导入数据不能为空");
        }
        //根据组合校验验证表格中中是否已存在相同数据
        //根据单独校验验证表格中中是否已存在相同数据
    }
    #endregion
}
LA24030_LuLiPackageLine_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/Åú´ÎÊý¾Ýµ¼ÈëÄ£°å.xlsx
Binary files differ