Ver a proveniência

update

master
CANCERYS\kw093 há 13 horas
ascendente
cometimento
10dc8c74ee
1 ficheiros alterados com 88 adições e 78 eliminações
  1. +88
    -78
      src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt

+ 88
- 78
src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt Ver ficheiro

@@ -524,84 +524,93 @@ fun searchMaterialStockOutTraceabilityReport(
}

val sql = """
SELECT
IFNULL(it.code, '') AS itemNo,
IFNULL(it.name, '') AS itemName,
IFNULL(it.categoryId, 0) AS stockSubCategory,
IFNULL(uc.udfudesc, '') AS unitOfMeasure,
'' AS jobOrderNo,
IFNULL(po.consoCode, '') AS stockReqNo,
IFNULL(il.lotNo, '') AS lotNo,
IFNULL(DATE_FORMAT(il.expiryDate, '%Y-%m-%d'), '') AS expiryDate,
CAST(ROUND(IFNULL(sol.qty, 0), 2) AS CHAR) AS stockOutQty,
IFNULL(po.code, '') AS materialPickOrderNo,
COALESCE(
picker_user.name,
created_user.name, -- 新增:用 createdBy 找到的 user
modified_user.name,
''
) AS handler,
COALESCE(wh.code, '') AS storeLocation,
'' AS pickRemark,
CAST(
SUM(IFNULL(sol.qty, 0)) OVER (PARTITION BY it.code) AS CHAR
) AS totalStockOutQty
FROM stock_out_line sol
INNER JOIN stock_out so
ON sol.stockOutId = so.id
AND so.deleted = 0
AND so.type = 'job'
INNER JOIN pick_order_line pol
ON sol.pickOrderLineId = pol.id
AND pol.deleted = 0
INNER JOIN pick_order po
ON pol.poId = po.id
AND po.deleted = 0
AND po.type IN ('consumable', 'jo')
AND po.joId IS NULL
AND po.doId IS NULL
INNER JOIN items it
ON sol.itemId = it.id
AND it.deleted = 0
LEFT JOIN item_uom iu
ON it.id = iu.itemId
AND iu.stockUnit = 1
LEFT JOIN uom_conversion uc
ON iu.uomId = uc.id
LEFT JOIN inventory_lot_line ill
ON sol.inventoryLotLineId = ill.id
AND ill.deleted = 0
LEFT JOIN inventory_lot il
ON ill.inventoryLotId = il.id
AND il.deleted = 0
LEFT JOIN warehouse wh
ON ill.warehouseId = wh.id
AND wh.deleted = 0
LEFT JOIN user picker_user
ON sol.pickerId = picker_user.id
AND picker_user.deleted = 0
LEFT JOIN user created_user
ON sol.createdBy = created_user.username
AND created_user.deleted = 0
LEFT JOIN user modified_user
ON sol.modifiedBy = modified_user.staffNo
AND modified_user.deleted = 0
AND sol.pickerId IS NULL
WHERE
sol.deleted = 0
AND (sol.inventoryLotLineId IS NULL OR ill.id IS NOT NULL)
$stockCategorySql
$stockSubCategorySql
$itemCodeSql
$yearSql
$lastOutDateStartSql
$lastOutDateEndSql
ORDER BY
it.code,
il.lotNo,
sol.endTime
""".trimIndent()

SELECT
IFNULL(it.code, '') AS itemNo,
IFNULL(it.name, '') AS itemName,
IFNULL(it.categoryId, 0) AS stockSubCategory,
IFNULL(uc.udfudesc, '') AS unitOfMeasure,
IFNULL(jo.code, '') AS jobOrderNo,
IFNULL(po.consoCode, '') AS stockReqNo,
IFNULL(il.lotNo, '') AS lotNo,
IFNULL(DATE_FORMAT(il.expiryDate, '%Y-%m-%d'), '') AS expiryDate,
FORMAT(ROUND(IFNULL(sol.qty, 0), 0), 0) AS stockOutQty,
IFNULL(po.code, '') AS materialPickOrderNo,
COALESCE(
picker_user.name,
jpo_handler_user.name,
created_user.name,
modified_user.name,
''
) AS handler,
COALESCE(wh.code, '') AS storeLocation,
'' AS pickRemark,
FORMAT(
ROUND(SUM(IFNULL(sol.qty, 0)) OVER (PARTITION BY it.code), 0), 0
) AS totalStockOutQty
FROM stock_out_line sol
INNER JOIN stock_out so
ON sol.stockOutId = so.id
AND so.deleted = 0
AND so.type = 'job'
INNER JOIN pick_order_line pol
ON sol.pickOrderLineId = pol.id
AND pol.deleted = 0
INNER JOIN pick_order po
ON pol.poId = po.id
AND po.deleted = 0
AND po.type IN ('jo', 'JOB_ORDER')
AND po.joId IS NOT NULL
LEFT JOIN job_order jo
ON po.joId = jo.id
AND jo.deleted = 0
INNER JOIN items it
ON sol.itemId = it.id
AND it.deleted = 0
LEFT JOIN item_uom iu
ON it.id = iu.itemId
AND iu.stockUnit = 1
LEFT JOIN uom_conversion uc
ON iu.uomId = uc.id
LEFT JOIN inventory_lot_line ill
ON sol.inventoryLotLineId = ill.id
AND ill.deleted = 0
LEFT JOIN inventory_lot il
ON ill.inventoryLotId = il.id
AND il.deleted = 0
LEFT JOIN warehouse wh
ON ill.warehouseId = wh.id
AND wh.deleted = 0
LEFT JOIN user picker_user
ON sol.pickerId = picker_user.id
AND picker_user.deleted = 0
LEFT JOIN jo_pick_order jpo
ON po.id = jpo.pick_order_id
AND pol.itemId = jpo.item_id
AND jpo.deleted = 0
LEFT JOIN user jpo_handler_user
ON jpo.handled_by = jpo_handler_user.id
AND jpo_handler_user.deleted = 0
LEFT JOIN user created_user
ON sol.createdBy = created_user.username
AND created_user.deleted = 0
LEFT JOIN user modified_user
ON sol.modifiedBy = modified_user.staffNo
AND modified_user.deleted = 0
AND sol.pickerId IS NULL
WHERE
sol.deleted = 0
AND (sol.inventoryLotLineId IS NULL OR ill.id IS NOT NULL)
$stockCategorySql
$stockSubCategorySql
$itemCodeSql
$yearSql
$lastOutDateStartSql
$lastOutDateEndSql
ORDER BY
it.code,
il.lotNo,
sol.endTime
""".trimIndent()
val result = jdbcDao.queryForList(sql, args)

println("=== Material Stock Out Traceability (Total: ${result.size} rows) ===")
@@ -609,6 +618,7 @@ fun searchMaterialStockOutTraceabilityReport(
println("Row $index:")
println(" itemNo: ${row["itemNo"]}")
println(" itemName: ${row["itemName"]}")
println(" jobOrderNo: ${row["jobOrderNo"]}")
println(" stockOutQty: ${row["stockOutQty"]}")
println(" totalStockOutQty: ${row["totalStockOutQty"]}")
println(" materialPickOrderNo: ${row["materialPickOrderNo"]}")


Carregando…
Cancelar
Guardar