ProduceOrderMapper.xml 5.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.fjhx.mes.mapper.production.ProduceOrderMapper">
  4. <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
  5. select po.id,
  6. po.contract_id,
  7. po.code,
  8. po.produce_time,
  9. po.delivery_period,
  10. po.produce_status,
  11. po.create_user,
  12. po.create_time,
  13. po.update_user,
  14. po.update_time,
  15. po.company_id,
  16. c.prod_tag,
  17. c.prod_remark,
  18. po.finish_time,
  19. (if(IFNULL(po.finish_time, NOW()) > po.delivery_period, 1, 0)) AS isOverdue,
  20. po.confirm_status,
  21. c.contract_type,
  22. c.of_company_id as contractCompanyId,
  23. c.quality_lv,
  24. IFNULL(t2.lackStatus, 0) as lackStatus,
  25. pbc.`status` AS prod_confirm_status
  26. from production_order po
  27. LEFT JOIN contract c ON po.contract_id = c.id
  28. LEFT JOIN (SELECT sd.prod_order_id,
  29. CASE
  30. WHEN SUM(CASE WHEN sd.`status` IN (15, 30) OR ep.arrival_status != 20 OR sw.`status` != 2 THEN 1 ELSE 0 END) >
  31. 0 THEN 1
  32. ELSE 0 END AS lackStatus
  33. FROM subscribe_detail sd
  34. LEFT JOIN ehsd_purchase_product epp ON epp.subscribe_detail_id = sd.id
  35. LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
  36. AND ep.`status` IN (10, 30, 60)
  37. LEFT JOIN stock_wait sw ON sw.purchase_id = ep.id
  38. GROUP BY sd.prod_order_id) t2 ON t2.prod_order_id = po.id
  39. LEFT JOIN production_begin_confirm pbc ON pbc.id = po.prod_begin_confirm_id
  40. ${ew.customSqlSegment}
  41. </select>
  42. <select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
  43. SELECT po.id,
  44. po.`code`,
  45. GROUP_CONCAT(pi.`name` SEPARATOR ',') AS productName,
  46. po.create_time,
  47. po.produce_time,
  48. po.delivery_period,
  49. po.company_id,
  50. (if(IFNULL(po.finish_time, NOW()) > po.delivery_period, 1, 0)) AS isOverdue
  51. FROM production_order po
  52. LEFT JOIN production_order_detail pod ON pod.produce_order_id = po.id
  53. LEFT JOIN product_info pi ON pod.product_id = pi.id
  54. ${ew.customSqlSegment}
  55. </select>
  56. <select id="materialBalanceList" resultType="com.fjhx.mes.entity.MaterialBalanceBo">
  57. SELECT t1.material_id,
  58. t1.quantity,
  59. (t1.quantity - t1.receiptQuantity) AS unclaimedQuantity,
  60. t1.receiptQuantity AS receivedQuantity,
  61. (t1.receiptQuantity - t1.usedQuantity) AS workshopInventoryQuantity,
  62. IFNULL(t1.purchaseTransitQuantity, 0) AS purchaseTransitQuantity
  63. FROM (SELECT cpb.product_name,
  64. cpb.material_id,
  65. sum(cpb.quantity * cp.quantity) AS quantity,
  66. (SELECT sum(receipt_quantity)
  67. FROM stock_wait_details swd
  68. JOIN stock_wait sw ON swd.stock_wait_id = sw.id
  69. WHERE sw.business_id = po.id
  70. AND swd.product_id = cpb.material_id) AS receiptQuantity,
  71. (SELECT sum(pod.finish_quantity * cpb1.quantity)
  72. FROM production_order_detail pod
  73. JOIN contract_product_bom cpb1 ON cpb1.contract_product_id = pod.contract_detail_id
  74. WHERE cpb1.material_id = cpb.material_id
  75. AND pod.produce_order_id = po.id) AS usedQuantity,
  76. (SELECT sum(pp.quantity) - IFNULL(sum(swd.quantity), 0)
  77. FROM subscribe_detail sd
  78. JOIN ehsd_purchase_product pp ON pp.subscribe_detail_id = sd.id
  79. left join stock_wait_details swd on swd.purchase_detail_id = pp.id
  80. WHERE pp.product_id = cpb.material_id
  81. AND sd.contract_id = po.contract_id) AS purchaseTransitQuantity
  82. FROM production_order po
  83. LEFT JOIN contract_product cp ON cp.contract_id = po.contract_id
  84. LEFT JOIN contract_product_bom cpb ON cpb.contract_product_id = cp.id
  85. LEFT JOIN product_info pi ON cp.product_id = pi.id
  86. WHERE po.id = #{orderID}
  87. AND pi.company_id = po.company_id
  88. AND cpb.type != 3
  89. GROUP BY cpb.material_id) t1
  90. </select>
  91. </mapper>