@yjzf/mcp-server-yjzf 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/index.js +14 -2
  2. package/dist/index.js.map +1 -1
  3. package/dist/tools/contract/investment_contract.d.ts +10 -2
  4. package/dist/tools/contract/investment_contract.d.ts.map +1 -1
  5. package/dist/tools/contract/investment_contract.js +32 -86
  6. package/dist/tools/contract/investment_contract.js.map +1 -1
  7. package/dist/tools/contract/lease_sale_contract_export.js +2 -2
  8. package/dist/tools/contract/lease_sale_contract_export.js.map +1 -1
  9. package/dist/tools/contract/new_house_contract_export.js +2 -2
  10. package/dist/tools/contract/new_house_contract_export.js.map +1 -1
  11. package/dist/tools/data/count_all_statement.d.ts +18 -15
  12. package/dist/tools/data/count_all_statement.d.ts.map +1 -1
  13. package/dist/tools/data/count_all_statement.js +170 -271
  14. package/dist/tools/data/count_all_statement.js.map +1 -1
  15. package/dist/tools/data/investment_follow_up_export.d.ts +30 -0
  16. package/dist/tools/data/investment_follow_up_export.d.ts.map +1 -0
  17. package/dist/tools/data/investment_follow_up_export.js +131 -0
  18. package/dist/tools/data/investment_follow_up_export.js.map +1 -0
  19. package/dist/tools/data/investment_opportunities_export.d.ts +22 -0
  20. package/dist/tools/data/investment_opportunities_export.d.ts.map +1 -0
  21. package/dist/tools/data/investment_opportunities_export.js +105 -0
  22. package/dist/tools/data/investment_opportunities_export.js.map +1 -0
  23. package/dist/tools/data/new_house_competitor_data_export.d.ts +36 -0
  24. package/dist/tools/data/new_house_competitor_data_export.d.ts.map +1 -0
  25. package/dist/tools/data/new_house_competitor_data_export.js +177 -0
  26. package/dist/tools/data/new_house_competitor_data_export.js.map +1 -0
  27. package/dist/tools/data/new_house_project_data_export.d.ts +35 -0
  28. package/dist/tools/data/new_house_project_data_export.d.ts.map +1 -0
  29. package/dist/tools/data/new_house_project_data_export.js +166 -0
  30. package/dist/tools/data/new_house_project_data_export.js.map +1 -0
  31. package/dist/tools/data/platform_prospects_export.d.ts +34 -0
  32. package/dist/tools/data/platform_prospects_export.d.ts.map +1 -0
  33. package/dist/tools/data/platform_prospects_export.js +157 -0
  34. package/dist/tools/data/platform_prospects_export.js.map +1 -0
  35. package/dist/tools/data/public_business_opportunities_export.d.ts +24 -0
  36. package/dist/tools/data/public_business_opportunities_export.d.ts.map +1 -0
  37. package/dist/tools/data/public_business_opportunities_export.js +107 -0
  38. package/dist/tools/data/public_business_opportunities_export.js.map +1 -0
  39. package/dist/tools/data/statement_query.d.ts +5 -1
  40. package/dist/tools/data/statement_query.d.ts.map +1 -1
  41. package/dist/tools/data/statement_query.js +207 -27
  42. package/dist/tools/data/statement_query.js.map +1 -1
  43. package/dist/tools/data/switch_store_management_export.d.ts +24 -0
  44. package/dist/tools/data/switch_store_management_export.d.ts.map +1 -0
  45. package/dist/tools/data/switch_store_management_export.js +102 -0
  46. package/dist/tools/data/switch_store_management_export.js.map +1 -0
  47. package/dist/tools/house/umai_good_house_export.d.ts.map +1 -1
  48. package/dist/tools/house/umai_good_house_export.js +4 -0
  49. package/dist/tools/house/umai_good_house_export.js.map +1 -1
  50. package/dist/tools/util/date_to_timestamp.d.ts.map +1 -1
  51. package/dist/tools/util/date_to_timestamp.js +10 -1
  52. package/dist/tools/util/date_to_timestamp.js.map +1 -1
  53. package/dist/tools/util/get_current_time.d.ts.map +1 -1
  54. package/dist/tools/util/get_current_time.js +8 -2
  55. package/dist/tools/util/get_current_time.js.map +1 -1
  56. package/dist/utils/env.js +1 -1
  57. package/dist/utils/env.js.map +1 -1
  58. package/dist/utils/excel.d.ts +14 -0
  59. package/dist/utils/excel.d.ts.map +1 -1
  60. package/dist/utils/excel.js +35 -0
  61. package/dist/utils/excel.js.map +1 -1
  62. package/package.json +1 -1
