😎新增产品管理、项目管理工艺路线定时同步功能

This commit is contained in:
bairubing 2024-10-16 13:30:25 +08:00
parent 4b1d0fb58d
commit 0712217e09
3 changed files with 723 additions and 17 deletions

View File

@ -13,6 +13,7 @@ using Vistar.Application.SapService.Dto;
using Vistar.Application.Common;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using static Elastic.Clients.Elasticsearch.JoinField;
using Qiniu.CDN;
namespace Vistar.Application.Service.MaterialManagement;
@ -52,8 +53,8 @@ public class ProductManagementService : IDynamicApiController, ITransient
_sapService = sapService;
_obj118Rep = obj118Rep;
_dataValidationService = dataValidationService;
_obj122Rep= obj122Rep;
_obj121Rep= obj121Rep;
_obj122Rep = obj122Rep;
_obj121Rep = obj121Rep;
}
/// <summary>
/// 分页查询产品管理
@ -94,7 +95,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
fld004629 = DateTime.Now,
fld004312 = "N",
fld004313 = lengthError,
fld004311="失败"
fld004311 = "失败"
})
.Where(it => it.idRecord == input.idRecord)
.ExecuteCommandAsync().ConfigureAwait(false);
@ -233,14 +234,16 @@ public class ProductManagementService : IDynamicApiController, ITransient
itemDataList.Add(itemData);
}
if (!string.IsNullOrEmpty(ParentData.fld005288)) {
if (!string.IsNullOrEmpty(ParentData.fld005288))
{
var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 110 && x.ConfigLabel == "mBOM").FirstAsync();
var BomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input[0].ParentGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(ParentData.fld005288)).ToListAsync();
for (int i = 0; i < BomData.Count; i++)
{
var itemList= itemDataList.Where(x=>x.IDNRK == BomData[i].PartNumber).ToList();
if (itemList.Count == 0) {
var itemList = itemDataList.Where(x => x.IDNRK == BomData[i].PartNumber).ToList();
if (itemList.Count == 0)
{
var Verification = await _dataValidationService.VerificationMaterial(BomData[i].ChildObjID, BomData[i].PartNumber, BomData[i].ChildGuid);
if (Verification == "不存在")
{
@ -262,7 +265,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
};
itemDataList.Add(itemData);
}
}
}
@ -297,7 +300,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
fld004315 = codeVal,
fld004316 = "N",
fld004317 = apiOutput.msg,
fld005288= input[0].ParentVersion.ToString()////////////////////////////////////////////////////////////xinixnixn
fld005288 = input[0].ParentVersion.ToString()////////////////////////////////////////////////////////////xinixnixn
})
.Where(it => it.idRecord == ParentData.idRecord)
.ExecuteCommandAsync();
@ -528,7 +531,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
.ExecuteCommandAsync();
var output = new SapOutput()
{
parameter= sapOutput.parameter,
parameter = sapOutput.parameter,
materialCode = input[0]._System_objNBS,
code = codeVal,
msg = msg,
@ -554,7 +557,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 110 && x.ConfigLabel == "mBOM").FirstAsync();
var materialData = await _obj110Rep.AsQueryable()
.Where(x => x.CheckedStatus == false && x.deleted == false && x.IsLatestVersion == true &&x.fld004311=="成功" && (x.fld004316 == "A" || x.fld004316 == "M"))
.Where(x => x.CheckedStatus == false && x.deleted == false && x.IsLatestVersion == true && x.fld004311 == "成功" && (x.fld004316 == "A" || x.fld004316 == "M"))
.ToListAsync();
var groupedData = materialData.GroupBy(item => item.RecordGuid)
.Select(group => group.OrderByDescending(item => item.VersionIndex).First())
@ -569,7 +572,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
// 查询 BOM
var bomData = await _configurationDataRep.AsQueryable()
.Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync();
if (bomData.Count==0)
if (bomData.Count == 0)
{
continue;
}
@ -600,8 +603,8 @@ public class ProductManagementService : IDynamicApiController, ITransient
ZYFMK = bomItem.fld004941
};
itemDataList.Add(itemData);
}
}
// 获取时间戳精确到毫秒sap 要求每次调用生成不重复 guid
string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
var isreq = new IS_REQ
@ -645,7 +648,7 @@ public class ProductManagementService : IDynamicApiController, ITransient
var output = new SapOutput
{
parameter= apiOutput.parameter,
parameter = apiOutput.parameter,
materialCode = item._System_objNBS,
code = codeVal,
msg = msg,
@ -769,4 +772,124 @@ public class ProductManagementService : IDynamicApiController, ITransient
};
return output;
}
/// <summary>
/// 产品管理-定时同步工艺路线到SAP
/// </summary>
/// <returns></returns>
[ApiDescriptionSettings(Name = "TimingSyncToSAPProcessRoute"), HttpGet]
[DisplayName("产品管理-定时同步工艺路线到SAP")]
[AllowAnonymous]
public async Task<List<SapOutput>> TimingSyncToSAPProcessRoute()
{
var sapOutputList = new List<SapOutput>();
var sapUserName = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SapUserName);
// 配置
var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 110 && x.ConfigLabel == "pBOM").FirstAsync();
//查询需要同步的产品
var materialData = await _obj110Rep.AsQueryable()
.Where(x => x.CheckedStatus == false && x.deleted == false && x.IsLatestVersion == true && x.fld004311 == "成功" && (x.fld004320 == "A" || x.fld004320 == "M"))
.ToListAsync();
//分组查询最大版本的物料
var groupedData = materialData.GroupBy(item => item.RecordGuid)
.Select(group => group.OrderByDescending(item => item.VersionIndex).First())
.ToList();
foreach (var item in groupedData)
{
// 获取版本号
var versionIndex = item.VersionIndex;
// 查询 BOM
var processRouteData = await _configurationDataRep.AsQueryable()
.Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync();
if (processRouteData.Count == 0)
{
continue;
}
var itemDataList = new List<SapProcessRouteItemData>();
foreach (var processRouteItem in processRouteData)
{
var verification = await _dataValidationService.VerificationMaterial(processRouteItem.ChildObjID, processRouteItem.PartNumber, processRouteItem.ChildGuid);
if (verification == "不存在")
{
continue;
}
//获取工序描述
var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync();
//获取工作中心
var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync();
var itemData = new SapProcessRouteItemData()
{
VORNR = processRouteItem.Marker,
LTXA1 = procedureDescription[0]._System_ObjDescription,
ARBPL = workCenter[0]._System_objNBS,
VGW01 = processRouteItem.fld004994.ToString(),
VGE01 = processRouteItem.fld004995,
STEUS = processRouteItem.fld004996,
BMSCH = processRouteItem.fld005296.ToString()
};
itemDataList.Add(itemData);
}
//获取时间戳精确到毫秒sap要求每次调用生成不重复guid
string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
var Datuv = item.fld004945.ToString();
if (!string.IsNullOrEmpty(Datuv))
{
Datuv = item.fld004945.ToDateTime().ToString("yyyy-MM-dd");
}
var isreq = new SapProcessRouteIS_REQ()
{
ReqKeyId = "",
BusinessId = "",
MessageId = "",
SndPrn = "PLM",
RcvPrn = "SAP",
ReqUser = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SapUserName),
Note1 = "",
Note2 = "",
Note3 = "",
Zwbid = millisecondTimestamp,
Matnr = item._System_objNBS,
Werks = item.fld004325,
Datuv = Datuv,
Plnal = "",
ItemList = itemDataList
};
var apiOutput = await _sapService.SapProcessRouteApi(isreq);
string codeVal = apiOutput.code == "S" ? "成功" : "失败";
await _obj110Rep.AsUpdateable()
.SetColumns(it => new Obj110
{
fld004632 = DateTime.Now,
fld004319 = codeVal,
fld004320 = "N",
fld004321 = apiOutput.msg
})
.Where(it => it.idRecord == item.idRecord)
.ExecuteCommandAsync();
var msg = apiOutput.msg;
if (apiOutput.msg == "")
{
msg = "同步成功";
}
var output = new SapOutput()
{
parameter = apiOutput.parameter,
code = codeVal,
msg = msg,
result = apiOutput.result
};
sapOutputList.Add(output);
}
return sapOutputList;
}
}

