ProduceOrderMapper.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. po.begin_work_status
  27. from production_order po
  28. LEFT JOIN contract c ON po.contract_id = c.id
  29. LEFT JOIN (SELECT sd.prod_order_id,
  30. CASE
  31. WHEN SUM(CASE WHEN sd.`status` IN (15, 30) OR ep.arrival_status != 20 OR sw.`status` != 2 THEN 1 ELSE 0 END) >
  32. 0 THEN 1
  33. ELSE 0 END AS lackStatus
  34. FROM subscribe_detail sd
  35. LEFT JOIN ehsd_purchase_product epp ON epp.subscribe_detail_id = sd.id
  36. LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
  37. AND ep.`status` IN (10, 30, 60)
  38. LEFT JOIN stock_wait sw ON sw.purchase_id = ep.id
  39. GROUP BY sd.prod_order_id) t2 ON t2.prod_order_id = po.id
  40. LEFT JOIN production_begin_confirm pbc ON pbc.id = po.prod_begin_confirm_id
  41. ${ew.customSqlSegment}
  42. </select>
  43. <select id="getSchedulingList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderVo">
  44. SELECT po.id,
  45. po.`code`,
  46. GROUP_CONCAT(pi.`name` SEPARATOR ',') AS productName,
  47. po.create_time,
  48. po.produce_time,
  49. po.delivery_period,
  50. po.company_id,
  51. (if(IFNULL(po.finish_time, NOW()) > po.delivery_period, 1, 0)) AS isOverdue
  52. FROM production_order po
  53. LEFT JOIN production_order_detail pod ON pod.produce_order_id = po.id
  54. LEFT JOIN product_info pi ON pod.product_id = pi.id
  55. ${ew.customSqlSegment}
  56. </select>
  57. <select id="materialBalanceList" resultType="com.fjhx.mes.entity.MaterialBalanceBo">
  58. SELECT t1.material_id,
  59. t1.quantity,
  60. (t1.quantity - t1.receiptQuantity) AS unclaimedQuantity,
  61. t1.receiptQuantity AS receivedQuantity,
  62. (t1.receiptQuantity - t1.usedQuantity) AS workshopInventoryQuantity,
  63. IFNULL(t1.purchaseTransitQuantity, 0) AS purchaseTransitQuantity
  64. FROM (SELECT cpb.product_name,
  65. cpb.material_id,
  66. sum(cpb.quantity * cp.quantity) AS quantity,
  67. (SELECT sum(receipt_quantity)
  68. FROM stock_wait_details swd
  69. JOIN stock_wait sw ON swd.stock_wait_id = sw.id
  70. WHERE sw.business_id = po.id
  71. AND swd.product_id = cpb.material_id) AS receiptQuantity,
  72. (SELECT sum(pod.finish_quantity * cpb1.quantity)
  73. FROM production_order_detail pod
  74. JOIN contract_product_bom cpb1 ON cpb1.contract_product_id = pod.contract_detail_id
  75. WHERE cpb1.material_id = cpb.material_id
  76. AND pod.produce_order_id = po.id) AS usedQuantity,
  77. (SELECT sum(pp.quantity) - IFNULL(sum(swd.quantity), 0)
  78. FROM subscribe_detail sd
  79. JOIN ehsd_purchase_product pp ON pp.subscribe_detail_id = sd.id
  80. left join stock_wait_details swd on swd.purchase_detail_id = pp.id
  81. WHERE pp.product_id = cpb.material_id
  82. AND sd.contract_id = po.contract_id) AS purchaseTransitQuantity
  83. FROM production_order po
  84. LEFT JOIN contract_product cp ON cp.contract_id = po.contract_id
  85. LEFT JOIN contract_product_bom cpb ON cpb.contract_product_id = cp.id
  86. LEFT JOIN product_info pi ON cp.product_id = pi.id
  87. WHERE po.id = #{orderID}
  88. AND pi.company_id = po.company_id
  89. AND cpb.type != 3
  90. GROUP BY cpb.material_id) t1
  91. </select>
  92. </mapper>