InventoryDetailMapper.xml 16.9 KB
<?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.huaheng.pc.inventory.inventoryDetail.mapper.InventoryDetailMapper">
    <resultMap id="BaseResultMap" type="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail">
        <!--@mbg.generated-->
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="inventoryHeaderId" jdbcType="INTEGER" property="inventoryHeaderId"/>
        <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode"/>
        <result column="companyCode" jdbcType="VARCHAR" property="companyCode"/>
        <result column="locationCode" jdbcType="VARCHAR" property="locationCode"/>
        <result column="containerCode" jdbcType="VARCHAR" property="containerCode"/>
        <result column="materialCode" jdbcType="VARCHAR" property="materialCode"/>
        <result column="materialName" jdbcType="VARCHAR" property="materialName"/>
        <result column="materialSpec" jdbcType="VARCHAR" property="materialSpec"/>
        <result column="materialUnit" jdbcType="VARCHAR" property="materialUnit"/>
        <result column="qty" jdbcType="DECIMAL" property="qty"/>
        <result column="taskQty" jdbcType="DECIMAL" property="taskQty"/>
        <result column="inventorySts" jdbcType="VARCHAR" property="inventorySts"/>
        <result column="supplierCode" jdbcType="VARCHAR" property="supplierCode"/>
        <result column="referCode" jdbcType="VARCHAR" property="referCode"/>
        <result column="referDetailId" jdbcType="VARCHAR" property="referDetailId"/>
        <result column="batch" jdbcType="VARCHAR" property="batch"/>
        <result column="lot" jdbcType="VARCHAR" property="lot"/>
        <result column="projectNo" jdbcType="VARCHAR" property="projectNo"/>
        <result column="qcCheck" jdbcType="VARCHAR" property="qcCheck"/>
        <result column="weight" jdbcType="VARCHAR" property="weight"/>
        <result column="manufactureDate" jdbcType="DATE" property="manufactureDate"/>
        <result column="expirationDate" jdbcType="DATE" property="expirationDate"/>
        <result column="agingDate" jdbcType="DATE" property="agingDate"/>
        <result column="attributeId" jdbcType="VARCHAR" property="attributeId"/>
        <result column="attribute1" jdbcType="VARCHAR" property="attribute1"/>
        <result column="attribute2" jdbcType="VARCHAR" property="attribute2"/>
        <result column="attribute3" jdbcType="VARCHAR" property="attribute3"/>
        <result column="lockCode" jdbcType="VARCHAR" property="lockCode"/>
        <result column="lastCycleCountDate" jdbcType="TIMESTAMP" property="lastCycleCountDate"/>
        <result column="created" jdbcType="TIMESTAMP" property="created"/>
        <result column="createdBy" jdbcType="VARCHAR" property="createdBy"/>
        <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated"/>
        <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy"/>
        <result column="userDef1" jdbcType="VARCHAR" property="userDef1"/>
        <result column="userDef2" jdbcType="VARCHAR" property="userDef2"/>
        <result column="userDef3" jdbcType="VARCHAR" property="userDef3"/>
        <result column="processStamp" jdbcType="VARCHAR" property="processStamp"/>
        <result column="receiptCode" jdbcType="VARCHAR" property="receiptCode"/>
        <result column="receiptDetailId" jdbcType="INTEGER" property="receiptDetailId"/>
        <result column="locationNoX" jdbcType="INTEGER" property="locationNoX"/>
        <result column="locationNoY" jdbcType="INTEGER" property="locationNoY"/>
    </resultMap>
    <sql id="Base_Column_List">
        <!--@mbg.generated-->
        id, inventoryHeaderId, warehouseCode, companyCode, locationCode, containerCode, materialCode,
        materialName, materialSpec, materialUnit, qty, taskQty, lockedQty, inventorySts,
        supplierCode, referCode, referDetailId, batch, lot, projectNo, qcCheck, weight, manufactureDate,
        expirationDate, agingDate, attributeId, attribute1, attribute2, attribute3, lockCode,
        lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy, userDef1, userDef2,
        userDef3, processStamp, receiptCode, receiptDetailId,locationNoX,locationNoY,shipmentReferCode
    </sql>


    <select id="selectBysql" parameterType="String"
            resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail">
        ${value}
    </select>


    <select id="getSumQty" resultType="java.math.BigDecimal">
        SELECT ifnull(sum(qty-taskQty),0) qty from inventory_detail where materialCode=#{materialCode} and
        warehouseCode=#{warehouseCode} and inventorySts=#{inventorySts}
        <if test="companyCode != null and companyCode != ''">
            and companyCode = #{companyCode}
        </if>
    </select>

    <select id="getWarehouseInventoryStatus" resultType="java.lang.String">
        SELECT ifnull(
                       CONVERT(
                               (SELECT count(1)
                                FROM inventory_detail
                                WHERE TIMESTAMPDIFF(MONTH, created, CURDATE()) >= #{a}
                                  and TIMESTAMPDIFF(MONTH, created, CURDATE()) &lt; #{b}
                                  AND warehouseCode = #{warehouseCode}) /
                               (SELECT count(1) FROM inventory_detail WHERE warehouseCode = #{warehouseCode}),
                           DECIMAL(15, 2)
                       ),
                       0
               ) scale
        FROM DUAL
    </select>

    <select id="getWarehouseInventoryStatuss" resultType="java.lang.String">
        SELECT ifnull(
                       CONVERT(
                               (SELECT count(1)
                                FROM inventory_detail
                                WHERE TIMESTAMPDIFF(MONTH, created, CURDATE()) >= #{a}
                                  AND warehouseCode = #{warehouseCode}) /
                               (SELECT count(1) FROM inventory_detail WHERE warehouseCode = #{warehouseCode}),
                           DECIMAL(15, 2)
                       ),
                       0
               ) scale
        FROM DUAL
    </select>

    <select id="getCompanyInventoryStatus" resultType="java.lang.String">
        SELECT ifnull(
                       CONVERT(
                               (SELECT count(1)
                                FROM inventory_detail
                                WHERE TIMESTAMPDIFF(MONTH, created, CURDATE()) >= #{a}
                                  and TIMESTAMPDIFF(MONTH, created, CURDATE()) &lt; #{b}
                                  AND companyCode = #{companyCode}) /
                               (SELECT count(1) FROM inventory_detail WHERE companyCode = #{companyCode}),
                           DECIMAL(15, 2)
                       ),
                       0
               ) scale
        FROM DUAL
    </select>

    <select id="getCompanyInventoryStatuss" resultType="java.lang.String">
        SELECT ifnull(
                       CONVERT(
                               (SELECT count(1)
                                FROM inventory_detail
                                WHERE TIMESTAMPDIFF(MONTH, created, CURDATE()) >= #{a}
                                  AND companyCode = #{companyCode}) /
                               (SELECT count(1) FROM inventory_detail WHERE companyCode = #{companyCode}),
                           DECIMAL(15, 2)
                       ),
                       0
               ) scale
        FROM DUAL
    </select>

    <select id="getWarehouseInventoryProp" resultType="java.util.LinkedHashMap">
        --     SELECT w.name,a.name,ifnull(a.total,0) total from warehouse w
--     left join
--     (SELECT m.name name,sum(i.qty) total,i.warehouseCode warehouseCode from inventory i
--     inner join material m on i.materialCode = m.`code` and i.warehouseId = m.warehouseId
--     GROUP BY m.name,i.warehouseCode) a on w.code=a.warehouseCode ORDER BY total desc
        SELECT m.name name, sum(i.qty) total
        from inventory_detail i
                 inner join material m on i.materialCode = m.`code` and i.warehouseCode = m.warehouseCode and
                                          i.warehouseCode = #{warehouseCode}
        GROUP BY m.code
        ORDER BY total desc
        limit 10
    </select>

    <select id="getCompanyInventoryProp" resultType="java.util.LinkedHashMap">
        --     SELECT c.name,a.name,ifnull(a.total,0) total from company c
--       left join
--       (SELECT m.name name,sum(i.qty) total,i.companyId companyId from inventory i
--       inner join material m on i.materialCode = m.`code` and i.companyId = m.companyId
--       GROUP BY m.name,i.companyId) a on c.id=a.companyId ORDER BY total desc
        SELECT m.name name, sum(i.qty) total
        from inventory_detail i
                 inner join material m on i.materialCode = m.`code` and i.companyCode = m.companyCode and
                                          i.companyCode = #{companyCode}
        GROUP BY m.code
        ORDER BY total desc
        limit 10
    </select>

    <select id="getUsableByMaterialCodeAndOrderCode"
            resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail">
        SELECT id,
               inventoryHeaderId,
               warehouseCode,
               companyCode,
               zoneCode,
               locationCode,
               containerCode,
               materialCode,
               materialName,
               materialSpec,
               materialUnit,
               qty,
               taskQty,
               inventorySts,
               supplierCode,
               weight,
               created,
               orderCode,
               shipmentReferCode
        FROM inventory_detail
        WHERE materialCode = #{materialCode}
          AND orderCode = #{orderCode}
          AND (shipmentReferCode is NULL or shipmentReferCode = '')
          AND qty != taskQty
        order by created
    </select>
    <select id="getHeaderIdsOfMaterial" resultType="java.lang.Integer">
        select distinct inventoryHeaderId
        from inventory_detail i
        where i.materialCode = #{materialCode}
    </select>
    <select id="getInventoryExpireWarning"
            resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryExpireWarning">
        SELECT
        i.materialCode,
        i.materialName,
        i.qty,
        i.batch,
        i.materialSpec,
        i.materialUnit,
        i.locationCode,
        i.containerCode,
        i.created,
        TO_DAYS(NOW())-TO_DAYS(i.created) as age,
        i.locationNoX,
        i.locationNoY,
        CONCAT(i.locationNoX,', ',i.locationNoY) as xy,
        t.maxday,
        0
        FROM inventory_detail i,
        material m, material_warning t
        WHERE t.maxday>0 and
        i.materialCode = m.code and m.code=t.materialCode
        and TO_DAYS(NOW())-TO_DAYS(i.created) >= t.maxday
        <if test="materialCode != null and materialCode != ''">
            and i.materialCode = #{materialCode}
        </if>
    </select>
    <select id="getInventoryLevelWarning"
            resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryLevelWarning">
        SELECT w.*, i.qtySum FROM (
        SELECT materialcode, sum( qty ) AS qtySum FROM inventory_detail WHERE
        inventorysts = 1 AND materialcode IN ( SELECT materialcode FROM material_warning where `upper`> 0 and `lower`>
        0)
        GROUP BY materialcode
        ) i Inner JOIN material_warning w ON i.materialcode = w.materialcode
        <where>
            <if test="materialCode != null and materialCode != ''">
                and w.materialcode = #{materialCode}
            </if>
        </where>
    </select>

    <select id="getInventoryPowerWarning"
            resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryPowerWarning">
        SELECT z.*, i.weight
        FROM zone z
                 LEFT JOIN (SELECT zoneCode, sum(weight) AS weight FROM inventory_detail GROUP BY zoneCode) i
                           ON z.CODE = i.zoneCode
    </select>
    <select id="getInventoryList" resultType="com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail">
        SELECT * FROM inventory_detail
        INNER JOIN (
        SELECT
        vehicleCode AS tempVehicleCode,
        vehicle_type.maxX,
        vehicle_type.maxY
        FROM
        inventory_detail
        LEFT JOIN vehicle ON vehicle.`code` = inventory_detail.vehicleCode
        LEFT JOIN vehicle_type ON vehicle_type.`code` = vehicle.vehicleType
        <where>
            <if test="createdBegin != null and createdBegin != ''">
                and inventory_detail.createdBegin &gt;= #{createdBegin}
            </if>
            <if test="createdEnd != null and createdEnd != ''">
                and inventory_detail.createdEnd &lt; #{createdEnd}
            </if>
            <if test="inventoryDetail.locationCode != null and inventoryDetail.locationCode != ''">
                and inventory_detail.locationCode like concat('%',#{inventoryDetail.locationCode},'%')
            </if>
            <if test="inventoryDetail.containerCode != null and inventoryDetail.containerCode != ''">
                and inventory_detail.containerCode like concat('%',#{inventoryDetail.containerCode},'%')
            </if>
            <if test="inventoryDetail.vehicleCode != null and inventoryDetail.vehicleCode != ''">
                and inventory_detail.vehicleCode like concat('%',#{inventoryDetail.vehicleCode},'%')
            </if>
            <if test="inventoryDetail.materialCode != null and inventoryDetail.materialCode != ''">
                and inventory_detail.materialcode like concat('%',#{inventoryDetail.materialCode},'%')
            </if>
            <if test="inventoryDetail.materialName != null and inventoryDetail.materialName != ''">
                and inventory_detail.materialName like concat('%',#{inventoryDetail.materialName},'%')
            </if>
            <if test="inventoryDetail.materialSpec != null and inventoryDetail.materialSpec != ''">
                and inventory_detail.materialSpec like concat('%',#{inventoryDetail.materialSpec},'%')
            </if>
            <if test="inventoryDetail.materialUnit != null and inventoryDetail.materialUnit != ''">
                and inventory_detail.materialUnit like concat('%',#{inventoryDetail.materialUnit},'%')
            </if>
            <if test="inventoryDetail.flowCode != null and inventoryDetail.flowCode != ''">
                and inventory_detail.flowCode like concat('%',#{inventoryDetail.flowCode},'%')
            </if>
            <if test="inventoryDetail.inventorySts != null and inventoryDetail.inventorySts != ''">
                and inventory_detail.inventorySts = #{inventoryDetail.inventorySts}
            </if>
            <if test="inventoryDetail.solidifyTime != null and inventoryDetail.solidifyTime != ''">
                and inventory_detail.solidifyTime = #{inventoryDetail.solidifyTime}
            </if>
            <if test="inventoryDetail.supplierCode != null and inventoryDetail.supplierCode != ''">
                and inventory_detail.supplierCode &lt; #{inventoryDetail.supplierCode}
            </if>
            <if test="inventoryDetail.tracingNo != null and inventoryDetail.tracingNo != ''">
                and inventory_detail.tracingNo like concat('%',#{inventoryDetail.tracingNo},'%')
            </if>
            <if test="inventoryDetail.orderCode != null and inventoryDetail.orderCode != ''">
                and inventory_detail.orderCode like concat('%',#{inventoryDetail.orderCode},'%')
            </if>
            <if test="inventoryDetail.orderNumber != null and inventoryDetail.orderNumber != ''">
                and inventory_detail.orderNumber like concat('%',#{inventoryDetail.orderNumber},'%')
            </if>
            <if test="inventoryDetail.batchNumber != null and inventoryDetail.batchNumber != ''">
                and inventory_detail.batchNumber like concat('%',#{inventoryDetail.batchNumber},'%')
            </if>
        </where>
        GROUP BY
        inventory_detail.vehicleCode
        <if test="inventoryDetail.isFull != null">
            HAVING
            <!-- 此处判断 isFull 不等于空字符串,原因是ONGL表达式会将0作为空字符串处理 -->
            <if test="inventoryDetail.isFull == ''">
                COUNT(*) &lt; vehicle_type.maxX * vehicle_type.maxY
            </if>
            <if test="inventoryDetail.isFull == 1">
                COUNT(*) = vehicle_type.maxX * vehicle_type.maxY
            </if>
        </if>
        ) AS temp
        ON inventory_detail.vehicleCode = temp.tempVehicleCode
        ORDER BY inventory_detail.id
    </select>
</mapper>