View File

@ -158,8 +158,8 @@ public class ProjectManagementService : IDynamicApiController, ITransient
.SetColumns(it => new Obj109
{
fld004508 = DateTime.Now,
fld004507=msg,
fld004509=codeVal,
fld004507 = msg,
fld004509 = codeVal,
fld004510 = "N"
})
.Where(it => it.idRecord == input.idRecord)
@ -740,4 +740,122 @@ public class ProjectManagementService : IDynamicApiController, ITransient
return output;
}
/// <summary>
/// 项目管理-定时同步工艺路线到SAP
/// </summary>
/// <returns></returns>
[ApiDescriptionSettings(Name = "TimingSyncToSAPProcessRoute"), HttpGet]
[DisplayName("项目管理-定时同步工艺路线到SAP")]
[AllowAnonymous]
public async Task<List<SapOutput>> TimingSyncToSAPProcessRoute()
{
var sapOutputList = new List<SapOutput>();
var sapUserName = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SapUserName);
// 配置
var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 109 && x.ConfigLabel == "pBOM").FirstAsync();
//查询需要同步的产品
var materialData = await _obj109Rep.AsQueryable()
.Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.deleted == false && x.IsLatestVersion == true && x.fld005040 == "发布" && x.fld004511 == "成功" && (x.fld004514 == "A" || x.fld004514 == "M"))
.ToListAsync();
//分组查询最大版本的物料
var groupedData = materialData.GroupBy(item => item.RecordGuid)
.Select(group => group.OrderByDescending(item => item.VersionIndex).First())
.ToList();
foreach (var item in groupedData)
{
// 获取版本号
var versionIndex = item.VersionIndex;
// 查询 BOM
var processRouteData = await _configurationDataRep.AsQueryable()
.Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync();
if (processRouteData.Count == 0)
{
continue;
}
var itemDataList = new List<SapProcessRouteItemData>();
foreach (var processRouteItem in processRouteData)
{
var verification = await _dataValidationService.VerificationMaterial(processRouteItem.ChildObjID, processRouteItem.PartNumber, processRouteItem.ChildGuid);
if (verification == "不存在")
{
continue;
}
//获取工序描述
var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync();
//获取工作中心
var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync();
var itemData = new SapProcessRouteItemData()
{
VORNR = processRouteItem.Marker,
LTXA1 = procedureDescription[0]._System_ObjDescription,
ARBPL = workCenter[0]._System_objNBS,
VGW01 = processRouteItem.fld004994.ToString(),
VGE01 = processRouteItem.fld004995,
STEUS = processRouteItem.fld004996,
BMSCH = processRouteItem.fld005296.ToString()
};
itemDataList.Add(itemData);
}
//获取时间戳精确到毫秒sap要求每次调用生成不重复guid
string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
var Datuv = item.fld004949.ToString();
if (!string.IsNullOrEmpty(Datuv))
{
Datuv = item.fld004949.ToDateTime().ToString("yyyy-MM-dd");
}
var isreq = new SapProcessRouteIS_REQ()
{
ReqKeyId = "",
BusinessId = "",
MessageId = "",
SndPrn = "PLM",
RcvPrn = "SAP",
ReqUser = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SapUserName),
Note1 = "",
Note2 = "",
Note3 = "",
Zwbid = millisecondTimestamp,
Matnr = item._System_objNBS,
Werks = item.fld004522,
Datuv = Datuv,
Plnal = "",
ItemList = itemDataList
};
var apiOutput = await _sapService.SapProcessRouteApi(isreq);
string codeVal = apiOutput.code == "S" ? "成功" : "失败";
await _obj109Rep.AsUpdateable()
.SetColumns(it => new Obj109
{
fld004518 = DateTime.Now,
fld004515 = codeVal,
fld004517 = "N",
fld004516 = apiOutput.msg
})
.Where(it => it.idRecord == item.idRecord)
.ExecuteCommandAsync();
var msg = apiOutput.msg;
if (apiOutput.msg == "")
{
msg = "同步成功";
}
var output = new SapOutput()
{
parameter = apiOutput.parameter,
code = codeVal,
msg = msg,
result = apiOutput.result
};
sapOutputList.Add(output);
}
return sapOutputList;
}
}

