feat(forecast data): added in a historical forecast data set

This commit is contained in:
2025-11-01 00:05:01 -05:00
parent 2ed6bf4d1f
commit c2ae445ea4
7 changed files with 314 additions and 242 deletions

View File

@@ -8,10 +8,63 @@
* add_date
*/
type IncomingForecastData = {
CustomerArticleNumber: number;
};
import { db } from "../../../../pkg/db/db.js";
import {
type ForecastData,
forecastData,
forecastDataSchema,
} from "../../../../pkg/db/schema/forecastEDIData.js";
import { prodQuery } from "../../../../pkg/prodSql/prodQuery.js";
import { activeArticle } from "../../../../pkg/prodSql/querys/datamart/article.js";
import { tryCatch } from "../../../../pkg/utils/tryCatch.js";
export const forecastData = async (data: IncomingForecastData) => {
console.log(data);
export const forecastEdiData = async (data: ForecastData[]) => {
//console.log(data);
const { data: article, error } = await tryCatch(
prodQuery(activeArticle, "forecast data active articles"),
);
if (error) {
return {
success: false,
message: "Failed to get active articles",
error: error,
};
}
const forecaseEDIDATA = [];
for (let i = 0; i < data.length; i++) {
const activeAV = article?.data.filter(
(c: any) =>
c?.CustomerArticleNumber === data[i].customerArticleNo?.toString(),
);
const newData = data[i];
//console.log(activeAV[0].IdArtikelvarianten);
forecaseEDIDATA.push({
...newData,
article: activeAV[0].IdArtikelvarianten,
requirementDate: new Date(newData.requirementDate),
});
}
console.log(forecaseEDIDATA[0]);
const { data: f, error: ef } = await tryCatch(
db.insert(forecastData).values(forecaseEDIDATA),
);
if (ef) {
console.log(ef);
return {
success: false,
message: "There was an error posting the new data",
error: ef,
};
}
return {
success: true,
message: "All forecast Data was posted",
data: [],
};
};

View File

@@ -1,10 +1,12 @@
import type { Express, Request, Response } from "express";
import dm from "./routes/demandMgt/dmRoutes.js";
import labeling from "./routes/labeling/labelingRoutes.js";
import schedule from "./routes/scheduler/scheduleRoutes.js";
export const setupLogisticsRoutes = (app: Express, basePath: string) => {
app.use(basePath + "/api/logistics/schedule", schedule);
app.use(basePath + "/api/logistics/labeling", labeling);
app.use(basePath + "/api/logistics/dm", dm);
// app.use(
// basePath + "/api/admin/users",

View File

@@ -4,6 +4,6 @@ import forecastData from "./forecastEDIData.js";
const router = Router();
router.use("/", requireAuth(), forecastData);
router.use("/", forecastData);
export default router;

View File

@@ -1,7 +1,7 @@
import type { Request, Response } from "express";
import { Router } from "express";
import z from "zod";
import { preprintLabels } from "../../controller/labeling/preprint.js";
import { forecastEdiData } from "../../controller/demandManagement/forecastEDIData.js";
export const Preprint = z.object({
scannerId: z.number(),
@@ -15,13 +15,10 @@ export const Preprint = z.object({
const router = Router();
router.post("/preprint", async (req: Request, res: Response) => {
const parsed = Preprint.safeParse(req.body);
const print = await preprintLabels(req.body, req.user?.username || "");
router.post("/forecastData", async (req: Request, res: Response) => {
await forecastEdiData(req.body);
res
.status(200)
.json({ success: print.success, message: print.message, data: print.data });
res.status(200).json({ success: true, message: "Forecast Data", data: [] });
});
export default router;

View File

@@ -13,12 +13,11 @@ import { z } from "zod";
export const forecastData = pgTable("forecast_Data", {
id: uuid("id").defaultRandom().primaryKey(),
customerArticleNumber: text("customer_article_number"),
customerArticleNo: text("customer_article_no"),
dateRequested: timestamp("date_requested").defaultNow(),
quantity: real("quantity"),
requestDate: timestamp("request_date").notNull(),
requirementDate: timestamp("requirement_date").notNull(),
article: integer("article"),
customerID: integer("customer_id").notNull(),
createdAt: timestamp("created_at").defaultNow(),
});