浏览代码

update

master
CANCERYS\kw093 9 小时前
父节点
当前提交
0d3e4791e9
共有 1 个文件被更改,包括 41 次插入45 次删除
  1. +41
    -45
      src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt

+ 41
- 45
src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt 查看文件

@@ -721,51 +721,47 @@ fun searchMaterialStockOutTraceabilityReport(
} else ""

val sql = """
SELECT
COALESCE(it.code, '') as itemNo,
COALESCE(it.name, '') as itemName,
COALESCE(uc.code, '') as unitOfMeasure,
COALESCE(sil.dnNo, '') as dnNo,
COALESCE(sil.lotNo, il.lotNo, '') as lotNo,
COALESCE(DATE_FORMAT(COALESCE(sil.expiryDate, il.expiryDate), '%Y-%m-%d'), '') as expiryDate,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(COALESCE(sil.acceptedQty, 0), 2))) as stockInQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(COALESCE(sil.acceptedQty, 0), 2))) as iqcSampleQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(COALESCE(qr.failQty, 0), 2))) as iqcDefectQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(CASE
WHEN COALESCE(sil.acceptedQty, 0) > 0
THEN ROUND((COALESCE(qr.failQty, 0) / sil.acceptedQty) * 100, 2)
ELSE 0
END, 2))) as iqcDefectPercentage,
CASE
WHEN qr.qcPassed = true OR qr.qcPassed IS NULL THEN 'Accept'
ELSE 'Reject'
END as iqcResult,
COALESCE(qr.remarks, '') as iqcRemarks,
COALESCE(wh.code, '') as storeLocation,
COALESCE(sp_si.code, sp_po.code, '') as supplierID,
COALESCE(sp_si.name, sp_po.name, '') as supplierName,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(SUM(COALESCE(sil.acceptedQty, 0)) OVER (PARTITION BY it.id), 2))) as totalStockInQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(SUM(COALESCE(sil.acceptedQty, 0)) OVER (PARTITION BY it.id), 2))) as totalIqcSampleQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(SUM(COALESCE(qr.failQty, 0)) OVER (PARTITION BY it.id), 2))) as totalIqcDefectQty
FROM stock_in_line sil
LEFT JOIN stock_in si ON sil.stockInId = si.id
LEFT JOIN purchase_order po ON sil.purchaseOrderId = po.id
LEFT JOIN items it ON sil.itemId = it.id
LEFT JOIN item_uom iu ON it.id = iu.itemId AND iu.stockUnit = true
LEFT JOIN uom_conversion uc ON iu.uomId = uc.id
LEFT JOIN qc_result qr ON sil.id = qr.stockInLineId
LEFT JOIN inventory_lot il ON sil.inventoryLotId = il.id
LEFT JOIN inventory_lot_line ill ON il.id = ill.inventoryLotId
LEFT JOIN warehouse wh ON ill.warehouseId = wh.id
LEFT JOIN shop sp_si ON si.supplierId = sp_si.id
LEFT JOIN shop sp_po ON po.supplierId = sp_po.id
WHERE sil.deleted = false
$stockCategorySql
$itemCodeSql
$lastInDateStartSql
$lastInDateEndSql
ORDER BY it.code, sil.lotNo
""".trimIndent()
SELECT
COALESCE(it.code, '') as itemNo,
COALESCE(it.name, '') as itemName,
COALESCE(uc.code, '') as unitOfMeasure,
COALESCE(sil.dnNo, '') as dnNo,
COALESCE(sil.lotNo, il.lotNo, '') as lotNo,
COALESCE(DATE_FORMAT(COALESCE(sil.expiryDate, il.expiryDate), '%Y-%m-%d'), '') as expiryDate,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(COALESCE(sil.acceptedQty, 0), 2))) as stockInQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(COALESCE(sil.acceptedQty, 0), 2))) as iqcSampleQty,
-- ↓↓↓ 这四个/五个栏位改成不依赖 qc_result ↓↓↓
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(0, 2))) as iqcDefectQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(0, 2))) as iqcDefectPercentage,
'Accept' as iqcResult, -- 或 '' 看你报表需求
'' as iqcRemarks,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(0, 2))) as totalIqcDefectQty,
COALESCE(wh.code, '') as storeLocation,
COALESCE(sp_si.code, sp_po.code, '') as supplierID,
COALESCE(sp_si.name, sp_po.name, '') as supplierName,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(SUM(COALESCE(sil.acceptedQty, 0)) OVER (PARTITION BY it.id), 2))) as totalStockInQty,
TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM FORMAT(SUM(COALESCE(sil.acceptedQty, 0)) OVER (PARTITION BY it.id), 2))) as totalIqcSampleQty
-- 注意:这里已经不再有 totalIqcDefectQty 的 window function 了
FROM stock_in_line sil
LEFT JOIN stock_in si ON sil.stockInId = si.id
LEFT JOIN purchase_order po ON sil.purchaseOrderId = po.id
LEFT JOIN items it ON sil.itemId = it.id
LEFT JOIN item_uom iu ON it.id = iu.itemId AND iu.stockUnit = true
LEFT JOIN uom_conversion uc ON iu.uomId = uc.id
LEFT JOIN inventory_lot il ON sil.inventoryLotId = il.id
LEFT JOIN inventory_lot_line ill ON il.id = ill.inventoryLotId
LEFT JOIN warehouse wh ON ill.warehouseId = wh.id
LEFT JOIN shop sp_si ON si.supplierId = sp_si.id
LEFT JOIN shop sp_po ON po.supplierId = sp_po.id
WHERE sil.deleted = false
$stockCategorySql
$itemCodeSql
$lastInDateStartSql
$lastInDateEndSql
ORDER BY it.code, sil.lotNo
""".trimIndent()
return jdbcDao.queryForList(sql, args)
}


正在加载...
取消
保存