OrderDeliveryMapper.xml 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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="cn.iocoder.yudao.module.order.dal.mysql.OrderDeliveryMapper">
  4. <!-- 订单交付分页查询 -->
  5. <select id="selectDeliveryPage" resultType="cn.iocoder.yudao.module.order.controller.admin.delivery.vo.OrderDeliveryPageItemVO">
  6. SELECT
  7. entry.Id as id,
  8. sorder.bill_no as billNo,
  9. entry.rstate,
  10. entry.entry_seq as entrySeq,
  11. entry.item_number as itemNumber,
  12. entry.item_name as itemName,
  13. entry.specification,
  14. entry.unit,
  15. sorder.custom_no as customNo,
  16. entry.custom_order_bill_no as customOrderBillNo,
  17. entry.custom_order_itemno as customOrderItemno,
  18. sorder.custom_level as customLevel,
  19. entry.qty,
  20. entry.deliver_count as deliverCount,
  21. entry.bom_number as bomNumber,
  22. sorder.emp_name as empName,
  23. entry.planner_name as plannerName,
  24. entry.plan_date as planDate,
  25. entry.sys_capacity_date as sysCapacityDate,
  26. entry.date,
  27. entry.create_time as createTime,
  28. entry.create_by_name as createByName,
  29. sorder.auditor,
  30. CASE
  31. WHEN entry.progress=0 THEN '0'
  32. WHEN nbo.nboNum>0 THEN '7'
  33. WHEN compp.num>0 THEN '6'
  34. WHEN cnb.num>0 THEN '5'
  35. WHEN pr.num>0 THEN '4'
  36. WHEN nb.num>0 THEN '3'
  37. WHEN p.num>0 THEN '2'
  38. WHEN entry.progress=3 THEN '1'
  39. ELSE entry.progress
  40. END as progress,
  41. yeard.ProdLine as prodLine,
  42. yeard.ProdRange as prodRange,
  43. asn.ShipDate as shipDate,
  44. sp.recid,
  45. CASE WHEN sp.recid IS NOT NULL AND sp.recid != '' THEN '是' ELSE '否' END as spstatus,
  46. mo.moentry_mono as moentryMono
  47. FROM crm_seorderentry entry
  48. LEFT JOIN crm_seorder sorder ON entry.seorder_id = sorder.Id
  49. LEFT JOIN (
  50. SELECT a.id, a.soentry_id, b.product_code, a.moentry_mono
  51. FROM mes_moentry a, mes_morder b
  52. WHERE a.moentry_mono = b.morder_no
  53. ) mo ON entry.id = mo.soentry_id AND entry.item_number = mo.product_code
  54. LEFT JOIN (
  55. SELECT WorkOrd, COUNT(*) num FROM NbrMaster WHERE type='SM' GROUP BY WorkOrd
  56. ) nb ON mo.moentry_mono = nb.WorkOrd
  57. LEFT JOIN (
  58. SELECT WorkOrds, COUNT(*) num FROM PeriodSequenceDet GROUP BY WorkOrds
  59. ) p ON mo.moentry_mono = p.WorkOrds
  60. LEFT JOIN (
  61. SELECT pr_mono, COUNT(*) num FROM srm_pr_main WHERE state>1 GROUP BY pr_mono
  62. ) pr ON mo.moentry_mono = pr.pr_mono
  63. LEFT JOIN (
  64. SELECT WorkOrds, COUNT(*) num FROM PeriodSequenceDet WHERE CompQty>0 GROUP BY WorkOrds
  65. ) compp ON mo.moentry_mono = compp.WorkOrds
  66. LEFT JOIN (
  67. SELECT WorkOrd, COUNT(*) num FROM NbrDetail WHERE type='SM' AND QtyFrom>0 GROUP BY WorkOrd
  68. ) cnb ON mo.moentry_mono = cnb.WorkOrd
  69. LEFT JOIN (
  70. SELECT ProdLine, ProdRange, SAPItemNumber FROM YearDemandManagement GROUP BY ProdLine, ProdRange, SAPItemNumber
  71. ) yeard ON entry.item_number = yeard.SAPItemNumber
  72. LEFT JOIN (
  73. SELECT OrdNbr, ContainerItem, MAX(updatetime) as ShipDate
  74. FROM ASNBOLShipperDetail GROUP BY OrdNbr, ContainerItem
  75. ) asn ON asn.OrdNbr = sorder.bill_no AND asn.ContainerItem = entry.item_number
  76. LEFT JOIN ShippingPlanDetail sp ON entry.id = sp.sentry_id
  77. LEFT JOIN (
  78. SELECT OrdNbr, ContainerItem, COUNT(*) as nboNum
  79. FROM ASNBOLShipperDetail
  80. GROUP BY OrdNbr, ContainerItem
  81. ) nbo ON nbo.OrdNbr = sorder.bill_no AND nbo.ContainerItem = entry.item_number
  82. WHERE entry.IsDeleted = 0 AND sorder.bill_no IS NOT NULL
  83. <if test="req.billNo != null and req.billNo != ''">
  84. AND sorder.bill_no LIKE CONCAT('%', #{req.billNo}, '%')
  85. </if>
  86. <if test="req.customNo != null and req.customNo != ''">
  87. AND sorder.custom_no LIKE CONCAT('%', #{req.customNo}, '%')
  88. </if>
  89. <if test="req.itemNumber != null and req.itemNumber != ''">
  90. AND entry.item_number LIKE CONCAT('%', #{req.itemNumber}, '%')
  91. </if>
  92. <if test="req.planDate != null and req.planDate != ''">
  93. AND DATE(entry.plan_date) = #{req.planDate}
  94. </if>
  95. <if test="req.progress != null and req.progress != ''">
  96. AND entry.progress = #{req.progress}
  97. </if>
  98. ORDER BY entry.create_time DESC
  99. </select>
  100. <!-- 查询变更记录 -->
  101. <select id="selectChangeList" resultType="cn.iocoder.yudao.module.order.controller.admin.delivery.vo.ValueStreamRespVO$ChangeRecord">
  102. SELECT
  103. @rownum := @rownum + 1 AS sno,
  104. a.bill_no as billNo,
  105. a.change_Type as changeType,
  106. a.change_Reason as changeReason,
  107. a.change_content as changeContent,
  108. DATE_FORMAT(a.update_time, '%Y-%m-%d') as updateTime
  109. FROM crm_seorder_change a
  110. LEFT JOIN crm_seorderentry b ON a.bill_no = b.bill_no
  111. CROSS JOIN (SELECT @rownum := 0) r
  112. WHERE a.bill_no IS NOT NULL AND b.id = #{entryId}
  113. ORDER BY a.id
  114. </select>
  115. <!-- 查询计划排程 -->
  116. <select id="selectScheduleList" resultType="cn.iocoder.yudao.module.order.controller.admin.delivery.vo.ValueStreamRespVO$ScheduleItem">
  117. SELECT
  118. @rownum := @rownum + 1 AS sno,
  119. sch.WorkOrds as workOrds,
  120. sch.Line as line,
  121. sch.ItemNum as itemNum,
  122. im.Descr as descr,
  123. im.Descr1 as descr1,
  124. sch.Op as op,
  125. DATE_FORMAT(sch.PlanDate, '%Y-%m-%d') as workDate,
  126. CAST(sch.OrdQty AS DECIMAL(18,2)) as workQty,
  127. DATE_FORMAT(sch.CreateTime, '%Y-%m-%d') as createTime
  128. FROM PeriodSequenceDet sch
  129. LEFT JOIN ItemMaster im ON sch.ItemNum = im.ItemNum
  130. LEFT JOIN mes_morder mo ON mo.morder_no = sch.WorkOrds
  131. INNER JOIN mes_moentry me ON mo.Id = me.moentry_moid
  132. LEFT JOIN crm_seorderentry se ON se.Id = me.soentry_id
  133. CROSS JOIN (SELECT @rownum := 0) r
  134. WHERE se.id = #{entryId} AND mo.IsDeleted = 0
  135. ORDER BY sch.PlanDate
  136. </select>
  137. <!-- 查询物料需求/生产备料 -->
  138. <select id="selectMaterialList" resultType="cn.iocoder.yudao.module.order.controller.admin.delivery.vo.ValueStreamRespVO$MaterialItem">
  139. SELECT
  140. nm.Nbr as nbr,
  141. nd.Line as line,
  142. nd.ItemNum as itemNum,
  143. im.Descr as descr,
  144. im.Descr1 as descr1,
  145. CAST(nd.QtyFrom AS DECIMAL(18,2)) as qtyFrom,
  146. CAST(nd.QtyOrd AS DECIMAL(18,2)) as qtyOrd,
  147. CAST(nd.CurrQtyOpened AS DECIMAL(18,2)) as currQtyOpened,
  148. CAST(nd.QtyRec AS DECIMAL(18,2)) as qtyRec,
  149. nd.UM as um,
  150. nd.LocationFrom as locationFrom,
  151. nd.LocationTo as locationTo,
  152. DATE_FORMAT(nd.UpdateTime, '%Y-%m-%d %H:%i:%s') as updateTime,
  153. nd.WorkOrd as workOrd
  154. FROM NbrDetail nd
  155. LEFT JOIN NbrMaster nm ON nd.nbr = nm.nbr
  156. LEFT JOIN mes_morder mo ON mo.morder_no = nm.WorkOrd
  157. INNER JOIN mes_moentry me ON mo.Id = me.moentry_moid
  158. LEFT JOIN crm_seorderentry se ON se.Id = me.soentry_id AND mo.product_code = se.item_number
  159. LEFT JOIN ItemMaster im ON nd.ItemNum = im.ItemNum
  160. WHERE se.id = #{entryId} AND mo.IsDeleted = 0 AND nm.Type = 'SM'
  161. ORDER BY nm.Nbr
  162. </select>
  163. <!-- 调用销售出库存储过程 -->
  164. <select id="callAutoCreateShipper" statementType="CALLABLE">
  165. {CALL pr_WMS_AutoCreateShipper(#{orgNo}, #{operatorAccount}, #{planIds})}
  166. </select>
  167. </mapper>