'use strict'; const express = require('express'); const { getModularStockList, getModularStockFilters, getPurchaseInTransitList, syncModularStock, } = require('../services/modularStockMonitorService'); const router = express.Router(); function sendError(res, error, fallback) { const status = Number(error?.statusCode) || 500; console.error('[ModularStockMonitor]', { message: error?.message || fallback, code: error?.code || null, status, }); res.status(status).json({ success: false, error: error.message || fallback }); } // 配件库存监控明细列表(默认仅「简尚-崔桥工厂半成品包装项目仓」) router.get('/list', async (req, res) => { try { res.json({ success: true, data: await getModularStockList(req.query || {}) }); } catch (error) { sendError(res, error, '加载配件库存监控列表失败'); } }); // 筛选下拉选项(品类 / 预警等级) router.get('/filters', async (_req, res) => { try { res.json({ success: true, data: await getModularStockFilters() }); } catch (error) { sendError(res, error, '加载配件库存监控筛选选项失败'); } }); // 采购在途明细列表:目标仓全部「采购数量 > 已入库数量」的采购单明细 router.get('/purchase-in-transit', async (req, res) => { try { res.json({ success: true, data: await getPurchaseInTransitList(req.query || {}) }); } catch (error) { sendError(res, error, '加载采购在途明细失败'); } }); // 手动同步:重新取最新监控日,前端「同步」按钮调用后再拉一次列表即拿到最新快照 router.post('/sync', async (_req, res) => { try { res.json({ success: true, data: await syncModularStock() }); } catch (error) { sendError(res, error, '同步配件库存监控数据失败'); } }); module.exports = router;