View File

@ -0,0 +1,465 @@
<template>
<div class="projectManagement-container">
<el-card shadow="hover"
:body-style="{ padding: '20px 20px 16px 10px', display: 'flex', width: '100%', height: '100%', alignItems: 'start' }">
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true"
label-width="auto" style="flex: 1 1 0%" @submit.prevent="handleQuery">
<el-row :gutter="10">
<el-col :xs="24" :sm="12" :md="8" :lg="5" :xl="6" class="mb5">
<el-form-item label="项目编号" prop="_System_objNBS">
<el-input v-model="state.queryParams._System_objNBS" placeholder="项目编号" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="5" :xl="6" class="mb5">
<el-form-item label="项目描述" prop="fld004502">
<el-input v-model="state.queryParams.fld004502" placeholder="项目描述" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="5" :xl="6" class="mb5">
<el-form-item label="创建时间" prop="fld004683">
<el-date-picker type="daterange" v-model="state.queryParams.fld004683Range"
value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" unlink-panels />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5">
<el-button type="primary" icon="ele-Search" @click="handleQuery"
v-auth="'projectManagement/page'" :loading="options.loading"> 查询 </el-button>
<el-button icon="ele-Refresh" @click="resetQuery" :loading="options.loading"> 重置 </el-button>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_tools>
<el-button style="position: absolute; left: 0" icon="ele-Promotion" size="small" text=""
type="success" @click="batchSyncToSAP" v-auth="'projectManagement/batchSyncToSAP'"> 批量同步到SAP
</el-button>
</template>
<template #row_buttons="{ row }">
<el-tooltip content="同步BOM" placement="top">
<el-button icon="ele-MessageBox" size="small" text="" type="primary" @click="getBOM(row)"
v-auth="'projectManagement/getBOM'" v-if="(row.fld004514=='A'||row.fld004514=='M')&&row.fld004509=='成功'">
同步BOM </el-button>
</el-tooltip>
<el-tooltip content="工艺路线" placement="top">
<el-button icon="ele-MessageBox" size="small" text="" type="primary" @click="examineProcessRoute(row)"
v-if="(row.fld004517=='A'||row.fld004517=='M')&&row.fld004509=='成功'">
工艺路线 </el-button>
</el-tooltip>
<el-tooltip content="同步到ERP" placement="top">
<el-button icon="ele-Promotion" size="small" text="" type="success" @click="syncToSAP(row)"
v-auth="'projectManagement/syncToSAP'" v-if="row.fld004510=='A'||row.fld004510=='M'"> 同步到SAP </el-button>
</el-tooltip>
</template>
</vxe-grid>
</el-card>
<!-- 添加 drawer 抽屉 -->
<el-drawer v-model="showBom" title="BOM 详情" :direction="'rtl'" :visible.sync="false" size="50%">
<!-- 这里可以放置 BOM 的具体内容 -->
<el-card class="full-table" shadow="hover" style="margin-top: 5px;height: 100%;">
<el-form :model="stateBom.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true"
label-width="auto" style="flex: 1 1 0%" @submit.prevent="handleQueryBom">
<el-input v-model="stateBom.queryParams.ParentGuid" placeholder="父GUID" @click="handleQueryBom" />
</el-form>
<vxe-grid ref="bomxGrid" v-bind="bomOptions" v-on="gridEvents">
<template #toolbar_tools>
<el-button style="position: absolute; left: 0" icon="ele-Promotion" size="small" text=""
type="success" @click="syncToSAPBom" v-auth="'projectManagement/syncToSAPBom'"> BOM同步到SAP
</el-button>
</template>
</vxe-grid>
</el-card>
</el-drawer>
<el-drawer v-model="showProcessRoute" title="工艺路线" :direction="'rtl'" :visible.sync="false" size="50%">
<!-- 这里可以放置 BOM 的具体内容 -->
<el-card class="full-table" shadow="hover" style="margin-top: 5px;height: 100%;">
<el-form :model="stateProcessRoute.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true"
label-width="auto" style="flex: 1 1 0%" @submit.prevent="handleQueryProcessRoute">
<el-input v-model="stateProcessRoute.queryParams.ParentGuid" placeholder="父GUID" @click="handleQueryProcessRoute" />
</el-form>
<vxe-grid ref="processRoutexGrid" v-bind="processRouteOptions" v-on="gridEvents">
<template #toolbar_tools>
<el-button style="position: absolute; left: 0" icon="ele-Promotion" size="small" text=""
type="success" @click="syncToSAPprocessRoute" v-auth="'projectManagement/syncToSAPProcessRoute'"> 工艺路线同步到SAP
</el-button>
</template>
</vxe-grid>
</el-card>
</el-drawer>
</div>
</template>
<script lang="ts" setup name="projectManagement">
import { onMounted, reactive, ref } from 'vue';
import { ElMessageBox, ElMessage } from "element-plus";
import { auth } from '/@/utils/authFunction';
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import { Local } from '/@/utils/storage';
import { formatDate } from '/@/utils/formatTime';
import { PageProjectManagement, SyncToSAPProjectManagement, GetBOMProjectManagement, BatchSyncToSAPProjectManagement, SyncToSAPBomProjectManagement ,GetetProcessRouteProjectManagement,SyncToSAPProcessRouteProjectManagement} from '/@/api/materialManagement/projectManagement';
import { disable } from 'ol/rotationconstraint';
//
const xGrid = ref<VxeGridInstance>();
const editDialogRef = ref();
let bomTypeList: any;
//
const state = reactive({
showAdvanceQueryUI: false,
queryParams: {
searchKey: undefined,
_System_objNBS: undefined,
fld004502: undefined,
fld004683: undefined,
fld004683Range: undefined,
},
localPageParam: {
pageSize: 50 as number,
defaultSort: { field: 'createTime', order: 'asc', descStr: 'desc' },
},
visible: false,
title: '',
});
//
const resetQuery = async () => {
state.queryParams.searchKey = undefined,
state.queryParams._System_objNBS = undefined,
state.queryParams.fld004502 = undefined,
state.queryParams.fld004683 = undefined,
await xGrid.value?.commitProxy('reload');
};
//
const gridEvents: VxeGridListeners = {
// pager-config
async pageChange({ pageSize }) {
state.localPageParam.pageSize = pageSize;
Local.set(localPageParamKey, state.localPageParam);
},
//
async sortChange({ field, order }) {
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
Local.set(localPageParamKey, state.localPageParam);
},
};
//
const localPageParamKey = 'localPageParam:projectManagement';
//
const options = useVxeTable(
{
id: 'projectManagement',
name: '项目管理',
columns: [
{ type: 'checkbox', title: '', width: 60},
{ type: 'seq', title: '序号', width: 60 },
{ field: '_System_objNBS', title: '项目编号', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: '_System_ObjDescription', title: '项目名称', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004683', title: '创建时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004509', title: '物料同步状态', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004508', title: '物料同步时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004510', title: '物料同步标识', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004507', title: '物料同步信息', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004511', title: 'BOM同步状态', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004513', title: 'BOM同步时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004514', title: 'BOM同步标识', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004512', title: 'BOM同步信息', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004515', title: '工艺同步状态', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004518', title: '工艺同步时间', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004517', title: '工艺同步标识', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'fld004516', title: '工艺同步信息', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ title: '操作', fixed: 'right', width: 300, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
{
//
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
//
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
//
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
//
toolbarConfig: { export: false },
//
// rowConfig: { height: 80 },
}
);
//
onMounted(() => {
});
// api
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' });
var data = PageProjectManagement(params)
return data;
};
//
const handleQuery = async (reset = false) => {
options.loading = true;
await xGrid.value?.commitProxy('query');
options.loading = false;
};
// SAP
const syncToSAP = async (row: any) => {
options.loading = true;
ElMessageBox.confirm(`确定要同步物料吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
var data = await SyncToSAPProjectManagement(row);
await handleQuery();
if (data.data.result.code == "成功") {
ElMessage.success("同步成功");
} else {
ElMessage.error("同步失败");
}
})
.catch(() => { });
options.loading = false;
};
//SAP
const batchSyncToSAP = async () => {
options.loading = true;
var data = xGrid.value?.getCheckboxRecords();
ElMessageBox.confirm(`确定要批量同步物料吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
var output = await BatchSyncToSAPProjectManagement(data);
await handleQuery();
var succeed = 0;
var error = 0;
for (let i = 0; i < output.data.result.length; i++) {
var code = output.data.result[i].code
if (code == "成功") {
succeed++
} else {
error++
}
}
ElMessageBox.alert("同步成功:" + succeed + "" + "同步失败:" + error, '批量同步结果', {
//
// autofocus: false,
confirmButtonText: 'OK'
})
})
.catch(() => { });
options.loading = false;
}
//
const stateBom = reactive({
showAdvanceQueryUI: false,
queryParams: {
PartNumber: undefined,
Description: undefined,
ParentGuid: undefined
},
localPageParam: {
pageSize: 50 as number,
defaultSort: { field: 'createTime', order: 'asc', descStr: 'desc' },
},
visible: false,
title: '',
});
const showBom = ref(false);
// BOM
const getBOM = async (row: any) => {
stateBom.queryParams.ParentGuid = row.recordGuid;
showBom.value = true;
await handleQueryBom();
};
//
const localPageParamKeyBom = 'localPageParam:projectManagementBom';
//
const bomOptions = useVxeTable(
{
id: 'projectManagementBom',
name: '项目管理',
columns: [
{ type: 'seq', title: '序号', width: 60 },
{ field: 'partNumber', title: '物料编码', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'description', title: '物料描述', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'quantity', title: '数量', minWidth: 100, showOverflow: 'tooltip', sortable: false },
],
},
// vxeGrid()vxe-table
{
//
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleBOMQueryApi(page, sort) } },
//
sortConfig: { defaultSort: Local.get(localPageParamKeyBom)?.defaultSort || stateBom.localPageParam.defaultSort },
//
pagerConfig: { pageSize: Local.get(localPageParamKeyBom)?.pageSize || stateBom.localPageParam.pageSize },
//
toolbarConfig: { export: false },
//
// rowConfig: { height: 80 },
}
);
// BOM API
const handleBOMQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(stateBom.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' });
var data = GetBOMProjectManagement(params);
return data;
};
const bomxGrid = ref<VxeGridInstance>();
const handleQueryBom = async (reset = false) => {
bomOptions.loading = true;
await bomxGrid.value?.commitProxy('query');
bomOptions.loading = false;
};
//Bomsap
const syncToSAPBom = async () => {
options.loading = true;
var data = bomxGrid.value?.getTableData().fullData;
ElMessageBox.confirm(`确定要同步BOM吗`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
var output = await SyncToSAPBomProjectManagement(data);
await handleQuery();
if (output.data.result.code == "成功") {
ElMessage.success("同步成功");
} else {
ElMessage.error("同步失败");
}
})
.catch(() => { });
options.loading = false;
}
// 线
//Guid
const processRoutexGrid = ref<VxeGridInstance>();
// BOM
const examineProcessRoute = async (row: any) => {
stateProcessRoute.queryParams.ParentGuid = row.recordGuid;
showProcessRoute.value = true;
await handleQueryProcessRoute();
};
const showProcessRoute = ref(false);
//
const stateProcessRoute = reactive({
showAdvanceQueryUI: false,
queryParams: {
PartNumber: undefined,
Description: undefined,
ParentGuid: undefined
},
localPageParam: {
pageSize: 50 as number,
defaultSort: { field: 'createTime', order: 'asc', descStr: 'desc' },
},
visible: false,
title: '',
});
//
const localPageParamKeyProcessRoute = 'localPageParam:projectManagementProcessRoute';
//
const processRouteOptions = useVxeTable(
{
id: 'projectManagementProcessRoute',
name: '项目管理',
columns: [
{ type: 'seq', title: '序号', width: 60 },
{ field: 'partNumber', title: '物料编码', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'description', title: '物料描述', minWidth: 100, showOverflow: 'tooltip', sortable: false },
{ field: 'quantity', title: '数量', minWidth: 100, showOverflow: 'tooltip', sortable: false },
],
},
// vxeGrid()vxe-table
{
//
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleProcessRouteQueryApi(page, sort) } },
//
sortConfig: { defaultSort: Local.get(localPageParamKeyProcessRoute)?.defaultSort || stateBom.localPageParam.defaultSort },
//
pagerConfig: { pageSize: Local.get(localPageParamKeyProcessRoute)?.pageSize || stateBom.localPageParam.pageSize },
//
toolbarConfig: { export: false },
//
// rowConfig: { height: 80 },
}
);
// 线 API
const handleProcessRouteQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
const params = Object.assign(stateProcessRoute.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' });
var data = GetetProcessRouteProjectManagement(params);
return data;
};
const handleQueryProcessRoute = async (reset = false) => {
processRouteOptions.loading = true;
await processRoutexGrid.value?.commitProxy('query');
processRouteOptions.loading = false;
};
//线sap
const syncToSAPprocessRoute = async () => {
options.loading = true;
var data = processRoutexGrid.value?.getTableData().fullData;
ElMessageBox.confirm(`确定要同步工艺路线吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
var output = await SyncToSAPProcessRouteProjectManagement(data);
await handleQuery();
if (output.data.result.code == "成功") {
ElMessage.success("同步成功");
} else {
ElMessage.error("同步失败");
}
})
.catch(() => { });
options.loading = false;
}
</script>