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.

170 lines
9.4 KiB

4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months 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.customer.dao.ShipmentIssueMapper">
  4. <select id="getUserNotifyNo" resultType="SOIssueNotifyHeaderData">
  5. select top 1 a.notify_no,a.site,a.notify_date,a.username,a.entered_date,a.receiver,a.department_id,a.remark,a.credit_flag,a.issue_flag,
  6. a.issue_result,a.plan_issue_date,a.real_issue_date,a.status,a.have_issue_record_flag,a.calc_flag,a.need_approve_flag,a.approved_flag,
  7. a.approver,a.approve_date,a.warehouse_id,a.record_version,a.out_work_order_flag,a.project_id,a.order_type,a.auth_rule_id,a.handler_username,a.handler_display,a.push_wcs_flag
  8. FROM SOIssueNotifyHeader a WITH (NOLOCK)
  9. WHERE a.site=#{site} AND a.username=#{username} AND a.status='UNISSUE' AND a.order_type='shipment'
  10. ORDER BY a.entered_date DESC
  11. </select>
  12. <!-- rqrq - 查询发货申请单订单明细(包含运输标志和配送区域) -->
  13. <select id="getNotifyNoDetail" resultType="com.gaotao.modules.notify.entity.SOIssueNotifyOrderList">
  14. SELECT a.notify_no, a.site, a.item_no, a.fgpart_no, a.soorder_no, a.ops_item_no, a.seq_no, a.issure_qty, a.out_work_order_flag, a.location_no, a.need_date,
  15. a.release_no, a.sequence_no, a.push_wms_flag, a.transport_flag, a.production_area, ar.area_desc AS areaDesc
  16. FROM SOIssueNotifyOrderList a WITH (NOLOCK)
  17. LEFT JOIN area ar WITH (NOLOCK) ON a.production_area = ar.area_id
  18. WHERE a.site=#{site} AND a.notify_no=#{notifyNo} AND a.order_type='shipment'
  19. </select>
  20. <!-- 注意:不能用NOLOCK,结果用于生成新的item_no插入记录,脏读可能导致主键冲突 - rqrq -->
  21. <select id="getNextItemForShipmentOrderList" resultType="java.math.BigDecimal">
  22. SELECT ISNULL(MAX(item_no), 0) + 1 FROM SOIssueNotifyOrderList WHERE site=#{site} AND notify_no=#{notifyNo} AND order_type='shipment'
  23. </select>
  24. <insert id="saveIssueNotifyOrderList">
  25. insert into SOIssueNotifyOrderList(notify_no,site,item_no,fgpart_no,soorder_no,issure_qty,out_work_order_flag,need_date,release_no,sequence_no,order_type,production_area,push_wms_flag,transport_flag)
  26. values(#{notifyNo},#{site},#{itemNo},#{fgPartNo},#{soorderNo},#{issureQty,jdbcType=DECIMAL},#{outWorkOrderFlag}
  27. ,#{needDate},#{releaseNo},#{sequenceNo},#{orderType},#{productionArea},#{pushWmsFlag},#{transportFlag})
  28. </insert>
  29. <!-- rqrq - 关联part_attribute表查询is_in_wh字段(去除order_type限制,支持所有订单类型) -->
  30. <select id="selectOrderMaterialList"
  31. resultType="com.gaotao.modules.customer.entity.vo.SOIssueNotifyOrderMaterialListShipmentVo">
  32. SELECT
  33. a.notify_no
  34. ,a.site
  35. ,a.item_no
  36. ,a.BOM_item_no
  37. ,a.component_part_no
  38. ,a.qty_to_issue
  39. ,a.qty_to_issue_original
  40. ,a.issue_type
  41. ,a.remark
  42. ,a.order_type
  43. ,ISNULL(pa.is_in_wh, '未维护') as isInWh
  44. FROM
  45. SOIssueNotifyOrderMaterialList a
  46. LEFT JOIN part_attribute pa ON a.site=pa.site AND a.component_part_no=pa.part_no
  47. WHERE
  48. a.site = #{data.site}
  49. AND a.notify_no = #{data.notifyNo}
  50. AND a.item_no = #{data.itemNo}
  51. ORDER BY
  52. a.bom_item_no ASC;
  53. </select>
  54. <delete id="deleteNotifyUnissue">
  55. delete from SOIssueNotifyOrderList where site=#{site} and notify_no=#{notifyNo} and item_no=#{itemNo}
  56. </delete>
  57. <delete id="deleteUnissueNotifyOrderMaterialListData">
  58. delete from SOIssueNotifyOrderMaterialList where site=#{site} and notify_no=#{notifyNo} and item_no=#{itemNo}
  59. </delete>
  60. <insert id="batchSaveShipmentMaterialListData">
  61. insert into SOIssueNotifyOrderMaterialList (notify_no,site,item_no,BOM_item_no,component_part_no,qty_to_issue,qty_to_issue_original,issue_type,remark,order_type)
  62. values
  63. <foreach collection="data" separator="," item="item">
  64. (#{item.notifyNo},#{item.site},#{item.itemNo},#{item.bOMItemNo},#{item.componentPartNo},#{item.qtyToIssue},#{item.qtyToIssueOriginal},#{item.issueType},rtrim(#{item.remark}),#{item.orderType})
  65. </foreach>
  66. </insert>
  67. <!-- 优化:添加 WITH (ROWLOCK) 避免锁升级导致死锁 - rqrq -->
  68. <update id="updateNotifyStatus">
  69. UPDATE SOIssueNotifyHeader WITH (ROWLOCK)
  70. SET plan_issue_date = #{planIssueDate}, remark = #{remark}, status = 'ISSUE'
  71. WHERE site = #{site} AND notify_no = #{notifyNo}
  72. </update>
  73. <delete id="deleteNotifyHeader">
  74. delete from SOIssueNotifyHeader where site=#{site} and notify_no=#{notifyNo}
  75. </delete>
  76. <delete id="deleteOrderMaterialList">
  77. delete from SOIssueNotifyOrderMaterialList where site=#{site} and notify_no=#{notifyNo}
  78. </delete>
  79. <delete id="deleteOrderList">
  80. delete from SOIssueNotifyOrderList where site=#{site} and notify_no=#{notifyNo}
  81. </delete>
  82. <select id="searchNotifyHeader" resultType="com.gaotao.modules.notify.entity.SOIssueNotifyHeader">
  83. select a.notify_no,a.site,a.notify_date,a.username,a.entered_date,a.receiver,a.department_id,a.remark,a.credit_flag,a.issue_flag,
  84. a.issue_result,a.plan_issue_date,a.real_issue_date,a.status,a.have_issue_record_flag,a.calc_flag,a.need_approve_flag,a.approved_flag,
  85. a.approver,a.approve_date,a.warehouse_id,a.record_version,a.out_work_order_flag,a.project_id,a.order_type,a.auth_rule_id,a.handler_username,a.handler_display,a.push_wcs_flag
  86. FROM SOIssueNotifyHeader a WITH (NOLOCK)
  87. LEFT JOIN sys_user b WITH (NOLOCK) ON a.username=b.username
  88. <where>
  89. and a.order_type='shipment'
  90. <if test="data.notifyNo != null and data.notifyNo != ''">
  91. AND a.notify_no LIKE concat('%',#{data.notifyNo},'%')
  92. </if>
  93. <if test="data.status != null and data.status != ''">
  94. AND a.status = #{data.status}
  95. </if>
  96. <if test = "data.username != null and data.username != ''">
  97. AND a.username LIKE #{data.username}
  98. </if>
  99. <if test="data.startDate != null">
  100. AND CONVERT(date, a.notify_date) >= CONVERT(date, #{data.startDate})
  101. </if>
  102. <if test="data.endDate != null">
  103. AND CONVERT(date, a.notify_date) &lt; DATEADD(day, 1, CONVERT(date, #{data.endDate}))
  104. </if>
  105. <if test = "data.orderStatusList != null and data.orderStatusList.size()>0" >
  106. AND a.status in
  107. <foreach collection="data.orderStatusList" item="status" open="(" close=")" separator=",">
  108. #{status}
  109. </foreach>
  110. </if>
  111. <if test="data.pushWcsFlag != null and data.pushWcsFlag != ''">
  112. AND a.push_wcs_flag = #{data.pushWcsFlag}
  113. </if>
  114. and a.status!='UNISSUE'
  115. </where>
  116. order by a.notify_no desc
  117. </select>
  118. <!-- rqrq - 检查用户是否有未下达的shipment申请单 -->
  119. <select id="checkUserHasUnissueShipment" resultType="com.gaotao.modules.notify.entity.SOIssueNotifyHeader">
  120. select top 1 a.notify_no,a.site,a.notify_date,a.username,a.entered_date,a.receiver,a.department_id,a.remark,
  121. a.credit_flag,a.issue_flag,a.issue_result,a.plan_issue_date,a.real_issue_date,a.status,
  122. a.have_issue_record_flag,a.calc_flag,a.need_approve_flag,a.approved_flag,a.approver,a.approve_date,
  123. a.warehouse_id,a.record_version,a.out_work_order_flag,a.project_id,a.order_type,a.auth_rule_id,
  124. a.handler_username,a.handler_display,a.push_wcs_flag
  125. FROM SOIssueNotifyHeader a WITH (NOLOCK)
  126. WHERE a.site=#{site} AND a.username=#{username} AND a.status='UNISSUE' AND a.order_type='shipment'
  127. ORDER BY a.entered_date DESC
  128. </select>
  129. <!-- rqrq - 取消下达发货申请单(更新status为UNISSUE) -->
  130. <!-- 优化:添加 WITH (ROWLOCK) 避免锁升级导致死锁 - rqrq -->
  131. <update id="cancelIssueShipment">
  132. UPDATE SOIssueNotifyHeader WITH (ROWLOCK)
  133. SET status = 'UNISSUE'
  134. WHERE site = #{site} AND notify_no = #{notifyNo}
  135. </update>
  136. <!-- rqrq - 检查发货通知单物料库存匹配情况(只考虑立库) -->
  137. <select id="checkShipmentInventory" resultType="ShipmentInventoryCheckResult">
  138. EXEC CheckShipmentIssueNotifyInventory #{site}, #{notifyNo}
  139. </select>
  140. <delete id="deleteSOIssueNotifyOrderMaterialInList">
  141. DELETE FROM SOIssueNotifyOrderMaterialList
  142. WHERE
  143. notify_no = #{notifyNo}
  144. AND site = #{site}
  145. AND item_no IN
  146. <foreach collection="items" item="item" separator="," open="(" close=")">
  147. #{item}
  148. </foreach>
  149. AND order_type = 'shipment'
  150. </delete>
  151. <insert id="batchSaveSOIssueNotifyOrderMaterialList">
  152. insert into SOIssueNotifyOrderMaterialList (notify_no,site,item_no,BOM_item_no,component_part_no,qty_to_issue,qty_to_issue_original,issue_type,remark,order_type)
  153. values
  154. <foreach collection="childList" separator="," item="item">
  155. (#{item.notifyNo},#{item.site},#{item.itemNo},#{item.bOMItemNo},#{item.componentPartNo},#{item.qtyToIssue,jdbcType=DECIMAL},#{item.qtyToIssueOriginal,jdbcType=DECIMAL},#{item.issueType},rtrim(#{item.remark}),#{item.orderType})
  156. </foreach>
  157. </insert>
  158. </mapper>