Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -583,6 +583,7 @@ WHERE l.OrderHeaderID = @p%d;
|
|||||||
chunkStart := time.Now()
|
chunkStart := time.Now()
|
||||||
res, execErr := tx.Exec(query, args...)
|
res, execErr := tx.Exec(query, args...)
|
||||||
if execErr != nil {
|
if execErr != nil {
|
||||||
|
log.Printf("[UpdateOrderLinesTx] ERROR orderHeaderID=%s chunk=%d-%d err=%v", orderHeaderID, i, end, execErr)
|
||||||
return updated, fmt.Errorf("update lines chunk failed chunkStart=%d chunkEnd=%d duration_ms=%d: %w", i, end, time.Since(chunkStart).Milliseconds(), execErr)
|
return updated, fmt.Errorf("update lines chunk failed chunkStart=%d chunkEnd=%d duration_ms=%d: %w", i, end, time.Since(chunkStart).Milliseconds(), execErr)
|
||||||
}
|
}
|
||||||
log.Printf("[UpdateOrderLinesTx] orderHeaderID=%s chunk=%d-%d duration_ms=%d", orderHeaderID, i, end, time.Since(chunkStart).Milliseconds())
|
log.Printf("[UpdateOrderLinesTx] orderHeaderID=%s chunk=%d-%d duration_ms=%d", orderHeaderID, i, end, time.Since(chunkStart).Milliseconds())
|
||||||
@@ -784,10 +785,10 @@ func ValidateProductionBarcodePlan(q sqlQueryRower, variants []models.OrderProdu
|
|||||||
return validations, nil
|
return validations, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpsertItemBarcodesTx(tx *sql.Tx, orderHeaderID string, lines []models.OrderProductionUpdateLine, username string) (int64, error) {
|
func InsertItemBarcodesTx(tx *sql.Tx, orderHeaderID string, lines []models.OrderProductionUpdateLine, username string) (int64, error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
if len(lines) == 0 {
|
if len(lines) == 0 {
|
||||||
log.Printf("[UpsertItemBarcodesTx] lines=0 inserted=0 duration_ms=0")
|
log.Printf("[InsertItemBarcodesTx] lines=0 inserted=0 duration_ms=0")
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -805,7 +806,7 @@ func UpsertItemBarcodesTx(tx *sql.Tx, orderHeaderID string, lines []models.Order
|
|||||||
lineIDs = append(lineIDs, lineID)
|
lineIDs = append(lineIDs, lineID)
|
||||||
}
|
}
|
||||||
if len(lineIDs) == 0 {
|
if len(lineIDs) == 0 {
|
||||||
log.Printf("[UpsertItemBarcodesTx] lines=%d uniqueLineIDs=0 inserted=0 duration_ms=%d", len(lines), time.Since(start).Milliseconds())
|
log.Printf("[InsertItemBarcodesTx] lines=%d uniqueLineIDs=0 inserted=0 duration_ms=%d", len(lines), time.Since(start).Milliseconds())
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,7 +834,6 @@ func UpsertItemBarcodesTx(tx *sql.Tx, orderHeaderID string, lines []models.Order
|
|||||||
args = append(args, orderHeaderID, username)
|
args = append(args, orderHeaderID, username)
|
||||||
|
|
||||||
query := fmt.Sprintf(`
|
query := fmt.Sprintf(`
|
||||||
SET NOCOUNT ON;
|
|
||||||
;WITH srcLine (OrderLineID) AS (
|
;WITH srcLine (OrderLineID) AS (
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM (VALUES %s) AS v (OrderLineID)
|
FROM (VALUES %s) AS v (OrderLineID)
|
||||||
@@ -865,14 +865,14 @@ missing AS (
|
|||||||
) AS RowNo
|
) AS RowNo
|
||||||
FROM src s
|
FROM src s
|
||||||
LEFT JOIN dbo.prItemBarcode b WITH (UPDLOCK, HOLDLOCK)
|
LEFT JOIN dbo.prItemBarcode b WITH (UPDLOCK, HOLDLOCK)
|
||||||
ON UPPER(LTRIM(RTRIM(ISNULL(b.BarcodeTypeCode, '')))) = 'BAGGI3'
|
ON b.BarcodeTypeCode = 'BAGGI3'
|
||||||
|
AND b.UnitOfMeasureCode = 'AD'
|
||||||
AND b.ItemTypeCode = s.ItemTypeCode
|
AND b.ItemTypeCode = s.ItemTypeCode
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemCode, '')))) = s.ItemCode
|
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemCode, '')))) = s.ItemCode
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.ColorCode, '')))) = s.ColorCode
|
AND UPPER(LTRIM(RTRIM(ISNULL(b.ColorCode, '')))) = s.ColorCode
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim1Code, '')))) = s.ItemDim1Code
|
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim1Code, '')))) = s.ItemDim1Code
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim2Code, '')))) = s.ItemDim2Code
|
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim2Code, '')))) = s.ItemDim2Code
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim3Code, '')))) = s.ItemDim3Code
|
AND UPPER(LTRIM(RTRIM(ISNULL(b.ItemDim3Code, '')))) = s.ItemDim3Code
|
||||||
AND UPPER(LTRIM(RTRIM(ISNULL(b.UnitOfMeasureCode, '')))) = 'AD'
|
|
||||||
WHERE b.Barcode IS NULL
|
WHERE b.Barcode IS NULL
|
||||||
)
|
)
|
||||||
INSERT INTO dbo.prItemBarcode (
|
INSERT INTO dbo.prItemBarcode (
|
||||||
@@ -912,6 +912,7 @@ FROM missing m
|
|||||||
CROSS JOIN (
|
CROSS JOIN (
|
||||||
SELECT ISNULL(MAX(TRY_CONVERT(BIGINT, NULLIF(LTRIM(RTRIM(Barcode)), ''))), 0) AS MaxBarcode
|
SELECT ISNULL(MAX(TRY_CONVERT(BIGINT, NULLIF(LTRIM(RTRIM(Barcode)), ''))), 0) AS MaxBarcode
|
||||||
FROM dbo.prItemBarcode WITH (UPDLOCK, HOLDLOCK)
|
FROM dbo.prItemBarcode WITH (UPDLOCK, HOLDLOCK)
|
||||||
|
WHERE TRY_CONVERT(BIGINT, NULLIF(LTRIM(RTRIM(Barcode)), '')) IS NOT NULL
|
||||||
) seed;
|
) seed;
|
||||||
|
|
||||||
SELECT @@ROWCOUNT AS Inserted;
|
SELECT @@ROWCOUNT AS Inserted;
|
||||||
@@ -920,14 +921,15 @@ SELECT @@ROWCOUNT AS Inserted;
|
|||||||
chunkStart := time.Now()
|
chunkStart := time.Now()
|
||||||
var chunkInserted int64
|
var chunkInserted int64
|
||||||
if err := tx.QueryRow(query, args...).Scan(&chunkInserted); err != nil {
|
if err := tx.QueryRow(query, args...).Scan(&chunkInserted); err != nil {
|
||||||
|
log.Printf("[InsertItemBarcodesTx] ERROR orderHeaderID=%s chunk=%d-%d err=%v", orderHeaderID, i, end, err)
|
||||||
return inserted, fmt.Errorf("upsert item barcodes chunk failed chunkStart=%d chunkEnd=%d duration_ms=%d: %w", i, end, time.Since(chunkStart).Milliseconds(), err)
|
return inserted, fmt.Errorf("upsert item barcodes chunk failed chunkStart=%d chunkEnd=%d duration_ms=%d: %w", i, end, time.Since(chunkStart).Milliseconds(), err)
|
||||||
}
|
}
|
||||||
inserted += chunkInserted
|
inserted += chunkInserted
|
||||||
log.Printf("[UpsertItemBarcodesTx] orderHeaderID=%s chunk=%d-%d chunkInserted=%d cumulative=%d duration_ms=%d",
|
log.Printf("[InsertItemBarcodesTx] orderHeaderID=%s chunk=%d-%d chunkInserted=%d cumulative=%d duration_ms=%d",
|
||||||
orderHeaderID, i, end, chunkInserted, inserted, time.Since(chunkStart).Milliseconds())
|
orderHeaderID, i, end, chunkInserted, inserted, time.Since(chunkStart).Milliseconds())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[UpsertItemBarcodesTx] orderHeaderID=%s lines=%d uniqueLineIDs=%d inserted=%d duration_ms=%d",
|
log.Printf("[InsertItemBarcodesTx] orderHeaderID=%s lines=%d uniqueLineIDs=%d inserted=%d duration_ms=%d",
|
||||||
orderHeaderID, len(lines), len(lineIDs), inserted, time.Since(start).Milliseconds())
|
orderHeaderID, len(lines), len(lineIDs), inserted, time.Since(start).Milliseconds())
|
||||||
return inserted, nil
|
return inserted, nil
|
||||||
}
|
}
|
||||||
@@ -1018,12 +1020,14 @@ SELECT (@updated + @inserted) AS Affected;
|
|||||||
`, strings.Join(values, ","), usernameParam, strings.Join(values, ","), usernameParam, usernameParam)
|
`, strings.Join(values, ","), usernameParam, strings.Join(values, ","), usernameParam, usernameParam)
|
||||||
|
|
||||||
var chunkAffected int64
|
var chunkAffected int64
|
||||||
|
chunkStart := time.Now()
|
||||||
if err := tx.QueryRow(query, args...).Scan(&chunkAffected); err != nil {
|
if err := tx.QueryRow(query, args...).Scan(&chunkAffected); err != nil {
|
||||||
return affected, err
|
log.Printf("[UpsertItemAttributesTx] ERROR chunk=%d-%d err=%v", i, end, err)
|
||||||
|
return affected, fmt.Errorf("upsert item attributes chunk failed chunkStart=%d chunkEnd=%d duration_ms=%d: %w", i, end, time.Since(chunkStart).Milliseconds(), err)
|
||||||
}
|
}
|
||||||
affected += chunkAffected
|
affected += chunkAffected
|
||||||
log.Printf("[UpsertItemAttributesTx] chunk=%d-%d chunkAffected=%d cumulative=%d",
|
log.Printf("[UpsertItemAttributesTx] chunk=%d-%d chunkAffected=%d cumulative=%d duration_ms=%d",
|
||||||
i, end, chunkAffected, affected)
|
i, end, chunkAffected, affected, time.Since(chunkStart).Milliseconds())
|
||||||
}
|
}
|
||||||
log.Printf("[UpsertItemAttributesTx] attrs=%d affected=%d duration_ms=%d",
|
log.Printf("[UpsertItemAttributesTx] attrs=%d affected=%d duration_ms=%d",
|
||||||
len(attrs), affected, time.Since(start).Milliseconds())
|
len(attrs), affected, time.Since(start).Milliseconds())
|
||||||
|
|||||||
@@ -311,6 +311,8 @@ func OrderProductionApplyRoute(mssql *sql.DB, ml *mailer.GraphMailer) http.Handl
|
|||||||
stepUpdateLinesStart := time.Now()
|
stepUpdateLinesStart := time.Now()
|
||||||
updated, err := queries.UpdateOrderLinesTx(tx, id, payload.Lines, username)
|
updated, err := queries.UpdateOrderLinesTx(tx, id, payload.Lines, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[OrderProductionApplyRoute] rid=%s orderHeaderID=%s step=update_lines failed duration_ms=%d err=%v",
|
||||||
|
rid, id, time.Since(stepUpdateLinesStart).Milliseconds(), err)
|
||||||
writeDBError(w, http.StatusInternalServerError, "update_order_lines", id, username, len(payload.Lines), err)
|
writeDBError(w, http.StatusInternalServerError, "update_order_lines", id, username, len(payload.Lines), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -318,8 +320,10 @@ func OrderProductionApplyRoute(mssql *sql.DB, ml *mailer.GraphMailer) http.Handl
|
|||||||
rid, id, updated, time.Since(stepUpdateLinesStart).Milliseconds())
|
rid, id, updated, time.Since(stepUpdateLinesStart).Milliseconds())
|
||||||
|
|
||||||
stepUpsertBarcodeStart := time.Now()
|
stepUpsertBarcodeStart := time.Now()
|
||||||
barcodeInserted, err := queries.UpsertItemBarcodesTx(tx, id, payload.Lines, username)
|
barcodeInserted, err := queries.InsertItemBarcodesTx(tx, id, payload.Lines, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[OrderProductionApplyRoute] rid=%s orderHeaderID=%s step=upsert_barcodes failed duration_ms=%d err=%v",
|
||||||
|
rid, id, time.Since(stepUpsertBarcodeStart).Milliseconds(), err)
|
||||||
writeDBError(w, http.StatusInternalServerError, "upsert_item_barcodes", id, username, len(payload.Lines), err)
|
writeDBError(w, http.StatusInternalServerError, "upsert_item_barcodes", id, username, len(payload.Lines), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -329,6 +333,8 @@ func OrderProductionApplyRoute(mssql *sql.DB, ml *mailer.GraphMailer) http.Handl
|
|||||||
stepUpsertAttrStart := time.Now()
|
stepUpsertAttrStart := time.Now()
|
||||||
attributeAffected, err := queries.UpsertItemAttributesTx(tx, payload.ProductAttributes, username)
|
attributeAffected, err := queries.UpsertItemAttributesTx(tx, payload.ProductAttributes, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[OrderProductionApplyRoute] rid=%s orderHeaderID=%s step=upsert_attributes failed duration_ms=%d err=%v",
|
||||||
|
rid, id, time.Since(stepUpsertAttrStart).Milliseconds(), err)
|
||||||
writeDBError(w, http.StatusInternalServerError, "upsert_item_attributes", id, username, len(payload.ProductAttributes), err)
|
writeDBError(w, http.StatusInternalServerError, "upsert_item_attributes", id, username, len(payload.ProductAttributes), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -337,6 +343,8 @@ func OrderProductionApplyRoute(mssql *sql.DB, ml *mailer.GraphMailer) http.Handl
|
|||||||
|
|
||||||
stepCommitStart := time.Now()
|
stepCommitStart := time.Now()
|
||||||
if err := tx.Commit(); err != nil {
|
if err := tx.Commit(); err != nil {
|
||||||
|
log.Printf("[OrderProductionApplyRoute] rid=%s orderHeaderID=%s step=commit failed duration_ms=%d err=%v",
|
||||||
|
rid, id, time.Since(stepCommitStart).Milliseconds(), err)
|
||||||
writeDBError(w, http.StatusInternalServerError, "commit_tx", id, username, len(payload.Lines), err)
|
writeDBError(w, http.StatusInternalServerError, "commit_tx", id, username, len(payload.Lines), err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user