feat(ocmeserver): the server was just migrated so it can be upgraded to lstv2
This commit is contained in:
78
server/services/ocmeServer/laneUpdate/configureLanes.ts
Normal file
78
server/services/ocmeServer/laneUpdate/configureLanes.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
// import {runQuery} from "../utils/sql/config/sqlConfig.js";
|
||||
// /**
|
||||
// * 1. Copy the Setup.xml to the desktop.
|
||||
// * 2. run the createJson script.
|
||||
// * 3. get the alplaprod lanes with this query select IdLagerAbteilung as id,Bezeichnung as name from [dbo].[V_LagerAbteilungen] where IdWarenLager not in (6,5) and aktiv = 1
|
||||
// * 4. convert this to a json
|
||||
// *
|
||||
// * in the ocme data we want grab the section in each section called "clsParkingRow" this is inside the RowList. thenjust copy the array into the lanes.
|
||||
// *
|
||||
// */
|
||||
// export const lanes = [];
|
||||
|
||||
// export const prodNames = [];
|
||||
// const combinedInfo = [];
|
||||
// const updatedLanesWithNames = lanes.map((l) => {
|
||||
// //filter the prodnames out
|
||||
// if (l.CustomerKey === "") {
|
||||
// return;
|
||||
// }
|
||||
// const names = prodNames.filter((v) => v.id === l.CustomerKey);
|
||||
|
||||
// if (names) {
|
||||
// //console.log({...l, laneName: names[0]?.name});
|
||||
// combinedInfo.push({...l, laneName: names[0]?.name});
|
||||
// }
|
||||
// });
|
||||
|
||||
// // get the skey from ocme
|
||||
// const matcheverything = async () => {
|
||||
// const query = `select SKEY as ocme_laneLevelID, id_row, id_park from [Agv_AlplaDayton].[dbo].[Park] where id_park in (4,3)`;
|
||||
|
||||
// const ocmeData = await runQuery(query, "lanes");
|
||||
|
||||
// //console.log(ocmeData)
|
||||
|
||||
// const ocmeToSend = [];
|
||||
// const correctOcmeData = ocmeData.map((o) => {
|
||||
// // filter out the prod lanes
|
||||
// const prodInfo = combinedInfo.filter((f) => f.Id === o.id_row && f.ParkId === o.id_park);
|
||||
|
||||
// if (prodInfo.length === 0) {
|
||||
// return;
|
||||
// }
|
||||
// if (prodInfo) {
|
||||
// ocmeToSend.push({...o, laneName: prodInfo[0].laneName, laneId: prodInfo[0].CustomerKey});
|
||||
// }
|
||||
// });
|
||||
|
||||
// function delay(ms) {
|
||||
// return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
// }
|
||||
|
||||
// //console.log(ocmeToSend)
|
||||
// for (let i = 0; i < ocmeToSend.length; i++) {
|
||||
// let updateQuery = `
|
||||
// MERGE INTO [Alpla_Lst].[dbo].[lanes] AS target
|
||||
// USING (SELECT '${ocmeToSend[i].ocme_laneLevelID}' AS ocme_laneLevelID, ${ocmeToSend[i].laneId} AS alpla_laneID, '${ocmeToSend[i].laneName}' AS alpla_laneDescription, getdate() as upd_date) AS source
|
||||
// ON target.ocme_laneLevelID LIKE source.ocme_laneLevelID
|
||||
// WHEN MATCHED THEN
|
||||
// UPDATE SET target.alpla_laneID = source.alpla_laneID,
|
||||
// target.alpla_laneDescription = source.alpla_laneDescription,
|
||||
// target.upd_date = source.upd_date
|
||||
// WHEN NOT MATCHED BY TARGET THEN
|
||||
// INSERT (ocme_laneLevelID, alpla_laneID, alpla_laneDescription, upd_date)
|
||||
// VALUES (source.ocme_laneLevelID, source.alpla_laneID, source.alpla_laneDescription, source.upd_date);
|
||||
// `;
|
||||
|
||||
// const queryRan = await runQuery(updateQuery, "running");
|
||||
// console.log(
|
||||
// `${ocmeToSend[i].ocme_laneLevelID} just updated in park ${ocmeToSend[i].id_park}, remaining to update ${
|
||||
// ocmeToSend.length - i
|
||||
// }`
|
||||
// );
|
||||
// await delay(150);
|
||||
// }
|
||||
// };
|
||||
|
||||
// matcheverything();
|
||||
55
server/services/ocmeServer/laneUpdate/createJson.ts
Normal file
55
server/services/ocmeServer/laneUpdate/createJson.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
// import fs from "fs";
|
||||
// import {XMLParser} from "fast-xml-parser";
|
||||
// //const xmlData = fs.readFileSync('C:\\Users\\adm_matthes01\\Desktop\\Setup.xml', 'utf8');
|
||||
|
||||
// // Read the XML file as a string
|
||||
// const xmlData = fs.readFileSync("C:\\Users\\adm_matthes01\\Desktop\\Setup.xml", "utf8");
|
||||
|
||||
// // Create a parser instance with options
|
||||
// const parser = new XMLParser({
|
||||
// ignoreAttributes: false, // Keep attributes in JSON
|
||||
// attributeNamePrefix: "@_", // Prefix for attributes
|
||||
// allowBooleanAttributes: true,
|
||||
// trimValues: true,
|
||||
// parseTagValue: true,
|
||||
// parseAttributeValue: true,
|
||||
// });
|
||||
|
||||
// // Parse the XML into a JSON object
|
||||
// const jsonObj = parser.parse(xmlData);
|
||||
|
||||
// // Convert JSON object to a formatted string
|
||||
// const jsonString = JSON.stringify(jsonObj.clsAGVManagerProject.ParkingList, null, 2);
|
||||
|
||||
// // Write the JSON to a file
|
||||
// fs.writeFileSync("large.json", jsonString, "utf8");
|
||||
|
||||
// console.log("JSON saved to large.json");
|
||||
|
||||
// fs.readFile("large.json", "utf8", (err, data) => {
|
||||
// if (err) {
|
||||
// console.error(err);
|
||||
// return;
|
||||
// }
|
||||
// const json = JSON.parse(data);
|
||||
// //console.log(JSON.stringify(json[0].RowList, null, 2));
|
||||
|
||||
// const rowUpates = [];
|
||||
// const updates = json.clsParking.map((i) => {
|
||||
// // i.RowList.clsParkingRow.map(r =>{
|
||||
// // rowUpates.push({id: r.Id, CustomerKey: r.CustomerKey})
|
||||
// // })
|
||||
// //console.log({id: i.Id,name: i. Name, lanes: i.RowList.clsParkingRow })
|
||||
// rowUpates.push({id: i.Id, name: i.Name, lanes: i.RowList.clsParkingRow});
|
||||
// });
|
||||
// //console.log(Object.keys(json.clsAGVManagerProject.PalletCardConfigList. ParkingList.clsParking));
|
||||
|
||||
// //console.log(rowUpates)
|
||||
// for (var i = 0; i <= 1; i++) {
|
||||
// const laneID = {ID_ROW: rowUpates[i].lanes};
|
||||
|
||||
// if (laneID) {
|
||||
// console.log(laneID.Id);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
18
server/services/ocmeServer/ocmeServerService.ts
Normal file
18
server/services/ocmeServer/ocmeServerService.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
// import express from 'express'
|
||||
// import cors from "cors";
|
||||
|
||||
// import getLanes from './route/getLanes.js'
|
||||
// import getLaneData from './route/getLaneData.js'
|
||||
// const port = 3250
|
||||
|
||||
// const app = express()
|
||||
|
||||
// app.use(express.json());
|
||||
// app.use(cors({origin: true, credentials: true}));
|
||||
|
||||
// app.use('/api/v1', getLanes)
|
||||
// app.use('/api/v1', getLaneData)
|
||||
|
||||
// app.listen(port, ()=>{
|
||||
// console.log(`Listing on port: ${port}`)
|
||||
// })
|
||||
38
server/services/ocmeServer/routes/getLaneData.ts
Normal file
38
server/services/ocmeServer/routes/getLaneData.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
// import {Router} from 'express'
|
||||
// import { runQuery } from '../utils/sql/config/sqlConfig.js'
|
||||
// import { ocmeInventory } from '../utils/sql/querys/getOCMEInventory.js'
|
||||
|
||||
// const router = Router()
|
||||
|
||||
// router.post('/getLaneData', async (req,res)=>{
|
||||
|
||||
// let filterdOCMELane
|
||||
// // the body will need to have 1 lane in it. lane: 'B050'
|
||||
// const data = req.body
|
||||
|
||||
// // add the lane in so we dont crash
|
||||
// if(req.body.lane){
|
||||
// filterdOCMELane = ocmeInventory.replaceAll('[lane]', data.lane)
|
||||
// // get lanes
|
||||
// const laneData = await runQuery(filterdOCMELane, 'Getting current ocme lanes linked')
|
||||
// res.status(200).json({success: true,message: `All current lanes from the ocme system.`, totalpallets: laneData.length,data: laneData})
|
||||
// return
|
||||
// }
|
||||
|
||||
// // if the plant sends the id over lets change the entire where statement.
|
||||
|
||||
// if(req.body.laneID){
|
||||
// console.log(`Getting the lane data by id`)
|
||||
// filterdOCMELane = ocmeInventory.replaceAll(`alpla_laneDescription = '[lane]'`, `alpla_laneID = ${data.laneID}`)
|
||||
// // get lanes
|
||||
// const laneData = await runQuery(filterdOCMELane, 'Getting current ocme lanes linked')
|
||||
// res.status(200).json({success: true,message: `All current lanes from the ocme system.`, totalpallets: laneData.length,data: laneData})
|
||||
// return
|
||||
// }
|
||||
|
||||
// // if everything is missing we send false
|
||||
// res.status(200).json({success: false,message: `Missing either lane name or lane id.`})
|
||||
|
||||
// })
|
||||
|
||||
// export default router
|
||||
15
server/services/ocmeServer/routes/getLanes.ts
Normal file
15
server/services/ocmeServer/routes/getLanes.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
// import {Router} from 'express'
|
||||
// import { runQuery } from '../utils/sql/config/sqlConfig.js'
|
||||
// import { getLanes } from '../utils/sql/querys/getLanes.js'
|
||||
|
||||
// const router = Router()
|
||||
|
||||
// router.get('/getLanes', async (req,res)=>{
|
||||
// // get lanes
|
||||
// const lanes = await runQuery(getLanes, 'Getting current ocme lanes linked')
|
||||
|
||||
// const laneDescriptions = lanes.map(item => item.alpla_laneDescription);
|
||||
// res.status(200).json({success: true,message: `All current lanes from the ocme system.`, totalLanes: lanes.length,data: laneDescriptions})
|
||||
// })
|
||||
|
||||
// export default router
|
||||
24
server/services/sqlServer/querys/ocme/getOcmeInventory.ts
Normal file
24
server/services/sqlServer/querys/ocme/getOcmeInventory.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export const ocmeInventory = `
|
||||
SELECT [ocme_laneLevelID]
|
||||
,[alpla_laneID]
|
||||
,[alpla_laneDescription]
|
||||
,bob.SKU as Article
|
||||
,bob.description
|
||||
,bob.sscc
|
||||
,bob.runningNumber
|
||||
FROM [Alpla_Lst].[dbo].[lanes] (nolock) a
|
||||
|
||||
left JOIN
|
||||
(Select p.SKEY,
|
||||
x.y.value('(value)[1]', 'varchar(max)') AS sscc,
|
||||
b.y.value('(value)[1]', 'varchar(max)') AS runningNumber,
|
||||
k.l.value('(value)[1]', 'varchar(max)') AS SKU,
|
||||
d.l.value('(value)[1]', 'varchar(max)') AS description
|
||||
from Agv_AlplaDayton.dbo.Park p (nolock)
|
||||
outer apply p.pallet_card.nodes('/*:ArrayOfClsPalletCard/*:clsPalletCard/*:PalletCardConfig/*:palletCardFieldList/*:clsPalletCardField[Name="SSCC"]') as x(y)
|
||||
outer apply p.pallet_card.nodes('/*:ArrayOfClsPalletCard/*:clsPalletCard/*:PalletCardConfig/*:palletCardFieldList/*:clsPalletCardField[Name="RUNNING_NUMBER"]') as b(y)
|
||||
outer apply p.pallet_card.nodes('/*:ArrayOfClsPalletCard/*:clsPalletCard/*:PalletCardConfig/*:palletCardFieldList/*:clsPalletCardField[Name= "SKU" ]') as k(l)
|
||||
outer apply p.pallet_card.nodes('/*:ArrayOfClsPalletCard/*:clsPalletCard/*:PalletCardConfig/*:palletCardFieldList/*:clsPalletCardField[Name= "DESCRIPTION" ]') as d(l)) as bob
|
||||
on a.ocme_laneLevelID = bob.SKEY
|
||||
where alpla_laneDescription = '[lane]' and runningNumber > 1
|
||||
`;
|
||||
6
server/services/sqlServer/querys/ocme/getOcmeLanes.ts
Normal file
6
server/services/sqlServer/querys/ocme/getOcmeLanes.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const getLanes = `
|
||||
select DISTINCT alpla_laneDescription
|
||||
from Alpla_Lst.dbo.lanes (nolock)
|
||||
where alpla_laneDescription is not null
|
||||
order by alpla_laneDescription desc
|
||||
`;
|
||||
48
server/services/sqlServer/utils/ocmeServerConfig.ts
Normal file
48
server/services/sqlServer/utils/ocmeServerConfig.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import sql from "mssql";
|
||||
|
||||
// hardcoding everything to make sure it all works as intended
|
||||
const server = "usday1vms010";
|
||||
const dbUser = "ocme";
|
||||
const dbPassword = "Democrat-Humongous";
|
||||
|
||||
export const sqlConfig_ocme = {
|
||||
server: server,
|
||||
database: `Alpla_lst`,
|
||||
user: dbUser,
|
||||
password: dbPassword,
|
||||
options: {
|
||||
encrypt: true,
|
||||
trustServerCertificate: true,
|
||||
},
|
||||
requestTimeout: 90000, // in milliseconds
|
||||
// ocmePool: {
|
||||
// max: 20, // Maximum number of connections in the pool
|
||||
// min: 0, // Minimum number of connections in the pool
|
||||
// idleTimeoutMillis: 10000, // How long a connection is allowed to be idle before being released
|
||||
// reapIntervalMillis: 1000, // how often to check for idle resourses to destory
|
||||
// acquireTimeoutMillis: 100000, // How long until a complete timeout happens
|
||||
// },
|
||||
};
|
||||
|
||||
export async function runQuery(queryToRun: string, name: string) {
|
||||
let connection;
|
||||
try {
|
||||
// Establish a direct connection to the different server
|
||||
connection = await sql.connect(sqlConfig_ocme);
|
||||
|
||||
// Execute the query
|
||||
const result = await connection.request().query(queryToRun);
|
||||
console.log(`${name} query ran successfully on different server`);
|
||||
|
||||
return result.recordset;
|
||||
} catch (err) {
|
||||
console.log(`Error running ${name} query on different server: ${err}`);
|
||||
|
||||
return [];
|
||||
} finally {
|
||||
// Close the direct connection
|
||||
if (connection) {
|
||||
await connection.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user