@@ -7,14 +7,20 @@ export const schema = {
7
7
  export async function handler() {
8
8
  const now = new Date();
9
9
  const timestamp = now.getTime();
10
- const formattedTime = now.toISOString();
10
+ // 计算北京时间分量:UTC 时间 + 8 小时偏移,再用 getUTC* 取值
11
+ const BEIJING_OFFSET_MS = 8 * 60 * 60 * 1000;
12
+ const bj = new Date(timestamp + BEIJING_OFFSET_MS);
13
+ const pad = (n) => String(n).padStart(2, "0");
14
+ const beijingTime = `${bj.getUTCFullYear()}-${pad(bj.getUTCMonth() + 1)}-${pad(bj.getUTCDate())} ${pad(bj.getUTCHours())}:${pad(bj.getUTCMinutes())}:${pad(bj.getUTCSeconds())} (UTC+8)`;
15
+ const beijingDate = `${bj.getUTCFullYear()}${pad(bj.getUTCMonth() + 1)}${pad(bj.getUTCDate())}`;
11
16
  return {
12
17
  content: [
13
18
  {
14
19
  type: "text",
15
20
  text: JSON.stringify({
16
21
  timestamp: timestamp,
17
- formattedTime: formattedTime,
22
+ formattedTime: beijingTime,
23
+ beijingDate: beijingDate,
18
24
  }, null, 2),
19
25
  },
20
26
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"get_current_time.js","sourceRoot":"","sources":["../../../src/tools/util/get_current_time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,WAAW,EAAE,yCAAyC;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAExC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,aAAa,EAAE,aAAa;iBAC7B,EAAE,IAAI,EAAE,CAAC,CAAC;aACZ;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get_current_time.js","sourceRoot":"","sources":["../../../src/tools/util/get_current_time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,WAAW,EAAE,yCAAyC;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAEhC,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC;IACzL,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IAEhG,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,aAAa,EAAE,WAAW;oBAC1B,WAAW,EAAE,WAAW;iBACzB,EAAE,IAAI,EAAE,CAAC,CAAC;aACZ;SACF;KACF,CAAC;AACJ,CAAC"}
package/dist/utils/env.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as path from "node:path";
2
2
  import * as os from "node:os";
3
3
  export function getDataDir() {
4
- const envDir = process.env.DATA_DIR;
4
+ const envDir = process.env.YJZF_DATA_DIR || process.env.DATA_DIR;
5
5
  if (envDir) {
6
6
  return envDir;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,sBAAsB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,eAAwB,IAAI;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,yBAAyB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,OAAO,GAAG,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,sBAAsB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,eAAwB,IAAI;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,yBAAyB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,OAAO,GAAG,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AACzF,CAAC"}
@@ -8,6 +8,20 @@ export interface SheetDef {
8
8
  * @param fileName 文件名(含扩展名,如 "2026-04-21_xxx.xlsx")
9
9
  */
10
10
  export declare function saveWorkbook(sheets: SheetDef[], fileName: string): string;
11
+ /**
12
+ * 将 ERP 返回的 OLE2(.xls)二进制 Buffer 转换为真正的 Office Open XML(.xlsx)Buffer。
13
+ * ERP 返回文件头为 D0 CF 11 E0,必须用此函数转换后才能以 .xlsx 扩展名保存。
14
+ * @returns { xlsxBuffer, isEmpty } isEmpty=true 表示第一个 sheet 无数据行(只有表头或完全空)
15
+ */
16
+ export declare function convertOle2ToXlsx(ole2Buffer: Buffer): {
17
+ xlsxBuffer: Buffer;
18
+ isEmpty: boolean;
19
+ };
20
+ /**
21
+ * 检查已保存到磁盘的 .xlsx 文件是否无数据行(只有表头或完全空)。
22
+ * 用于异步轮询下载后的文件检测(如 umai_good_house_export)。
23
+ */
24
+ export declare function isXlsxEmpty(filePath: string): boolean;
11
25
  /**
12
26
  * 毫秒时间戳转 YYYY-MM-DD hh:mm:ss 格式字符串
13
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"excel.d.ts","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;CAC7B;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczE;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASlD"}
1
+ {"version":3,"file":"excel.d.ts","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;CAC7B;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczE;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAc9F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQrD;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASlD"}
@@ -23,6 +23,41 @@ export function saveWorkbook(sheets, fileName) {
23
23
  return filePath;
24
24
  }
25
25
  // ---------------------------------------------------------------------------
26
+ // OLE2 → xlsx 格式转换
27
+ // ---------------------------------------------------------------------------
28
+ /**
29
+ * 将 ERP 返回的 OLE2(.xls)二进制 Buffer 转换为真正的 Office Open XML(.xlsx)Buffer。
30
+ * ERP 返回文件头为 D0 CF 11 E0,必须用此函数转换后才能以 .xlsx 扩展名保存。
31
+ * @returns { xlsxBuffer, isEmpty } isEmpty=true 表示第一个 sheet 无数据行(只有表头或完全空)
32
+ */
33
+ export function convertOle2ToXlsx(ole2Buffer) {
34
+ const workbook = xlsx.read(ole2Buffer, { type: "buffer" });
35
+ // 检查第一个 sheet 是否有数据行(行数 > 1 表示有表头+数据)
36
+ const firstSheetName = workbook.SheetNames[0];
37
+ const isEmpty = !firstSheetName || (() => {
38
+ const sheet = workbook.Sheets[firstSheetName];
39
+ const range = xlsx.utils.decode_range(sheet["!ref"] ?? "A1:A1");
40
+ // range.e.r 是最后一行索引(0-based),0 表示只有1行(表头),-1 表示完全空
41
+ return range.e.r <= 0;
42
+ })();
43
+ const xlsxBuffer = xlsx.write(workbook, { type: "buffer", bookType: "xlsx" });
44
+ return { xlsxBuffer, isEmpty };
45
+ }
46
+ /**
47
+ * 检查已保存到磁盘的 .xlsx 文件是否无数据行(只有表头或完全空)。
48
+ * 用于异步轮询下载后的文件检测(如 umai_good_house_export)。
49
+ */
50
+ export function isXlsxEmpty(filePath) {
51
+ const buffer = fs.readFileSync(filePath);
52
+ const workbook = xlsx.read(buffer, { type: "buffer" });
53
+ const firstSheetName = workbook.SheetNames[0];
54
+ if (!firstSheetName)
55
+ return true;
56
+ const sheet = workbook.Sheets[firstSheetName];
57
+ const range = xlsx.utils.decode_range(sheet["!ref"] ?? "A1:A1");
58
+ return range.e.r <= 0;
59
+ }
60
+ // ---------------------------------------------------------------------------
26
61
  // 时间格式化
27
62
  // ---------------------------------------------------------------------------
28
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"excel.js","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAWtC,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,QAAgB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"excel.js","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yjzf/mcp-server-yjzf",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "MCP Server for YJZF",
5
5
  "type": "module",
6
6
  "bin": {