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.
 
 
 
 
 
 

171 lines
7.4 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gaotao.modules.otherInbound.dao.OtherInboundMapper">
<!-- 获取其他入库单列表 -->
<select id="getInboundList" parameterType="map" resultType="map">
SELECT
h.site,
h.order_no AS inboundNo,
h.bu_no AS buNo,
'' AS batchNo,
h.required_inbound_date AS inspectionDate,
SUM(CASE WHEN pr.hardtag_in_flag = '已入库' THEN 1 ELSE 0 END) AS labelinCount, -- 已入库标签数
COUNT(DISTINCT pr.roll_no) AS totalLabels, -- 需入库标签数
SUM(CASE WHEN pr.hardtag_in_flag = '已入库' THEN ISNULL(pr.roll_qty, 0) ELSE 0 END) AS totalinLabels, -- 已入库物料总数
SUM(CAST(D.required_qty AS float)) as labelCount, --需入库总数
d.related_order_no AS relatedOrderNo, -- 关联单号
d.related_order_line_no AS relatedOrderLineNo -- 关联行号
FROM inbound_notification_head h
INNER JOIN inbound_notification_detail d ON h.site = d.site and h.bu_no = d.bu_no and h.order_no = d.order_no
LEFT JOIN po_order_roll_no pr ON d.site = pr.site and d.bu_no = pr.bu_no and d.inspection_no = pr.inspection_no AND d.part_no = pr.part_no
WHERE h.site = #{site} and h.bu_no in (select bu_no from AccessBu where username = #{userName})
and h.order_type = '其他入库' and h.close_flag = 'N' AND h.order_status = '待入库' and d.in_warehouse = #{warehouseId}
<if test="searchCode != null and searchCode != ''">
AND (
h.order_no LIKE CONCAT('%', #{searchCode}, '%')
OR h.related_order_no LIKE CONCAT('%', #{searchCode}, '%')
)
</if>
<!-- <if test="searchCode == null or searchCode == ''">-->
<!-- AND CONVERT(DATE, h.required_inbound_date) = CONVERT(DATE, GETDATE())-->
<!-- </if>-->
GROUP BY h.site,h.bu_no,h.order_no,h.required_inbound_date,d.related_order_no,d.related_order_line_no
ORDER BY h.required_inbound_date DESC
</select>
<!-- 获取其他入库单详情 -->
<select id="getInboundDetails" parameterType="map" resultType="map">
SELECT
h.site,
h.order_no as inboundNo,
h.site as site,
h.bu_no as buNo,
'' as batchNo,
h.required_inbound_date as inspectionDate,
SUM(CASE WHEN hardtag_in_flag = '已入库' then 1 else 0 end) labelinCount, --已入库标签数
COUNT(DISTINCT pr.roll_no) as totalLabels , --需入库标签数
SUM(CASE WHEN hardtag_in_flag = '已入库' then CAST(roll_qty AS float) else 0 end) totalinLabels,--已入库物料总数
SUM(CAST(D.required_qty AS float)) as labelCount, --需入库总数
d.related_order_no as relatedOrderNo, --关联单号
d.related_order_line_no as relatedOrderLineNo --关联行号
FROM inbound_notification_head h
INNER JOIN inbound_notification_detail d ON h.site = d.site and h.bu_no = d.bu_no and h.order_no = d.order_no
LEFT JOIN po_order_roll_no pr ON d.site = pr.site and d.bu_no = pr.bu_no and d.inspection_no = pr.inspection_no AND d.part_no = pr.part_no
WHERE
h.site = #{site}
AND h.bu_no = #{buNo}
AND h.order_no = #{inboundNo}
GROUP BY h.order_no, h.site, h.bu_no, h.required_inbound_date, d.related_order_no, d.related_order_line_no
</select>
<!-- 验证物料与入库单是否匹配 -->
<select id="validateMaterialWithInbound" parameterType="map" resultType="map">
SELECT TOP 1
d.part_no as materialCode,
d.part_desc as materialName,
d.unit,
d.required_qty as requiredQty,
h.order_status as status,
d.in_batch_no as batchNo,
h.order_no as inboundNo,
h.site,
h.bu_no as buNo
FROM inbound_notification_detail d
INNER JOIN inbound_notification_head h ON d.order_no = h.order_no AND d.site = h.site AND d.bu_no = h.bu_no
WHERE d.order_no = #{inboundNo}
AND d.bu_no = #{buNo}
AND d.site = #{site}
AND d.part_no = #{materialCode}
AND h.order_status = '待入库'
AND h.order_type = '其他入库'
</select>
<!-- 更新入库单头表状态 -->
<update id="updateInboundHeadStatus" parameterType="map">
UPDATE inbound_notification_head
SET order_status = #{status},
h.updated_date = GETDATE(),
WHERE order_no = #{inboundNo}
AND bu_no = #{buNo}
AND site = #{site}
AND order_type = '其他入库'
</update>
<!-- 获取物料清单 -->
<select id="getMaterialList" parameterType="map" resultType="map">
SELECT
d.part_no as partNo,
d.part_no as materialCode,
d.part_desc as materialName,
p.UMID as unit,
SUM(CAST(h.transQty AS float)) as actualQty,
SUM(CAST(d.required_qty AS float)) as requiredQty --需求数量
FROM inbound_notification_detail d
LEFT JOIN Part p ON d.site = p.Site AND d.bu_no = p.bu_no AND d.part_no = p.PartNo
LEFT JOIN TransHeader t ON t.site = d.site AND t.OrderRef2 = d.bu_no and t.OrderRef1 = d.order_no
LEFT JOIN TransDetail h ON t.site = h.site AND t.OrderRef2 = h.OrderRef2 and t.TransNo = h.TransNo and d.part_no = h.partNo
WHERE d.site = #{site} AND d.bu_no = #{buNo} AND d.order_no = #{inboundNo}
GROUP BY d.part_no, d.part_desc, p.UMID
ORDER BY d.part_no
</select>
<!-- 验证库位是否存在且可用 -->
<select id="validateLocation" resultType="java.util.Map">
SELECT
LocationID as locationCode,
WareHouseID as warehouseId,
LocationName as locationName,
Active as status,
site
FROM Location
WHERE LocationID = #{locationCode}
AND site = #{site}
</select>
<!-- 获取物料信息 -->
<select id="getPartInfo" parameterType="map" resultType="map">
SELECT
PartNo as materialCode,
PartDescription as materialName,
UMID as unit,
Active as status
FROM part
WHERE PartNo = #{materialCode}
AND Site = #{site}
AND bu_no = #{buNo}
AND Active = 'Y'
</select>
<!-- 查询已扫描标签列表(从ScannedRollTempTable缓存表) -->
<select id="getScannedLabelList" parameterType="map" resultType="map">
SELECT
site,
bu_no as buNo,
part_no as materialCode,
RollNo as labelCode,
RollQty as actualQty,
getBatchNo as batchNo
FROM ScannedRollTempTable
WHERE site = #{site}
AND bu_no = #{buNo}
AND NotifyNo = #{inboundNo}
ORDER BY RollNo DESC
</select>
<!-- 获取用户默认打印机配置 -->
<select id="getUserDefaultPrinter" resultType="map">
SELECT TOP 1
rfp.NewPrinterName AS printerName,
rfp.IPAddress AS printerIp,
rfp.ReportID AS labelNo
FROM ReportFileList_UserPrinter rfp
WHERE rfp.UserID = #{username}
<if test="labelNo != null and labelNo != ''">
AND rfp.ReportID = #{labelNo}
</if>
ORDER BY rfp.ReportID
</select>
</mapper>