add route to get suggested swap
This commit is contained in:
parent
6bee5571dc
commit
3492c802b9
40
index.js
40
index.js
@ -134,6 +134,46 @@ server.get('/scenario_package', bodyParser.json(), function(req, res) {
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
server.get('/swap_fit', bodyParser.json(), function(req, res) {
|
||||||
|
|
||||||
|
var sql = "";
|
||||||
|
var w = "";
|
||||||
|
var c = 1;
|
||||||
|
var d = 1;
|
||||||
|
var args = [];
|
||||||
|
var path = './route_sql/swap_fit.sql';
|
||||||
|
|
||||||
|
fs.readFile(path, 'utf8', function(err, data) {
|
||||||
|
if (!err) {
|
||||||
|
callback(data);
|
||||||
|
} else {
|
||||||
|
console.log("fatal error pulling sql file")
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var callback = function(arg) {
|
||||||
|
sql = arg;
|
||||||
|
|
||||||
|
//parse request body into a where clause
|
||||||
|
({ c, w, d } = build_where(req, c, w, d, args));
|
||||||
|
|
||||||
|
//if there was no body sent, return with nothing
|
||||||
|
if (c == 1) {
|
||||||
|
res.send("no body was sent");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(new Date().toISOString() + "-------------------------get swap fit:------------------------------")
|
||||||
|
console.log(req.body);
|
||||||
|
//parse the where clause into the main sql statement
|
||||||
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
||||||
|
sql = sql.replace(new RegExp("replace_new_mold", 'g'), req.body.new_mold);
|
||||||
|
//execute the sql and send the result
|
||||||
|
console.log(sql);
|
||||||
|
Postgres.FirstRow(sql, [], res)
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
server.get('/list_changes', bodyParser.json(), function(req, res) {
|
server.get('/list_changes', bodyParser.json(), function(req, res) {
|
||||||
|
|
||||||
var sql = "";
|
var sql = "";
|
||||||
|
71
route_sql/swap_fit.sql
Normal file
71
route_sql/swap_fit.sql
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
WITH
|
||||||
|
target AS (select replace_new_mold new_mold)
|
||||||
|
,basemix AS (
|
||||||
|
SELECT
|
||||||
|
part,
|
||||||
|
stlc,
|
||||||
|
colc,
|
||||||
|
colgrp,
|
||||||
|
coltier,
|
||||||
|
sizc,
|
||||||
|
SUM(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
rlarp.osm_pool o
|
||||||
|
LEFT OUTER JOIN rlarp.itemmv i ON
|
||||||
|
i.item = o.part
|
||||||
|
WHERE
|
||||||
|
-----------------scenario----------------------------
|
||||||
|
where_clause
|
||||||
|
-----------------additional params-------------------
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND order_date <= ship_date
|
||||||
|
GROUP BY
|
||||||
|
part,
|
||||||
|
stlc,
|
||||||
|
colc,
|
||||||
|
colgrp,
|
||||||
|
coltier,
|
||||||
|
sizc
|
||||||
|
)
|
||||||
|
--SELECT * FROM basemix
|
||||||
|
,tag AS (
|
||||||
|
SELECT
|
||||||
|
b.part
|
||||||
|
,b.value_usd
|
||||||
|
--,b.stlc
|
||||||
|
--,b.sizc
|
||||||
|
--,b.colgrp
|
||||||
|
--,b.coltier
|
||||||
|
--,b.colc
|
||||||
|
,i.item
|
||||||
|
,CASE WHEN b.sizc = i.sizc THEN '1' ELSE '0' END||
|
||||||
|
CASE WHEN i.aplnt = 'I' THEN '0' ELSE '1' END||
|
||||||
|
CASE WHEN b.colgrp = i.colgrp THEN '1' ELSE '0' END||
|
||||||
|
CASE WHEN b.coltier = i.coltier THEN '1' ELSE '0' END||
|
||||||
|
CASE WHEN b.colc = i.colc THEN '1' ELSE '0' END||
|
||||||
|
CASE WHEN substring(b.part,9,12) = substring(i.item,9,12) THEN '1' ELSE 0 END fit
|
||||||
|
FROM
|
||||||
|
basemix b
|
||||||
|
LEFT OUTER JOIN rlarp.itemmv i ON
|
||||||
|
i.stlc = (SELECT new_mold FROM target)
|
||||||
|
)
|
||||||
|
--SELECT * FROM tag
|
||||||
|
,rsort AS (
|
||||||
|
SELECT
|
||||||
|
part,
|
||||||
|
value_usd,
|
||||||
|
item swap,
|
||||||
|
fit,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY tag.part ORDER BY fit DESC) ranked
|
||||||
|
FROM
|
||||||
|
tag
|
||||||
|
ORDER BY
|
||||||
|
part
|
||||||
|
,fit desc
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
json_agg(row_to_json(rsort)) x
|
||||||
|
FROM
|
||||||
|
rsort
|
||||||
|
WHERE
|
||||||
|
ranked = 1
|
Loading…
Reference in New Issue
Block a user