荣鑫后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

192 lines
13 KiB

4 years ago
4 years ago
  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.gaotao.modules.schedule.mapper.SchedulingMapper">
  4. <!--查询加工中心的信息通过机台-->
  5. <select id="getCurrentWorkCenterNoByResourceId" parameterType="SearchScheduleData" resultType="java.lang.String">
  6. SELECT WorkCenterNo workCenterNo FROM WorkCenterResource wcr
  7. <where>
  8. wcr.Site = #{site}
  9. <if test="resourceId != null and resourceId != ''">
  10. AND wcr.ResourceID = #{resourceId}
  11. </if>
  12. </where>
  13. </select>
  14. <!--获取FQC的排产工单-->
  15. <select id="getShopOrderListWithFqc" parameterType="SearchScheduleData" resultType="ShopOrderOutData">
  16. SELECT T.Site site, T.OrderNo orderNo, T.ItemNo itemNo, T.OperationDesc itemDesc, D.NeedDate needDate, T.PartNo partNo, P.PartDescription partDesc,
  17. P.Spec spec, T.WorkCenterNo workCenterNo, T.NextItemNo nextItemNo, S2.OperationDesc nextItemDesc, T.PreItemNo preItemNo,S1.OperationDesc preItemDesc,
  18. S1.ScheduledFlag preScheduledFlag, T.QtyReported qtyReported, T.ScheduledFlag scheduledFlag, D.LotSize lotSize, D.EnterDate enterDate,
  19. dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) as AvailResource, ROUND(T.TimeRequired, 2) timeRequired,
  20. dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, T.Efficiency) scheduleToPlanTime,
  21. D.CustomerID customerId, P.ConfigurationTemplateID customerName, T.MachRunFactor machRunFactor, T.MachSetupTime machSetupTime, T.FactorUnit factorUnit,
  22. T.QtyScheduled qtyScheduled, (round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps,
  23. P.Remark custPartNo, S1.QtyApprove qtyApprovedPreOps, S1.PlanStartTime prePlanStartTime, S1.PlanFinishTime prePlanFinishTime, S2.ScheduledFlag nextScheduledFlag,
  24. D.RoutingRevNo routingRevNo, T.Efficiency efficiency
  25. from SORouting as T
  26. LEFT JOIN ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo
  27. LEFT JOIN Part as P On T.Site=P.Site and T.PartNo=P.PartNo
  28. LEFT JOIN SORouting as S1 On T.Site=S1.Site and T.OrderNo=S1.OrderNo and T.PreItemNo=S1.ItemNo
  29. LEFT JOIN SORouting as S2 On T.Site=S2.Site and T.OrderNo=S2.OrderNo and T.NextItemNo=S2.ItemNo
  30. <where>
  31. and T.ClosedFlag = 'N' and T.site = #{site}
  32. and T.OrderNo<![CDATA[<>]]>'9999'
  33. and isnull(D.Status,'')<![CDATA[<>]]>'已取消' and isnull(D.Status,'')<![CDATA[<>]]>'已计划' and isnull(D.Status,'')<![CDATA[<>]]>'已关闭'
  34. and T.WorkCenterNo = 'FQC'
  35. <if test='fulledItemFlag != null and fulledItemFlag == "N"'>
  36. and Round(T.QtyScheduled,3) <![CDATA[<]]]> round(T.QtyRequired,3)
  37. </if>
  38. <if test='preScheduledFlag != null and preScheduledFlag == "Y"'>
  39. and Isnull(S1.ScheduledFlag,'Y')='Y'
  40. </if>
  41. </where>
  42. </select>
  43. <!--获取FQC的操作员信息-->
  44. <select id="getOperatorListWithFqc" parameterType="SearchScheduleData" resultType="OperatorOutData">
  45. SELECT T.ResourceID operatorId, T.ResourceDesc operatorName, Float1 qtyToSchedule, 0.0 timeAvailable, T.CalendarID calendarId,
  46. T.Efficiency efficiency, (SELECT D.CalendarDesc FROM Calendar as D Where T.Site = D.Site AND T.CalendarID=D.CalendarID) calendarDesc,
  47. (SELECT LastScheduleTime FROM SOScheduleSeq WHERE Site = '1' AND WorkCenterNo='FQC' AND ResourceID = T.ResourceID AND RevNo = 1) lastScheduledTime,/*新增加的行数据*/
  48. T.VirturlFlag virturlFlag
  49. FROM WorkCenterResource as T,DataMaintainTmp
  50. <where>
  51. AND T.Site = #{site} AND Active='Y' AND SeqNo = 1
  52. AND T.WorkCenterNo = 'FQC'
  53. </where>
  54. </select>
  55. <!--获取FQC的操派工单记录-->
  56. <select id="getOrderScheduleListWithFqc" parameterType="SearchScheduleData" resultType="ScheduleData">
  57. SELECT T.Site site, E.S_ScheduledSeqNo scheduledSeqNo, T.OrderNo orderNo, T.ItemNo itemNo, T.S_WorkCenterNo workCenterNo, T.ClosedFlag closedFlag,
  58. T.PlanStartTime planStartTime, T.PlanFinishTime planFinishTime,T.S_ResourceID resourceId, T.QtyRequired qtyRequired, T.TimeRequired timeRequired,
  59. T.SeqNo seqNo, T.SELECTedFlag slectedFlag, T.SourceFlag sourceFlag, T.ParkFlag parkFlag, P.Remark custPartNo, P.PartNo partNo, P.PartDescription partDesc,
  60. P.Spec spec, T.Remark remark, T.TimeRequired_Original,T.QtyRequired_Original, T.QtyReported, P.ConfigurationTemplateID customerName, T.VirtualResourceFlag
  61. FROM SOScheduledList as E,SOScheduledRouting as T,ShopOrder as S,Part as P
  62. <where>
  63. AND E.Site=T.Site AND E.LinkedSeqNo=T.SeqNo
  64. AND T.Site=S.Site AND T.OrderNo=S.OrderNo
  65. AND S.Site=P.Site AND S.PartNo=P.PartNo
  66. AND E.Site = #{site}
  67. AND T.S_WorkCenterNo = 'FQC'
  68. AND T.S_ResourceID = #{resourceId}
  69. Order by E.S_ScheduledSeqNo
  70. </where>
  71. </select>
  72. <!--刷新的soRouting的排产相应的数量-->
  73. <select id="freshSoRoutingScheduledQty" parameterType="SearchScheduleData" resultType="java.util.HashMap">
  74. SELECT sr.QtyScheduled scheduledQty, so.LotSize lotSize, (so.LotSize - sr.QtyScheduled) qtyToSchedule
  75. FROM SORouting sr
  76. LEFT JOIN ShopOrder so ON sr.Site = so.Site AND sr.OrderNo = so.OrderNo
  77. <where>
  78. AND sr.Site = #{site} AND sr.OrderNo = #{orderNo} AND sr.ItemNo = #{itemNo}
  79. </where>
  80. </select>
  81. <!--获取工单的物料库存数量-->
  82. <select id="getOrderPartStockedQty" parameterType="SearchScheduleData" resultType="java.util.HashMap">
  83. SELECT itemcode partNo, itemname partDesc, whscode warehouseId, whsname warehouseName, onhand, iscommited isCommited,
  84. onorder onOrder, qty_available qtyAvailable, QtyRequired qtyRequired FROM (
  85. SELECT 1 AS PX, D.ItemNo,itemcode,itemname,whscode,whsname,onhand,iscommited,onorder,qty_available,d.QtyRequired
  86. FROM dbo.view_SAP_STOCK AS T,dbo.view_SAP_SOBOM AS D
  87. WHERE D.ComponentPartNo=T.itemcode
  88. AND D.Site = #{site} AND D.OrderNo = #{orderNo}
  89. AND (onhand <![CDATA[<>]]> 0 OR iscommited <![CDATA[<>]]>0 OR onorder <![CDATA[<>]]> 0 OR qty_available<![CDATA[<>]]> 0)
  90. UNION ALL
  91. SELECT Distinct 2 AS PX,D.ItemNo,'--' AS itemcode,'' AS itemname,'' AS whscode,null AS whsname,null AS onhand,null AS iscommited,null AS onorder,null AS qty_available,null AS QtyRequired
  92. FROM dbo.view_SAP_STOCK AS T,dbo.view_SAP_SOBOM AS D
  93. WHERE D.ComponentPartNo=T.itemcode
  94. AND D.Site = #{site} AND D.OrderNo = #{orderNo}
  95. AND (onhand <![CDATA[<>]]> 0 OR iscommited <![CDATA[<>]]> 0 OR onorder <![CDATA[<>]]> 0 OR qty_available <![CDATA[<>]]> 0)
  96. ) AS T
  97. ORDER BY t.ItemNo,PX,T.whscode
  98. </select>
  99. <!--刷新FQC的排产工单数据-->
  100. <select id="getShopOrderByCon" parameterType="SearchScheduleData" resultType="ShopOrderOutData">
  101. SELECT T.Site site, T.OrderNo orderNo, T.ItemNo itemNo, T.OperationDesc itemDesc, D.NeedDate needDate, T.PartNo partNo, P.PartDescription partDesc,
  102. P.Spec spec, T.WorkCenterNo workCenterNo, T.NextItemNo nextItemNo, S2.OperationDesc nextItemDesc, T.PreItemNo preItemNo,S1.OperationDesc preItemDesc,
  103. S1.ScheduledFlag preScheduledFlag, T.QtyReported qtyReported, T.ScheduledFlag scheduledFlag, D.LotSize lotSize, D.EnterDate enterDate,
  104. dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) as AvailResource, ROUND(T.TimeRequired, 2) timeRequired,
  105. dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, T.Efficiency) scheduleToPlanTime,
  106. D.CustomerID customerId, P.ConfigurationTemplateID customerName, T.MachRunFactor machRunFactor, T.MachSetupTime machSetupTime, T.FactorUnit factorUnit,
  107. T.QtyScheduled qtyScheduled, (round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps,
  108. P.Remark custPartNo, S1.QtyApprove qtyApprovedPreOps, S1.PlanStartTime prePlanStartTime, S1.PlanFinishTime prePlanFinishTime, S2.ScheduledFlag nextScheduledFlag,
  109. D.RoutingRevNo routingRevNo, T.Efficiency efficiency
  110. from SORouting as T
  111. LEFT JOIN ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo
  112. LEFT JOIN Part as P On T.Site=P.Site and T.PartNo=P.PartNo
  113. LEFT JOIN SORouting as S1 On T.Site=S1.Site and T.OrderNo=S1.OrderNo and T.PreItemNo=S1.ItemNo
  114. LEFT JOIN SORouting as S2 On T.Site=S2.Site and T.OrderNo=S2.OrderNo and T.NextItemNo=S2.ItemNo
  115. <where>
  116. AND T.ClosedFlag = 'N' and T.site = #{site}
  117. AND T.OrderNo<![CDATA[<>]]>'9999'
  118. AND isnull(D.Status,'')<![CDATA[<>]]>'已取消' and isnull(D.Status,'')<![CDATA[<>]]>'已计划' and isnull(D.Status,'')<![CDATA[<>]]>'已关闭'
  119. AND T.OrderNo = #{orderNo} AND T.ItemNo = #{itemNo}
  120. <if test='fulledItemFlag != null and fulledItemFlag == "N"'>
  121. and Round(T.QtyScheduled,3) <![CDATA[<]]]> round(T.QtyRequired,3)
  122. </if>
  123. <if test='preScheduledFlag != null and preScheduledFlag == "Y"'>
  124. and Isnull(S1.ScheduledFlag,'Y')='Y'
  125. </if>
  126. </where>
  127. </select>
  128. <!--按照条件查询工单的数据-->
  129. <select id="getShopOrderList" parameterType="SearchScheduleData" resultType="ShopOrderOutData">
  130. Select TOP 200 T.Site site, T.OrderNo orderNo, T.ItemNo itemNo, T.OperationDesc itemDesc, T.PartNo partNo, P.PartDescription partDesc, P.Spec spec,
  131. D.LotSize lotSize, T.QtyReported qtyReported, D.NeedDate needDate, T.PreItemNo PreItemNo, S1.OperationDesc PreItemDesc, S1.ScheduledFlag preScheduledFlag,
  132. T.NextItemNo nextItemNo, S2.OperationDesc nextItemDesc, S2.ScheduledFlag nextScheduledFlag, D.CustomerID customerId, P.ConfigurationTemplateID customerName,
  133. D.EnterDate enterDate, dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) availResource, T.WorkCenterNo workCenterNo,
  134. T.MachRunFactor machRunFactor, T.MachSetupTime machSetupTime, T.FactorUnit factorUnit, T.ScheduledFlag scheduledFlag, D.RoutingRevNo routingRevNo,
  135. T.QtyScheduled qtyScheduled,(round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps,
  136. dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, t.Efficiency) scheduleToPlanTime,
  137. D.OriSOOrderNo oriSOOrderNo, P.Remark custPartNo, 1*t.Efficiency efficiency, D.CostRollUpFlag costRollUpFlag, isnull(S1.QtyApprove,0.0) qtyApprovedPreOps,
  138. d.ManualFlag manualFlag, d.RepairSOFlag repairSOFlag
  139. from SORouting as T
  140. Left Join ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo
  141. Left Join Part as P On T.Site=P.Site and T.PartNo=P.PartNo
  142. Left Join SORouting as S1 On T.Site=S1.Site and T.OrderNo=S1.OrderNo and T.PreItemNo=S1.ItemNo
  143. Left Join SORouting as S2 On T.Site=S2.Site and T.OrderNo=S2.OrderNo and T.NextItemNo=S2.ItemNo
  144. <where>
  145. Round(T.QtyScheduled,3) <![CDATA[ < ]]> round(T.QtyRequired,3) and T.ClosedFlag = 'N'
  146. <if test="username != null and username != ''">
  147. and T.site in (Select Site from AccessSite where upper(UserID)=#{username})
  148. </if>
  149. and T.OrderNo<![CDATA[ <> ]]>'9999' and isnull(D.Status,'')<![CDATA[ <> ]]>'已取消' and isnull(D.Status,'')<![CDATA[ <> ]]>'已计划'
  150. and isnull(D.Status,'')<![CDATA[ <> ]]>'已关闭'
  151. <if test="enterTime1 != null">
  152. and D.EnterDate<![CDATA[ >= ]]> #{enterTime1}
  153. </if>
  154. <if test="enterTime2 != null">
  155. and D.EnterDate-1<![CDATA[<]]> #{enterTime2}
  156. </if>
  157. <if test="needTime1 != null">
  158. and D.NeedDate<![CDATA[ >= ]]>#{needTime1}
  159. </if>
  160. <if test="needTime2 != null">
  161. and D.NeedDate<![CDATA[ <= ]]>#{needTime2}
  162. </if>
  163. <if test="site != null and site != ''">
  164. AND T.Site like '%' + #{site} + '%'
  165. </if>
  166. <if test="workCenterNo != null and workCenterNo != ''">
  167. AND T.WorkCenterNo like '%' + #{workCenterNo} + '%'
  168. </if>
  169. <if test="scheduledFlag != null and scheduledFlag != ''">
  170. AND Isnull(S1.ScheduledFlag, 'Y') = #{scheduledFlag}
  171. </if>
  172. <if test="resourceId != null and resourceId != ''">
  173. AND dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) like '%' + #{resourceId} + '(%'
  174. </if>
  175. AND T.WorkCenterNo <![CDATA[<>]]> 'FQC'
  176. </where>
  177. Order by D.NeedDate
  178. </select>
  179. </mapper>