FPSMS-frontend
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

139 строки
3.5 KiB

  1. import { serverFetchJson } from "@/app/utils/fetchUtil";
  2. import { BASE_API_URL } from "@/config/api";
  3. import { cache } from "react";
  4. import "server-only";
  5. export type ScheduleType = "all" | "rough" | "detailed" | "manual";
  6. // Rough
  7. export interface RoughProdScheduleResult {
  8. id: number;
  9. scheduleAt: number[];
  10. schedulePeriod: number[];
  11. schedulePeriodTo: number[];
  12. totalEstProdCount: number;
  13. totalFGType: number;
  14. type: string;
  15. prodScheduleLinesByFg: RoughProdScheduleLineResultByFg[];
  16. prodScheduleLinesByFgByDate: {
  17. [assignDate: number]: RoughProdScheduleLineResultByFg[];
  18. };
  19. prodScheduleLinesByBom: RoughProdScheduleLineResultByBom[];
  20. prodScheduleLinesByBomByDate: {
  21. [assignDate: number]: RoughProdScheduleLineResultByBomByDate[];
  22. };
  23. }
  24. export interface RoughProdScheduleLineResultByFg {
  25. id: number;
  26. code: string;
  27. name: string;
  28. type: string;
  29. availableQty: number;
  30. prodQty: number;
  31. uomName: string;
  32. lastMonthAvgSales: number;
  33. estCloseBal: number;
  34. priority: number;
  35. assignDate: number;
  36. bomMaterials: RoughProdScheduleLineBomMaterialResult[];
  37. }
  38. export interface RoughProdScheduleLineBomMaterialResult {
  39. id: number;
  40. code: string;
  41. name: string;
  42. type: string;
  43. availableQty: number;
  44. demandQty: number;
  45. uomName: string;
  46. }
  47. export interface RoughProdScheduleLineResultByBom {
  48. id: number;
  49. code: string;
  50. name: string;
  51. type: string;
  52. availableQty: number;
  53. totalDemandQty: number;
  54. demandQty1: number;
  55. demandQty2: number;
  56. demandQty3: number;
  57. demandQty4: number;
  58. demandQty5: number;
  59. demandQty6: number;
  60. demandQty7: number;
  61. uomName: string;
  62. }
  63. export interface RoughProdScheduleLineResultByBomByDate {
  64. id: number;
  65. code: string;
  66. name: string;
  67. type: string;
  68. availableQty: number;
  69. demandQty: number;
  70. assignDate: number;
  71. uomName: string;
  72. }
  73. // Detailed
  74. export interface DetailedProdScheduleResult {
  75. id: number;
  76. scheduleAt: number[];
  77. totalEstProdCount: number;
  78. totalFGType: number;
  79. prodScheduleLines: DetailedProdScheduleLineResult[];
  80. }
  81. export interface DetailedProdScheduleLineResult {
  82. id: number;
  83. bomMaterials: DetailedProdScheduleLineBomMaterialResult[];
  84. jobNo: string;
  85. code: string;
  86. name: string;
  87. type: string;
  88. demandQty: number;
  89. bomOutputQty: number;
  90. uomName: string;
  91. prodTimeInMinute: DetailedProdScheduleLineProdTimeResult[];
  92. priority: number;
  93. approved: boolean;
  94. proportion: number;
  95. }
  96. export interface DetailedProdScheduleLineBomMaterialResult {
  97. id: number;
  98. code: string;
  99. name: string;
  100. type: string;
  101. availableQty: number;
  102. demandQty: number;
  103. uomName: string;
  104. }
  105. export interface DetailedProdScheduleLineProdTimeResult {
  106. equipName: string;
  107. totalMinutes: number;
  108. }
  109. // API
  110. export const fetchRoughProdScheduleDetail = cache(async (id: number) => {
  111. return serverFetchJson<RoughProdScheduleResult>(`${BASE_API_URL}/productionSchedule/detail/rough/${id}`, {
  112. method: "GET",
  113. headers: { "Content-Type": "application/json" },
  114. next: {
  115. tags: ["prodSchedule"]
  116. }
  117. })
  118. })
  119. export const fetchDetailedProdScheduleDetail = cache(async (id: number) => {
  120. return serverFetchJson<DetailedProdScheduleResult>(`${BASE_API_URL}/productionSchedule/detail/detailed/${id}`, {
  121. method: "GET",
  122. headers: { "Content-Type": "application/json" },
  123. next: {
  124. tags: ["prodSchedule"]
  125. }
  126. })
  127. })