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.

554 lines
28 KiB

2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
10 months ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
10 months ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 weeks ago
2 months ago
2 months ago
2 months ago
2 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.xujie.sys.modules.orderIssure.mapper.IssureNotifyMapper">
  4. <select id="getUserNotifyNo" resultType="SOIssueNotifyHeaderData">
  5. select top 1 a.NotifyNo,a.Site,a.NotifyDate,a.UserName,a.EnteredDate,a.Receiver,a.DepartmentID,a.Remark,a.CreditFlag,a.IssueFlag,
  6. a.IssueResult,a.PlanIssueDate,a.RealIssueDate,a.Status,a.HaveIssueRecordFlag,a.CalcFlag,a.NeedApproveFlag,a.ApprovedFlag,
  7. a.Approver,a.ApproveDate,a.WarehouseID,a.RecordVersion,a.OutWorkOrderFlag,a.ProjectID,a.OrderType,a.AuthRuleID,a.bu
  8. from SOIssueNotifyHeader a
  9. where a.Site=#{site} and a.UserName=#{userName} and a.Status='已计划'
  10. order by a.EnteredDate desc
  11. </select>
  12. <insert id="createNotify">
  13. insert into SOIssueNotifyHeader (NotifyNo,Site,NotifyDate,UserName,EnteredDate,Receiver,DepartmentID,Remark,CreditFlag,IssueFlag,IssueResult,PlanIssueDate,
  14. RealIssueDate,Status,HaveIssueRecordFlag,CalcFlag,NeedApproveFlag,ApprovedFlag,Approver,ApproveDate,WarehouseID,
  15. RecordVersion,OutWorkOrderFlag,ProjectID,OrderType,AuthRuleID,bu)
  16. values(#{notifyNo},#{site},#{notifyDate},#{userName},#{enteredDate},#{receiver},#{departmentID},#{remark},#{creditFlag},#{issueFlag},#{issueResult},#{planIssueDate},
  17. #{realIssueDate},#{status},#{haveIssueRecordFlag},#{calcFlag},#{needApproveFlag},#{approvedFlag},#{approver},#{approveDate},#{warehouseID},
  18. #{recordVersion},#{outWorkOrderFlag},#{projectID},#{orderType},#{authRuleID},#{bu}
  19. )
  20. </insert>
  21. <update id="updateNotifyBu">
  22. update SOIssueNotifyHeader set bu=#{bu} where site=#{site} and NotifyNo=#{notifyNo}
  23. </update>
  24. <select id="getNotifyNoDetail" resultType="SOIssueNotifyOrderListData">
  25. select a.NotifyNo,a.Site,a.ItemNo,a.FGPartNo,a.SOOrderNo,a.OpsItemNo,a.SeqNo,a.IssureQty,a.OutWorkOrderFlag,a.locationNo,a.needDate
  26. ,b.operation_desc itemDesc
  27. from SOIssueNotifyOrderList a
  28. left join so_routing b on a.site=b.site and a.SOOrderNo=b.order_no and b.item_no=a.OpsItemNo
  29. where a.site=#{site} and a.NotifyNo=#{notifyNo}
  30. </select>
  31. <select id="getSOScheduledRoutingListForIssure" resultType="SOScheduledRoutingData">
  32. select a.site,a.orderno,a.itemno,b.operation_desc itemDesc,a.seqno,a.qtyrequired,a.qtyreported,a.remark,
  33. a.s_scheduleddate,a.s_resourceid,dbo.getResourceDesc(a.site,a.s_resourceid) ResourceDesc,a.s_shiftno,
  34. dbo.getScheduleShiftDesc(a.site,a.s_shiftno) shiftDesc,a.s_workcenterno,a.part_no,a.operator_id,
  35. c.work_center_desc workCenterDesc,dbo.Get_PartDesc(a.site,a.part_no) partDesc,
  36. dbo.getOperatorDesc(a.site,a.operator_id) operatorDesc
  37. from soscheduledrouting a
  38. left join so_routing b on a.site=b.site and a.orderno=b.order_no and b.item_no=a.itemno
  39. left join work_center c on a.site=c.site and a.s_workcenterno=c.work_center_no
  40. left join part d on a.site=d.site and a.part_no=d.part_no
  41. <where>
  42. and a.closed_flag='N'
  43. <if test="partNo != null and partNo != ''">
  44. and a.part_no like #{partNo}
  45. </if>
  46. <if test="seqno != null and seqno != ''">
  47. and a.seqno like #{seqno}
  48. </if>
  49. <if test="operatorDesc != null and operatorDesc != ''">
  50. and dbo.getOperatorDesc(a.site,a.operator_id) like #{operatorDesc}
  51. </if>
  52. <if test="orderno != null and orderno != ''">
  53. and a.orderno like #{orderno}
  54. </if>
  55. <if test="sShiftno != null and sShiftno != ''">
  56. and a.s_shiftno like #{sShiftno}
  57. </if>
  58. <if test="sResourceid != null and sResourceid != ''">
  59. and a.s_resourceid like #{sResourceid}
  60. </if>
  61. <if test="sWorkcenterno != null and sWorkcenterno != ''">
  62. and a.s_workcenterno like #{sWorkcenterno}
  63. </if>
  64. <if test="operatorId != null and operatorId != ''">
  65. and a.operator_id like #{operatorId}
  66. </if>
  67. <if test="startDate != null ">
  68. AND a.s_scheduleddate >= #{startDate}
  69. </if>
  70. <if test="endDate != null ">
  71. AND #{endDate} >= a.s_scheduleddate
  72. </if>
  73. and a.site=#{site}
  74. and d.sourceBu=#{bu}
  75. </where>
  76. order by a.s_scheduleddate
  77. </select>
  78. <!-- <select id="getSOSBOMForIssure" resultType="SOIssueNotifyOrderMaterialListData">-->
  79. <!-- select a.site,b.ItemNo,a.item_no_mat as BOMItemNo,a.component_partno as ComponentPartNo,-->
  80. <!-- round(a.qty_assembly*b.IssureQty,2) qty_required , round(a.qty_issue,2) qty_issue,c.QtyToIssue,#{notifyNo} as notifyNo-->
  81. <!-- ,dbo.Get_PartDesc(a.site,a.component_partno) partDesc,Round( dbo.get_MaterialOnUse(a.site,a.order_no,a.item_no,a.component_partno),3) qtyOnHand-->
  82. <!-- from so_bom a-->
  83. <!-- left join SOIssueNotifyOrderList b on a.site=b.site and b.NotifyNo=#{notifyNo} and b.seqNo=#{seqno}-->
  84. <!-- left join SOIssueNotifyOrderMaterialList c on a.site=c.site and a.item_no_mat=c.BOMItemNo and c.NotifyNo=#{notifyNo} and c.itemNo=b.itemNo-->
  85. <!--&lt;!&ndash; left join SOIssueNotifyOrderList d on a.site=d.site and c.NotifyNo=d.NotifyNo and c.itemNo=d.itemNo&ndash;&gt;-->
  86. <!-- where a.site=#{site} and a.order_no=#{orderno} and a.item_no=#{itemno,jdbcType=DOUBLE} and a.control_mes='Y'-->
  87. <!-- order by a.item_no-->
  88. <!-- </select>-->
  89. <select id="getSOSBOMForIssure" resultType="SOIssueNotifyOrderMaterialListData">
  90. select a.site,b.ItemNo,a.item_no_mat as BOMItemNo,a.component_partno as ComponentPartNo,
  91. round(a.qty_assembly*b.IssureQty,2) qty_required , round(a.qty_issue,2) qty_issue,c.QtyToIssue,#{notifyNo} as notifyNo
  92. ,dbo.Get_PartDesc(a.site,a.component_partno) partDesc,Round( dbo.get_MaterialOnUse(a.site,a.order_no,a.item_no,a.component_partno),3) qtyOnHand,
  93. round(sum(h.qty_on_hand),2) stockQty,c.remark
  94. from so_bom a
  95. left join SOIssueNotifyOrderList b on a.site=b.site and b.NotifyNo=#{notifyNo} and b.seqNo=#{seqno}
  96. left join SOIssueNotifyOrderMaterialList c on a.site=c.site and a.item_no_mat=c.BOMItemNo and c.NotifyNo=#{notifyNo} and c.itemNo=b.itemNo
  97. left join view_custdev_currentstock h on a.site=h.site and a.component_partno=h.part_no
  98. <!-- left join SOIssueNotifyOrderList d on a.site=d.site and c.NotifyNo=d.NotifyNo and c.itemNo=d.itemNo-->
  99. where a.site=#{site} and a.order_no=#{orderno} and a.item_no=#{itemno,jdbcType=DOUBLE} and a.control_mes='Y'
  100. group by a.site,b.ItemNo,a.item_no_mat,a.component_partno,a.qty_assembly,b.IssureQty,a.qty_issue,c.QtyToIssue,a.order_no,a.item_no,a.control_mes,c.remark
  101. <!-- UNION all-->
  102. <!-- select b.site,b.ItemNo,c.BOMItemNo,c.ComponentPartNo,-->
  103. <!-- null as qty_required , null qty_issue,c.QtyToIssue,#{notifyNo} as notifyNo-->
  104. <!-- ,dbo.Get_PartDesc(c.site,c.ComponentPartNo) partDesc,Round( dbo.get_MaterialOnUse(b.site,b.SOOrderNo ,b.OpsItemNo,c.ComponentPartNo),3) qtyOnHand,-->
  105. <!-- round(sum(h.qty_on_hand),2) stockQty,c.remark-->
  106. <!-- from SOIssueNotifyOrderList b-->
  107. <!-- left join SOIssueNotifyOrderMaterialList c on b.site=c.site and c.NotifyNo=#{notifyNo} and c.itemNo=b.itemNo-->
  108. <!-- left join so_bom a on a.site=b.site and a.order_no=b.SOOrderNo and a.item_no=b.OpsItemNo and a.control_mes='Y'-->
  109. <!-- and a.component_partno=c.ComponentPartNo-->
  110. <!-- left join view_custdev_currentstock h on c.site=h.site and c.ComponentPartNo=h.part_no-->
  111. <!-- WHERE b.NotifyNo=#{notifyNo} and b.seqNo=#{seqno} and b.site=#{site} and a.item_no_mat is null and c.ComponentPartNo is not null-->
  112. <!-- group by b.site,b.ItemNo,c.BOMItemNo,c.ComponentPartNo,c.QtyToIssue,c.site,b.SOOrderNo ,b.OpsItemNo,c.remark-->
  113. </select>
  114. <select id="searchOtherPart" resultType="SOIssueNotifyOrderMaterialListData">
  115. select NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original,issueType
  116. ,dbo.Get_PartDesc(site,ComponentPartNo) partDesc,remark
  117. from SOIssueNotifyOrderMaterialList where NotifyNo=#{notifyNo} and site=#{site} and issueType=#{issueType}
  118. </select>
  119. <select id="getNextItemForSOIssueNotifyOrderList" resultType="Double">
  120. select isnull(max(ItemNo),0)+1 from SOIssueNotifyOrderList where site=#{site} and NotifyNo=#{notifyNo} and 998>ItemNo
  121. </select>
  122. <insert id="saveSOIssueNotifyOrderList">
  123. insert into SOIssueNotifyOrderList(NotifyNo,Site,ItemNo,FGPartNo,SOOrderNo,OpsItemNo,SeqNo,IssureQty,OutWorkOrderFlag,LocationNo,needDate)
  124. values(#{notifyNo},#{site},#{itemNo},#{fGPartNo},#{sOOrderNo},#{opsItemNo},#{seqNo},#{issureQty,jdbcType=DECIMAL},#{outWorkOrderFlag}
  125. ,#{locationNo},#{needDate})
  126. </insert>
  127. <delete id="deleteSOIssueNotifyOrderMaterialListData">
  128. delete from SOIssueNotifyOrderMaterialList where site=#{site} and NotifyNo=#{notifyNo} and ItemNo=#{itemNo}
  129. </delete>
  130. <insert id="batchSaveSOIssueNotifyOrderMaterialListData">
  131. insert into SOIssueNotifyOrderMaterialList (NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original,issueType,remark)
  132. values
  133. <foreach collection="list" separator="," item="item">
  134. (#{item.notifyNo},#{item.site},#{item.itemNo},#{item.bOMItemNo},#{item.componentPartNo},#{item.qtyToIssue},0,#{item.issueType},#{item.remark})
  135. </foreach>
  136. </insert>
  137. <insert id="saveSOIssueNotifyOrderMaterialListData">
  138. insert into SOIssueNotifyOrderMaterialList (NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original,issueType,remark)
  139. values
  140. (#{notifyNo},#{site},#{itemNo},#{bOMItemNo},#{componentPartNo},#{qtyToIssue},0,#{issueType},#{remark})
  141. </insert>
  142. <delete id="deleteNotifySOS">
  143. delete from SOIssueNotifyOrderList where site=#{site} and NotifyNo=#{notifyNo} and ItemNo=#{itemNo}
  144. </delete>
  145. <update id="xiadaNotifyHeader">
  146. update SOIssueNotifyHeader set PlanIssueDate=#{planIssueDate},remark=#{remark} ,status='已下达' where site=#{site} and NotifyNo=#{notifyNo}
  147. </update>
  148. <delete id="deleteNotifyHeader">
  149. delete from SOIssueNotifyHeader where site=#{site} and NotifyNo=#{notifyNo}
  150. </delete>
  151. <select id="searchNotifyHeader" parameterType="SOIssueNotifyHeaderData" resultType="SOIssueNotifyHeaderData">
  152. select a.NotifyNo,a.Site,a.NotifyDate,a.UserName,a.EnteredDate,a.Receiver,a.DepartmentID,a.Remark,a.CreditFlag,a.IssueFlag,
  153. a.IssueResult,a.PlanIssueDate,a.RealIssueDate,a.Status,a.HaveIssueRecordFlag,a.CalcFlag,a.NeedApproveFlag,a.ApprovedFlag,
  154. a.Approver,a.ApproveDate,a.WarehouseID,a.RecordVersion,a.OutWorkOrderFlag,a.ProjectID,a.OrderType,a.AuthRuleID,(CASE WHEN a.confirm_status IS NULL THEN '未确认' ELSE a.confirm_status END) as confirm_status ,dbo.plm_get_user_display(a.Site,a.UserName) userDisplay,
  155. a.confirm_user_id,a.confirm_username,a.confirm_user_display,a.confirm_date,
  156. c.workShopName,d.needDate
  157. from SOIssueNotifyHeader a
  158. left join sys_user b on a.UserName=b.username
  159. left join eam_WorkShop c on b.workShopId=c.workShopId
  160. LEFT JOIN SOIssueNotifyOrderList d on a.site=d.site and a.NotifyNo=d.NotifyNo and d.ItemNo = '1'
  161. <where>
  162. <if test="query.notifyNo != null and query.notifyNo != ''">
  163. AND a.NotifyNo = #{query.notifyNo}
  164. </if>
  165. <if test="query.status != null and query.status != ''">
  166. AND a.Status = #{query.status}
  167. </if>
  168. <if test = "query.userName != null and query.userName != ''">
  169. AND a.UserName LIKE #{query.userName}
  170. </if>
  171. <if test = "query.issueFlag != null and query.issueFlag != ''">
  172. AND a.issueFlag LIKE #{query.issueFlag}
  173. </if>
  174. <if test = "query.issueResult != null and query.issueResult != ''">
  175. AND a.issueResult LIKE #{query.issueResult}
  176. </if>
  177. <if test = "query.startDate != null ">
  178. AND a.NotifyDate >= #{query.startDate}
  179. </if>
  180. <if test = "query.endDate != null">
  181. AND #{query.endDate} >=a.NotifyDate
  182. </if>
  183. <if test = "query.confirmStatus != null and query.confirmStatus != ''">
  184. <choose>
  185. <when test="query.confirmStatus == '未确认'">
  186. AND (a.confirm_status = #{query.confirmStatus} or a.confirm_status is null)
  187. </when>
  188. <otherwise>
  189. AND a.confirm_status = #{query.confirmStatus}
  190. </otherwise>
  191. </choose>
  192. </if>
  193. <if test = "query.sql != null and query.sql != ''">
  194. ${query.sql}
  195. </if>
  196. <if test = "query.workShopId != null and query.workShopId != ''">
  197. AND b.workShopId in ${query.workShopId}
  198. </if>
  199. </where>
  200. order by a.NotifyNo
  201. </select>
  202. <select id="searchNotifyOrderList" resultType="SOIssueNotifyOrderListData">
  203. select a.NotifyNo,a.Site,a.ItemNo,a.FGPartNo,a.SOOrderNo,a.OpsItemNo,a.SeqNo,
  204. a.IssureQty,a.OutWorkOrderFlag ,b.operation_desc itemDesc,a.locationNo,a.needDate,
  205. dbo.Get_PartDesc(a.site,a.FGPartNo) partDesc
  206. from SOIssueNotifyOrderList a
  207. left join so_routing b on a.site=b.site and a.SOOrderNo=b.order_no and a.OpsItemNo=b.item_no
  208. where a.NotifyNo=#{notifyNo} and a.site=#{site}
  209. order by a.ItemNo
  210. </select>
  211. <select id="searchNotifyMaterialList" resultType="SOIssueNotifyOrderMaterialListData">
  212. select a.NotifyNo,a.Site,a.ItemNo,a.BOMItemNo,a.ComponentPartNo,a.QtyToIssue,a.QtyToIssue_Original
  213. ,b.FGPartNo,b.OpsItemNo,b.SOOrderNo orderNo,b.SeqNo, dbo.Get_PartDesc(a.site,a.ComponentPartNo) partDesc
  214. ,b.locationNo,a.issueType,b.needDate,a.remark,a.timeout_reason
  215. from SOIssueNotifyOrderMaterialList a
  216. left join SOIssueNotifyOrderList b on a.site=b.site and a.NotifyNo=b.NotifyNo and a.ItemNo=b.ItemNo
  217. where a.NotifyNo=#{notifyNo} and a.site=#{site}
  218. order by b.needDate,a.ItemNo
  219. </select>
  220. <select id="searchSumNotifyMaterialList" resultType="SOIssueNotifyOrderMaterialListData">
  221. select a.ComponentPartNo,sum(a.QtyToIssue) QtyToIssue,sum(isnull(a.QtyToIssue_Original,0)) QtyToIssue_Original,
  222. dbo.Get_PartDesc(a.site,a.ComponentPartNo) partDesc,a.issueType
  223. from SOIssueNotifyOrderMaterialList a
  224. where a.NotifyNo=#{notifyNo} and a.site=#{site}
  225. group by a.site,a.ComponentPartNo,a.issueType
  226. order by a.issueType
  227. </select>
  228. <select id="getPartList" resultType="PartData" >
  229. select top 1000 part_no,part_desc,umid,spec,sku,cinv_source_code
  230. from part
  231. <where>
  232. and site = #{site} and sourceBu = #{sourceBu} and control_mes='G'
  233. <if test="partNo != null and partNo != ''">
  234. AND part_no LIKE '%'+ #{partNo} + '%'
  235. </if>
  236. <if test = "partDesc != null and partDesc != ''">
  237. AND part_desc LIKE '%'+ #{partDesc}+ '%'
  238. </if>
  239. <if test = "spec != null and spec != ''">
  240. AND spec LIKE '%'+ #{spec}+ '%'
  241. </if>
  242. </where>
  243. </select>
  244. <select id="getNoControlPartList" resultType="PartData" >
  245. select top 1000 part_no,part_desc,umid,spec,sku,cinv_source_code
  246. from part
  247. <where>
  248. and site = #{site} and sourceBu = #{sourceBu} and control_mes='N'
  249. <if test="partNo != null and partNo != ''">
  250. AND part_no LIKE '%'+ #{partNo} + '%'
  251. </if>
  252. <if test = "partDesc != null and partDesc != ''">
  253. AND part_desc LIKE '%'+ #{partDesc}+ '%'
  254. </if>
  255. <if test = "spec != null and spec != ''">
  256. AND spec LIKE '%'+ #{spec}+ '%'
  257. </if>
  258. </where>
  259. </select>
  260. <select id="checkPartStock" resultType="SOIssueNotifyOrderMaterialListData" >
  261. select g.ComponentPartNo,g.QtyToIssue ,g.partDesc,sum(h.qty_on_hand) qty_on_hand,sum(h.qty_available) qty_available
  262. from
  263. (
  264. select a.ComponentPartNo,sum(a.QtyToIssue) QtyToIssue,sum(isnull(a.QtyToIssue_Original,0)) QtyToIssue_Original,
  265. dbo.Get_PartDesc(a.site,a.ComponentPartNo) partDesc,a.site
  266. from SOIssueNotifyOrderMaterialList a
  267. where a.NotifyNo=#{notifyNo} and a.site=#{site}
  268. group by a.site,a.ComponentPartNo
  269. ) g left join view_custdev_currentstock h on g.site=h.site and g.ComponentPartNo=h.part_no
  270. group by g.ComponentPartNo,g.QtyToIssue ,g.partDesc
  271. </select>
  272. <select id="checkDeleteOrderList" resultType="SOIssueNotifyOrderMaterialListData" >
  273. select NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original
  274. from SOIssueNotifyOrderMaterialList where Site=#{site} and NotifyNo=#{notifyNo}
  275. and ItemNo=#{itemNo,jdbcType=DOUBLE}
  276. </select>
  277. <update id="updateNotifyStatus" >
  278. update SOIssueNotifyHeader set status=#{status}
  279. where Site=#{site} and NotifyNo=#{notifyNo}
  280. </update>
  281. <select id="checkDeleteMaterial" resultType="SOIssueNotifyOrderMaterialListData">
  282. select NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original
  283. from SOIssueNotifyOrderMaterialList where Site=#{site} and NotifyNo=#{notifyNo}
  284. and ItemNo=#{itemNo} and BOMItemNo=#{bOMItemNo}
  285. </select>
  286. <select id="deleteNotifyMaterial">
  287. delete from SOIssueNotifyOrderMaterialList where Site=#{site} and NotifyNo=#{notifyNo}
  288. and ItemNo=#{itemNo} and BOMItemNo=#{bOMItemNo}
  289. </select>
  290. <insert id="saveIssueNotifyChangeLog">
  291. insert into IssueNotifyChangeLog (Site,NotifyNo,ItemNo,SOOrderNo,SeqNo,ComponentPartNo,QtyToIssue,updateType,updateBy,updateDate,issueType)
  292. values (#{site},#{notifyNo},#{itemNo},#{sOOrderNo},#{seqNo},#{componentPartNo},#{qtyToIssue,jdbcType=DOUBLE},#{updateType},#{updateBy},#{updateDate},#{issueType})
  293. </insert>
  294. <select id="getSOIssueNotifyOrderListData" resultType="com.xujie.sys.modules.orderIssure.vo.SOIssueNotifyOrderList">
  295. select NotifyNo,Site,ItemNo,FGPartNo,SOOrderNo,OpsItemNo,SeqNo,IssureQty,OutWorkOrderFlag,LocationNo,needDate
  296. from SOIssueNotifyOrderList where Site=#{site} and NotifyNo=#{notifyNo}
  297. and ItemNo=#{itemNo}
  298. </select>
  299. <select id="checkOtherPart" resultType="SOIssueNotifyOrderMaterialListData">
  300. select NotifyNo,Site,ItemNo,BOMItemNo,ComponentPartNo,QtyToIssue,QtyToIssue_Original
  301. from SOIssueNotifyOrderMaterialList where Site=#{site} and NotifyNo=#{notifyNo}
  302. and ComponentPartNo=#{componentPartNo}
  303. </select>
  304. <select id="getNextBomItemNo" resultType="String">
  305. SELECT #{str}+
  306. CONVERT(VARCHAR(50),isnull( max(CONVERT(int,SUBSTRING(BOMItemNo, LEN(#{str})+1, LEN(BOMItemNo)))+1),1))
  307. FROM SOIssueNotifyOrderMaterialList where Site=#{site} and NotifyNo=#{notifyNo}
  308. and BOMItemNo like #{str}+'%'
  309. </select>
  310. <select id="searchIssueNotifyChangeLog" resultType="com.xujie.sys.modules.orderIssure.vo.IssueNotifyChangeLog">
  311. select Site,NotifyNo,ItemNo,SOOrderNo,SeqNo,ComponentPartNo,QtyToIssue,updateType,updateBy,updateDate,issueType
  312. from IssueNotifyChangeLog where Site=#{site} and NotifyNo=#{notifyNo}
  313. </select>
  314. <select id="insertNotifyLogClose" >
  315. insert into SOIssueNotifyLog (Site,NotifyNo,[Action],username,ActionTime,ActionRemark)
  316. values (#{site},#{notifyNo},'关闭',#{username},GetDate(),#{closeRemark})
  317. </select>
  318. <select id="insertNotifyLogOpen">
  319. insert into SOIssueNotifyLog (Site,NotifyNo,[Action],username,ActionTime,ActionRemark)
  320. values (#{site},#{notifyNo},'开启',#{username},GetDate(),'重新开启')
  321. </select>
  322. <select id="searchNotifyLogClose" resultType="SOIssueNotifyLogData">
  323. select id,Site,NotifyNo,[Action],username,ActionTime,ActionRemark ,dbo.plm_get_user_display(Site,username) userDisplay
  324. from SOIssueNotifyLog where site=#{site} and NotifyNo=#{notifyNo}
  325. order by id
  326. </select>
  327. <!-- 超时未配料清单:已发数量 < 申请数量 且 当前时间 > 需求时间 -->
  328. <select id="searchOvertimeMaterialList" resultType="SOIssueNotifyOrderMaterialListData">
  329. SELECT
  330. m.NotifyNo,
  331. m.Site,
  332. m.ItemNo,
  333. m.BOMItemNo,
  334. m.ComponentPartNo,
  335. m.QtyToIssue,
  336. m.QtyToIssue_Original,
  337. m.issueType,
  338. m.remark ,
  339. dbo.Get_PartDesc(m.Site, m.ComponentPartNo) AS partDesc,
  340. o.needDate,
  341. o.locationNo,
  342. h.Status,
  343. (CASE WHEN h.confirm_status IS NULL THEN '未确认' ELSE h.confirm_status END) AS confirmStatus,
  344. h.UserName,
  345. dbo.plm_get_user_display(h.Site, h.UserName) AS userDisplay,
  346. h.NotifyDate,
  347. h.EnteredDate,
  348. w.workShopName,
  349. o.SOOrderNo as orderNo,
  350. o.OpsItemNo as opsItemNo,
  351. o.SeqNo as seqNo,
  352. m.timeout_reason,
  353. calc.overtimeMinutes
  354. FROM SOIssueNotifyOrderMaterialList m
  355. INNER JOIN SOIssueNotifyOrderList o
  356. ON m.Site = o.Site AND m.NotifyNo = o.NotifyNo AND m.ItemNo = o.ItemNo
  357. INNER JOIN SOIssueNotifyHeader h
  358. ON m.Site = h.Site AND m.NotifyNo = h.NotifyNo
  359. LEFT JOIN sys_user u
  360. ON h.UserName = u.username
  361. LEFT JOIN eam_WorkShop w
  362. ON u.workShopId = w.workShopId
  363. CROSS APPLY (
  364. SELECT
  365. CASE
  366. when h.confirm_status = '确认' then DATEDIFF(MINUTE, o.needDate, h.confirm_date)/ 60.0
  367. else DATEDIFF(MINUTE, o.needDate, GETDATE())/ 60.0
  368. end as overtimeMinutes
  369. ) AS calc
  370. <where>
  371. AND m.Site = #{query.site}
  372. AND DATEDIFF(MINUTE, o.needDate, GETDATE()) > 0
  373. AND calc.overtimeMinutes &gt; 0
  374. <if test="query.overtimeNotDistributed != null and query.overtimeNotDistributed == false">
  375. AND ISNULL(m.QtyToIssue_Original,0) &lt; ISNULL(m.QtyToIssue,0)
  376. </if>
  377. <if test="query.notifyNo != null and query.notifyNo != ''">
  378. AND m.NotifyNo = #{query.notifyNo}
  379. </if>
  380. <if test="query.componentPartNo != null and query.componentPartNo != ''">
  381. AND m.ComponentPartNo LIKE '%' + #{query.componentPartNo} + '%'
  382. </if>
  383. <if test="query.partDesc != null and query.partDesc != ''">
  384. AND dbo.Get_PartDesc(m.Site, m.ComponentPartNo) LIKE '%' + #{query.partDesc} + '%'
  385. </if>
  386. <if test="query.userName != null and query.userName != ''">
  387. AND h.UserName LIKE #{query.userName}
  388. </if>
  389. <if test="query.status != null and query.status != ''">
  390. AND h.Status = #{query.status}
  391. </if>
  392. <if test="query.confirmStatus != null and query.confirmStatus != ''">
  393. <choose>
  394. <when test="query.confirmStatus == '未确认'">
  395. AND (h.confirm_status = #{query.confirmStatus} OR h.confirm_status IS NULL)
  396. </when>
  397. <otherwise>
  398. AND h.confirm_status = #{query.confirmStatus}
  399. </otherwise>
  400. </choose>
  401. </if>
  402. <!-- 配料状态 = 超时原因-->
  403. <if test="query.timeoutReason != null and query.timeoutReason != ''">
  404. <choose>
  405. <when test="query.timeoutReason == 'isemtpy'">
  406. AND (LTRIM(RTRIM(m.timeout_reason)) = '' OR m.timeout_reason IS NULL)
  407. </when>
  408. <otherwise>
  409. AND m.timeout_reason = #{query.timeoutReason}
  410. </otherwise>
  411. </choose>
  412. </if>
  413. <if test="query.startDate != null">
  414. AND h.NotifyDate <![CDATA[>=]]> #{query.startDate}
  415. </if>
  416. <if test="query.endDate != null">
  417. AND #{query.endDate} <![CDATA[>=]]> h.NotifyDate
  418. </if>
  419. <choose>
  420. <when test="query.workShopList != null and query.workShopList.size >0">
  421. AND w.WorkShopId IN (
  422. <foreach collection="query.workShopList" item="item" separator=",">
  423. #{item}
  424. </foreach>
  425. )
  426. </when>
  427. <otherwise>
  428. AND w.WorkShopId in ('WS005','WS006')
  429. </otherwise>
  430. </choose>
  431. <if test="query.timeoutReasons != null and query.timeoutReasons.size > 0">
  432. AND (
  433. m.timeout_reason IN (
  434. <foreach collection="query.timeoutReasons" item="item" separator=",">
  435. #{item}
  436. </foreach>
  437. )
  438. <if test="'isemtpy' in query.timeoutReasons">
  439. OR LTRIM(RTRIM(m.timeout_reason)) = ''
  440. OR m.timeout_reason IS NULL
  441. </if>
  442. <if test="'isall' in query.timeoutReasons">
  443. OR LTRIM(RTRIM(m.timeout_reason)) != ''
  444. OR m.timeout_reason IS NOT NULL
  445. </if>
  446. )
  447. </if>
  448. </where>
  449. ORDER BY m.NotifyNo, o.needDate, m.ItemNo
  450. </select>
  451. <update id="updateTimeoutReason">
  452. update SOIssueNotifyOrderMaterialList
  453. set timeout_reason = #{data.timeoutReason}
  454. where Site = #{data.site}
  455. and NotifyNo = #{data.notifyNo}
  456. and ItemNo = #{data.itemNo}
  457. and BOMItemNo = #{data.bOMItemNo}
  458. </update>
  459. <select id="searchTimeMaterialList"
  460. resultType="com.xujie.sys.modules.orderIssure.entity.SOIssueNotifyOrderMaterialListData">
  461. SELECT
  462. m.NotifyNo,
  463. m.Site,
  464. m.ItemNo,
  465. m.BOMItemNo,
  466. m.ComponentPartNo,
  467. m.QtyToIssue,
  468. m.QtyToIssue_Original,
  469. m.issueType,
  470. m.remark AS timeoutReason,
  471. dbo.Get_PartDesc(m.Site, m.ComponentPartNo) AS partDesc,
  472. o.needDate,
  473. o.locationNo,
  474. h.Status,
  475. (CASE WHEN h.confirm_status IS NULL THEN '未确认' ELSE h.confirm_status END) AS confirmStatus,
  476. h.UserName,
  477. dbo.plm_get_user_display(h.Site, h.UserName) AS userDisplay,
  478. h.NotifyDate,
  479. w.workShopName,
  480. o.SOOrderNo as orderNo,
  481. o.OpsItemNo as opsItemNo,
  482. o.SeqNo as seqNo,
  483. DATEDIFF(MINUTE, o.needDate, GETDATE())/ 60.0 AS overtimeMinutes
  484. FROM SOIssueNotifyOrderMaterialList m
  485. INNER JOIN SOIssueNotifyOrderList o
  486. ON m.Site = o.Site AND m.NotifyNo = o.NotifyNo AND m.ItemNo = o.ItemNo
  487. INNER JOIN SOIssueNotifyHeader h
  488. ON m.Site = h.Site AND m.NotifyNo = h.NotifyNo
  489. LEFT JOIN sys_user u
  490. ON h.UserName = u.username
  491. LEFT JOIN eam_WorkShop w
  492. ON u.workShopId = w.workShopId
  493. <where>
  494. AND m.Site = '2'
  495. AND ISNULL(m.QtyToIssue_Original,0) &lt; ISNULL(m.QtyToIssue,0)
  496. AND DATEDIFF(MINUTE, o.needDate, GETDATE()) > 0
  497. AND m.timeout_reason is null
  498. AND h.Status = '已下达'
  499. AND (h.confirm_status = '未确认' OR h.confirm_status IS NULL)
  500. AND w.WorkShopId in ('WS005','WS006')
  501. </where>
  502. ORDER BY m.NotifyNo, o.needDate, m.ItemNo
  503. </select>
  504. </mapper>