@things-factory/operato-wms 4.3.759 → 4.3.761
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.
- package/client/pages/outbound/loading-v2/delivery-order-info.js +21 -7
- package/client/pages/outbound/loading-v2/loading-execution-base.js +37 -24
- package/client/pages/outbound/loading-v2/loading-execution.js +3 -1
- package/dist-server/graphql/resolvers/outbound/complete-load.js +8 -18
- package/dist-server/graphql/resolvers/outbound/complete-load.js.map +1 -1
- package/dist-server/graphql/resolvers/outbound/undo-load.js +2 -1
- package/dist-server/graphql/resolvers/outbound/undo-load.js.map +1 -1
- package/package.json +3 -3
- package/server/graphql/resolvers/outbound/complete-load.ts +8 -18
- package/server/graphql/resolvers/outbound/undo-load.ts +2 -1
|
@@ -106,7 +106,7 @@ class DeliveryOrderInfo extends localize(i18next)(LitElement) {
|
|
|
106
106
|
{
|
|
107
107
|
type: 'row',
|
|
108
108
|
content: [
|
|
109
|
-
{ header: 'Exp Date', field: 'expirationDate', type: 'string' },
|
|
109
|
+
{ header: 'Exp Date', field: 'inventory.expirationDate', type: 'string' },
|
|
110
110
|
{ header: 'Batch No', field: 'batchId', type: 'string' }
|
|
111
111
|
]
|
|
112
112
|
},
|
|
@@ -166,6 +166,11 @@ class DeliveryOrderInfo extends localize(i18next)(LitElement) {
|
|
|
166
166
|
|
|
167
167
|
async undoLoad() {
|
|
168
168
|
try {
|
|
169
|
+
// Validate data exists before proceeding
|
|
170
|
+
if (!this.data?.id) {
|
|
171
|
+
throw new Error('Delivery order data is not available')
|
|
172
|
+
}
|
|
173
|
+
|
|
169
174
|
const result = await CustomAlert({
|
|
170
175
|
title: i18next.t('title.are_you_sure'),
|
|
171
176
|
text: i18next.t('text.proceed_undo_loading'),
|
|
@@ -175,23 +180,31 @@ class DeliveryOrderInfo extends localize(i18next)(LitElement) {
|
|
|
175
180
|
|
|
176
181
|
if (!result.value) return
|
|
177
182
|
|
|
183
|
+
const doId = this.data.id
|
|
184
|
+
|
|
178
185
|
const response = await client.mutate({
|
|
179
186
|
mutation: gql`
|
|
180
187
|
mutation undoLoad($doId: String!) {
|
|
181
188
|
undoLoad(doId: $doId)
|
|
182
189
|
}
|
|
183
190
|
`,
|
|
184
|
-
variables: { doId
|
|
191
|
+
variables: { doId }
|
|
185
192
|
})
|
|
186
193
|
|
|
187
194
|
if (!response.errors) {
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
// Dispatch event with bubbles and composed to ensure proper propagation through shadow DOM
|
|
196
|
+
this.dispatchEvent(new CustomEvent('undo', {
|
|
197
|
+
detail: { doId },
|
|
198
|
+
bubbles: true,
|
|
199
|
+
composed: true
|
|
200
|
+
}))
|
|
201
|
+
// Small delay to allow event handler to process before closing popup
|
|
202
|
+
setTimeout(() => history.back(), 100)
|
|
190
203
|
} else {
|
|
191
204
|
throw new Error(response.errors[0]?.message || 'Failed to undo loading')
|
|
192
205
|
}
|
|
193
206
|
} catch (e) {
|
|
194
|
-
showToast(e)
|
|
207
|
+
showToast({ type: 'error', message: e.message || 'Failed to undo loading' })
|
|
195
208
|
}
|
|
196
209
|
}
|
|
197
210
|
|
|
@@ -215,8 +228,9 @@ class DeliveryOrderInfo extends localize(i18next)(LitElement) {
|
|
|
215
228
|
const groupedMap = new Map()
|
|
216
229
|
|
|
217
230
|
this.data.orderInventories.forEach(oi => {
|
|
218
|
-
// Create a unique key based on product details
|
|
219
|
-
const
|
|
231
|
+
// Create a unique key based on product details (expirationDate is on inventory relation)
|
|
232
|
+
const expirationDate = oi.inventory?.expirationDate || ''
|
|
233
|
+
const key = `${oi.product?.sku || ''}_${oi.batchId || ''}_${expirationDate}_${oi.packingType || ''}_${oi.packingSize || ''}`
|
|
220
234
|
|
|
221
235
|
if (groupedMap.has(key)) {
|
|
222
236
|
const existing = groupedMap.get(key)
|
|
@@ -562,9 +562,13 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
562
562
|
this.fetchData(orderNoForQc, 'qc', useQcSkuForFetch),
|
|
563
563
|
this.fetchData(orderNoForQc, 'loading', useQcSkuForFetch)
|
|
564
564
|
])
|
|
565
|
+
|
|
566
|
+
// QC tab: items that still need QC (sortedQty != pickedQty)
|
|
565
567
|
this.qcData = qcData.filter(data => data?.sortedQty != data?.pickedQty) || []
|
|
568
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
566
569
|
this.loadingData =
|
|
567
|
-
loadingData.filter(data => data?.sortedQty
|
|
570
|
+
loadingData.filter(data => data?.sortedQty >= data?.pickedQty && data.status != WORKSHEET_STATUS.DONE.value) || []
|
|
571
|
+
|
|
568
572
|
// Check seal status when opening QC tab (needed for Tote button visibility)
|
|
569
573
|
await this._checkAndUpdateSealStatus()
|
|
570
574
|
// Update button visibility after fetching QC data (which updates _hasRefWorksheetId)
|
|
@@ -585,10 +589,9 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
585
589
|
// Filter to only show items for the currently selected release order AND from this bin
|
|
586
590
|
// Note: FIND_LOADABLE_RELEASE_GOOD_BY_BIN returns OrderInventory status ('LOADED'),
|
|
587
591
|
// not WorksheetDetail status ('DONE'), so we filter by 'LOADED'
|
|
592
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
588
593
|
this.loadingData = (binData || []).filter(
|
|
589
|
-
data =>
|
|
590
|
-
data?.status !== 'LOADED' &&
|
|
591
|
-
data?.releaseGood?.name === this._currentReleaseGood.releaseGood.name
|
|
594
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== 'LOADED' && data?.releaseGood?.name === this._currentReleaseGood.releaseGood.name
|
|
592
595
|
)
|
|
593
596
|
}
|
|
594
597
|
|
|
@@ -619,11 +622,13 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
619
622
|
}
|
|
620
623
|
}
|
|
621
624
|
} else {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
625
|
+
const rawLoadingData = await this.fetchData(this.worksheet?.releaseGood?.name, 'loading', this._useQcSku)
|
|
626
|
+
|
|
627
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
628
|
+
this.loadingData = (rawLoadingData || []).filter(
|
|
629
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== WORKSHEET_STATUS.DONE.value
|
|
626
630
|
)
|
|
631
|
+
|
|
627
632
|
// Refresh tabCounts when switching to LOADING tab
|
|
628
633
|
if (this._currentReleaseGood?.releaseGood?.name || this.worksheet?.releaseGood?.name) {
|
|
629
634
|
const orderNo = this._currentReleaseGood?.releaseGood?.name || this.worksheet?.releaseGood?.name
|
|
@@ -778,14 +783,15 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
778
783
|
|
|
779
784
|
// Filter to only show items for the selected release order from this bin
|
|
780
785
|
// Note: FIND_LOADABLE_RELEASE_GOOD_BY_BIN returns OrderInventory status ('LOADED')
|
|
786
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
781
787
|
this.loadingData = (binData || []).filter(
|
|
782
|
-
data => data?.status !== 'LOADED' && data?.releaseGood?.name === selectedRO.name
|
|
788
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== 'LOADED' && data?.releaseGood?.name === selectedRO.name
|
|
783
789
|
)
|
|
784
790
|
} else {
|
|
785
791
|
this.loadingData = await this.fetchData(selectedRO.name, 'loading', false)
|
|
786
|
-
//
|
|
792
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
787
793
|
this.loadingData = (this.loadingData || []).filter(
|
|
788
|
-
data => data?.status !== WORKSHEET_STATUS.DONE.value
|
|
794
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== WORKSHEET_STATUS.DONE.value
|
|
789
795
|
)
|
|
790
796
|
}
|
|
791
797
|
} else if (finalTabName === TAB_TYPES.LOADED) {
|
|
@@ -807,21 +813,22 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
807
813
|
data?.releaseGood?.name === selectedRO.name
|
|
808
814
|
)
|
|
809
815
|
// Also fetch loading data for banner
|
|
816
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
810
817
|
let binLoadingData = await this.fetchData(this.worksheet.binLocationName, 'loading', true)
|
|
811
818
|
this.loadingData = (binLoadingData || []).filter(
|
|
812
819
|
data =>
|
|
813
|
-
data?.sortedQty
|
|
814
|
-
data?.status !== 'LOADED' &&
|
|
815
|
-
data?.releaseGood?.name === selectedRO.name
|
|
820
|
+
data?.sortedQty >= data?.pickedQty && data?.status !== 'LOADED' && data?.releaseGood?.name === selectedRO.name
|
|
816
821
|
)
|
|
817
822
|
} else {
|
|
818
823
|
const [qcData, loadingData] = await Promise.all([
|
|
819
824
|
this.fetchData(selectedRO.name, 'qc', this._useQcSku),
|
|
820
825
|
this.fetchData(selectedRO.name, 'loading', this._useQcSku)
|
|
821
826
|
])
|
|
827
|
+
// QC tab: items that still need QC (sortedQty < pickedQty)
|
|
822
828
|
this.qcData = qcData.filter(data => data?.sortedQty < data?.pickedQty) || []
|
|
829
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
823
830
|
this.loadingData =
|
|
824
|
-
loadingData.filter(data => data?.sortedQty
|
|
831
|
+
loadingData.filter(data => data?.sortedQty >= data?.pickedQty && data.status != WORKSHEET_STATUS.DONE.value) || []
|
|
825
832
|
}
|
|
826
833
|
// fetchData updates _hasRefWorksheetId, so update buttons after data is fetched
|
|
827
834
|
}
|
|
@@ -881,9 +888,11 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
881
888
|
)
|
|
882
889
|
}
|
|
883
890
|
|
|
891
|
+
// QC tab: items that still need QC (sortedQty < pickedQty)
|
|
884
892
|
this.qcData = this.worksheetDetails.filter(data => data?.sortedQty < data?.pickedQty) || []
|
|
893
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
885
894
|
this.loadingData =
|
|
886
|
-
this.worksheetDetails.filter(data => data?.sortedQty
|
|
895
|
+
this.worksheetDetails.filter(data => data?.sortedQty >= data?.pickedQty && data.status != WORKSHEET_STATUS.DONE.value) || []
|
|
887
896
|
this.loadedData = this.deliveryOrdersInfo || []
|
|
888
897
|
|
|
889
898
|
this._executionData = {
|
|
@@ -998,15 +1007,16 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
998
1007
|
let binData = await this.fetchData(this.worksheet.binLocationName, 'loading', true)
|
|
999
1008
|
// Filter to only show items for the selected release order from this bin
|
|
1000
1009
|
// Note: FIND_LOADABLE_RELEASE_GOOD_BY_BIN returns OrderInventory status ('LOADED')
|
|
1010
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
1001
1011
|
this.loadingData = (binData || []).filter(
|
|
1002
|
-
data => data?.status !== 'LOADED' && data?.releaseGood?.name === orderNo
|
|
1012
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== 'LOADED' && data?.releaseGood?.name === orderNo
|
|
1003
1013
|
)
|
|
1004
1014
|
} else {
|
|
1005
1015
|
// Standard mode: fetch by release order name
|
|
1006
1016
|
this.loadingData = await this.fetchData(orderNo, 'loading', false)
|
|
1007
|
-
//
|
|
1017
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
1008
1018
|
this.loadingData = (this.loadingData || []).filter(
|
|
1009
|
-
data => data?.status !== WORKSHEET_STATUS.DONE.value
|
|
1019
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== WORKSHEET_STATUS.DONE.value
|
|
1010
1020
|
)
|
|
1011
1021
|
}
|
|
1012
1022
|
}
|
|
@@ -1250,9 +1260,11 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
1250
1260
|
this.fetchData(orderNoForRefresh, 'loading', useQcSkuForRefresh)
|
|
1251
1261
|
])
|
|
1252
1262
|
|
|
1263
|
+
// QC tab: items that still need QC (sortedQty < pickedQty)
|
|
1253
1264
|
this.qcData = qcData.filter(data => data?.sortedQty < data?.pickedQty) || []
|
|
1265
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
1254
1266
|
this.loadingData =
|
|
1255
|
-
loadingData.filter(data => data?.sortedQty
|
|
1267
|
+
loadingData.filter(data => data?.sortedQty >= data?.pickedQty && data.status != WORKSHEET_STATUS.DONE.value) || []
|
|
1256
1268
|
|
|
1257
1269
|
// Update QC banner state after data changes
|
|
1258
1270
|
if (this._updateQcBannerState) {
|
|
@@ -1339,7 +1351,7 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
1339
1351
|
const response = await client.mutate({
|
|
1340
1352
|
mutation: COMPLETE_LOAD,
|
|
1341
1353
|
variables: {
|
|
1342
|
-
orderId: this._currentReleaseGood?.releaseGood.
|
|
1354
|
+
orderId: this._currentReleaseGood?.releaseGood.name,
|
|
1343
1355
|
worksheetId: this._executionData.worksheetId
|
|
1344
1356
|
}
|
|
1345
1357
|
})
|
|
@@ -1426,7 +1438,7 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
1426
1438
|
const response = await client.mutate({
|
|
1427
1439
|
mutation: COMPLETE_LOAD_PARTIALLY,
|
|
1428
1440
|
variables: {
|
|
1429
|
-
orderId: this._currentReleaseGood?.releaseGood.
|
|
1441
|
+
orderId: this._currentReleaseGood?.releaseGood.name,
|
|
1430
1442
|
worksheetId: this._executionData.worksheetId
|
|
1431
1443
|
}
|
|
1432
1444
|
})
|
|
@@ -1503,9 +1515,9 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
1503
1515
|
@warehouse-return=${async e => {
|
|
1504
1516
|
showToast({ type: 'success', message: 'Returning worksheet generated' })
|
|
1505
1517
|
this.loadingData = await this.fetchData(this.worksheet?.releaseGood?.name, 'loading', this._useQcSku)
|
|
1506
|
-
//
|
|
1518
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
1507
1519
|
this.loadingData = (this.loadingData || []).filter(
|
|
1508
|
-
data => data?.status !== WORKSHEET_STATUS.DONE.value
|
|
1520
|
+
data => data?.sortedQty >= data?.pickedQty && data?.status !== WORKSHEET_STATUS.DONE.value
|
|
1509
1521
|
)
|
|
1510
1522
|
}}
|
|
1511
1523
|
></warehouse-return-popup>
|
|
@@ -1569,6 +1581,7 @@ export class LoadingExecutionBase extends LitElement {
|
|
|
1569
1581
|
}
|
|
1570
1582
|
|
|
1571
1583
|
const worksheetDetailInfos = response.data.loadingWorksheetv2.worksheetDetailInfos
|
|
1584
|
+
|
|
1572
1585
|
// Check if any order inventory has refWorksheetId
|
|
1573
1586
|
this._hasRefWorksheetId = worksheetDetailInfos.some(
|
|
1574
1587
|
item => item?.relatedOrderInv?.refWorksheetId != null && item?.relatedOrderInv?.refWorksheetId !== ''
|
|
@@ -424,9 +424,11 @@ export class LoadingExecution extends LoadingExecutionBase {
|
|
|
424
424
|
}
|
|
425
425
|
|
|
426
426
|
// Filter data for different tabs
|
|
427
|
+
// QC tab: items that still need QC (sortedQty < pickedQty)
|
|
427
428
|
this.qcData = processedDetails.filter(data => data?.sortedQty < data?.pickedQty && data.status !== 'LOADED') || []
|
|
429
|
+
// Loading tab: items that have completed QC (sortedQty >= pickedQty) and are not yet loaded
|
|
428
430
|
this.loadingData =
|
|
429
|
-
processedDetails.filter(data => data?.sortedQty
|
|
431
|
+
processedDetails.filter(data => data?.sortedQty >= data?.pickedQty && data.status != WORKSHEET_STATUS.DONE.value) || []
|
|
430
432
|
this.loadedData = this.deliveryOrdersInfo || []
|
|
431
433
|
|
|
432
434
|
// Update execution data
|
|
@@ -25,30 +25,20 @@ exports.completeLoad = {
|
|
|
25
25
|
};
|
|
26
26
|
async function completeLoading(domain, tx, user, partial, orderId, worksheetId) {
|
|
27
27
|
var _a, _b, _c;
|
|
28
|
-
// Fetch release order
|
|
28
|
+
// Fetch release order - optimized to reduce DB locks (14 relations → 4 relations)
|
|
29
|
+
// - orderProducts re-fetched at line 200 with fresh relations
|
|
30
|
+
// - deliveryOrders re-fetched at line 109
|
|
31
|
+
// - Only load essential relations needed before those re-fetches
|
|
32
|
+
console.time('completeLoading - fetch releaseGood');
|
|
29
33
|
const releaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
|
|
30
34
|
where: {
|
|
31
|
-
|
|
35
|
+
name: orderId,
|
|
32
36
|
domain: domain,
|
|
33
37
|
status: (0, typeorm_1.In)([sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PARTIAL_PROCESSING])
|
|
34
38
|
},
|
|
35
|
-
relations: [
|
|
36
|
-
'domain',
|
|
37
|
-
'bizplace',
|
|
38
|
-
'bizplace.domain',
|
|
39
|
-
'creator',
|
|
40
|
-
'updater',
|
|
41
|
-
'orderInventories',
|
|
42
|
-
'lastMileDelivery',
|
|
43
|
-
'orderProducts',
|
|
44
|
-
'orderProducts.product',
|
|
45
|
-
'orderProducts.productDetail',
|
|
46
|
-
'deliveryOrders',
|
|
47
|
-
'deliveryOrders.orderInventories',
|
|
48
|
-
'deliveryOrders.orderInventories.productDetail',
|
|
49
|
-
'deliveryOrders.orderInventories.product'
|
|
50
|
-
]
|
|
39
|
+
relations: ['bizplace', 'bizplace.domain', 'orderInventories', 'lastMileDelivery']
|
|
51
40
|
});
|
|
41
|
+
console.timeEnd('completeLoading - fetch releaseGood');
|
|
52
42
|
if (!releaseGood) {
|
|
53
43
|
throw new Error('Release good not found or not in a valid status');
|
|
54
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/complete-load.ts"],"names":[],"mappings":";;;AAAA,qCAAuD;AAEvD,yDAAiE;AACjE,2DAUmC;AACnC,mEAA6G;AAC7G,qEAA+D;AAC/D,2EAA2D;AAC3D,+DAAsD;AACtD,uEAAoF;AAEpF,SAAS,mBAAmB,CAAC,KAAU;IACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,GAAG,EAAE,EAAE,CAAC,CAAA;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAEY,QAAA,YAAY,GAAG;IAC1B,KAAK,CAAC,YAAY,CAAC,CAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAY;QAC/D,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,CAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAY;QACxE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IACtE,CAAC;CACF,CAAA;AAED,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,EAAiB,EACjB,IAAU,EACV,OAAgB,EAChB,OAAe,EACf,WAAmB;;IAEnB,
|
|
1
|
+
{"version":3,"file":"complete-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/complete-load.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,8 @@ exports.undoLoad = {
|
|
|
28
28
|
targetInventory: { id: (0, typeorm_1.In)(doInventoryIds) },
|
|
29
29
|
type: worksheet_base_1.WORKSHEET_TYPE.LOADING,
|
|
30
30
|
status: worksheet_base_1.WORKSHEET_STATUS.DONE
|
|
31
|
-
}
|
|
31
|
+
},
|
|
32
|
+
relations: ['targetInventory']
|
|
32
33
|
});
|
|
33
34
|
// Create a map for O(1) lookup of worksheet details by targetInventory.id
|
|
34
35
|
const wsdByTargetId = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/undo-load.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,2DAAkG;AAGlG,mEAAgH;AAChH,mEAAkG;AAErF,QAAA,QAAQ,GAAG;IACtB,KAAK,CAAC,QAAQ,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAY;QAC3C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,MAAM,aAAa,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,OAAO,CAAC;YACjF,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3B,SAAS,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,aAAa,EAAE,8BAA8B,CAAC;SAC7G,CAAC,CAAA;QAEF,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAA;QAC7C,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAA;QAEpD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAa,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC9D,OAAO,IAAI,CAAA;SACZ;QAED,sFAAsF;QACtF,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACrD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,IAAI,CAAC;YACpE,KAAK,EAAE;gBACL,eAAe,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,cAAc,CAAC,EAAE;gBAC3C,IAAI,EAAE,+BAAc,CAAC,OAAO;gBAC5B,MAAM,EAAE,iCAAgB,CAAC,IAAI;aAC9B;
|
|
1
|
+
{"version":3,"file":"undo-load.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/undo-load.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/operato-wms",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.761",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"@things-factory/transport-base": "^4.3.755",
|
|
109
109
|
"@things-factory/tutorial-ui": "^4.3.755",
|
|
110
110
|
"@things-factory/warehouse-base": "^4.3.755",
|
|
111
|
-
"@things-factory/worksheet-base": "^4.3.
|
|
111
|
+
"@things-factory/worksheet-base": "^4.3.761"
|
|
112
112
|
},
|
|
113
113
|
"devDependencies": {
|
|
114
114
|
"@things-factory/builder": "^4.3.755",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"cypress-localstorage-commands": "^1.6.1",
|
|
118
118
|
"eslint-plugin-cypress": "^2.12.1"
|
|
119
119
|
},
|
|
120
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "ed2c237b4da43cdb1f9902ab9bfc6fbadb1cc53a"
|
|
121
121
|
}
|
|
@@ -45,31 +45,21 @@ async function completeLoading(
|
|
|
45
45
|
orderId: String,
|
|
46
46
|
worksheetId: String
|
|
47
47
|
) {
|
|
48
|
-
// Fetch release order
|
|
48
|
+
// Fetch release order - optimized to reduce DB locks (14 relations → 4 relations)
|
|
49
|
+
// - orderProducts re-fetched at line 200 with fresh relations
|
|
50
|
+
// - deliveryOrders re-fetched at line 109
|
|
51
|
+
// - Only load essential relations needed before those re-fetches
|
|
52
|
+
console.time('completeLoading - fetch releaseGood')
|
|
49
53
|
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
50
54
|
where: {
|
|
51
|
-
|
|
55
|
+
name: orderId,
|
|
52
56
|
domain: domain,
|
|
53
57
|
status: In([ORDER_STATUS.LOADING, ORDER_STATUS.PROCESSING, ORDER_STATUS.PARTIAL_PROCESSING])
|
|
54
58
|
},
|
|
55
|
-
relations: [
|
|
56
|
-
'domain',
|
|
57
|
-
'bizplace',
|
|
58
|
-
'bizplace.domain',
|
|
59
|
-
'creator',
|
|
60
|
-
'updater',
|
|
61
|
-
'orderInventories',
|
|
62
|
-
'lastMileDelivery',
|
|
63
|
-
'orderProducts',
|
|
64
|
-
'orderProducts.product',
|
|
65
|
-
'orderProducts.productDetail',
|
|
66
|
-
'deliveryOrders',
|
|
67
|
-
'deliveryOrders.orderInventories',
|
|
68
|
-
'deliveryOrders.orderInventories.productDetail',
|
|
69
|
-
'deliveryOrders.orderInventories.product'
|
|
70
|
-
]
|
|
59
|
+
relations: ['bizplace', 'bizplace.domain', 'orderInventories', 'lastMileDelivery']
|
|
71
60
|
})
|
|
72
61
|
|
|
62
|
+
console.timeEnd('completeLoading - fetch releaseGood')
|
|
73
63
|
if (!releaseGood) {
|
|
74
64
|
throw new Error('Release good not found or not in a valid status')
|
|
75
65
|
}
|
|
@@ -33,7 +33,8 @@ export const undoLoad = {
|
|
|
33
33
|
targetInventory: { id: In(doInventoryIds) },
|
|
34
34
|
type: WORKSHEET_TYPE.LOADING,
|
|
35
35
|
status: WORKSHEET_STATUS.DONE
|
|
36
|
-
}
|
|
36
|
+
},
|
|
37
|
+
relations: ['targetInventory']
|
|
37
38
|
})
|
|
38
39
|
|
|
39
40
|
// Create a map for O(1) lookup of worksheet details by targetInventory.id
|