<?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.wms_admin.server.mapper.ProductMapper">
|
<resultMap id="SelectHistoryResultMap" type="com.wms_admin.server.entity.Product">
|
<result property="id" column="id"/>
|
<result property="unit" column="unit"/>
|
<result property="incomingQuantity" column="incoming_quantity"/>
|
<result property="addPerson" column="add_person"/>
|
<result property="createTime" column="create_time"/>
|
<!--自定义参数-->
|
<result property="productName" jdbcType="VARCHAR" column="productName"/>
|
<result property="productCode" column="productCode"/>
|
<result property="productModel" jdbcType="VARCHAR" column="productModel"/>
|
</resultMap>
|
|
<!--多表多条件拼接查询-->
|
<select id="SelectHistory" resultMap="SelectHistoryResultMap">
|
SELECT s1.`id`,s1.`unit`,s1.`incoming_quantity`,s1.`add_person`,s1.`create_time`,
|
s2.`product_name` productName,s3.`product_model` productModel, s3.`product_code` productCode
|
FROM product s1, product_name s2, product_model s3
|
WHERE s1.`product_name_id` = s2.`id`
|
AND s1.`product_model_id` = s3.`id`
|
<if test="startTime != null">
|
AND s1.create_time >= #{startTime}
|
</if>
|
<if test="endTime != null">
|
-- 在mybatis中小于号不能使用,需要使用方法转义:<![CDATA[<=]]>
|
AND s1.create_time <![CDATA[<=]]> #{endTime}
|
</if>
|
<if test="productModel != null">
|
AND s1.`product_model_id` = (SELECT p.`id` FROM product_model p WHERE p.`product_model` = #{productModel})
|
</if>
|
ORDER BY s1.create_time DESC
|
</select>
|
|
|
<select id="ExceedThirtyDay" resultType="map">
|
SELECT p.id, n.`product_name`, p.`unit`, m.`product_model`, m.`product_code`, DATEDIFF(CURDATE(), DATE_ADD(p.create_time, INTERVAL 30 DAY)) RemainingDays
|
FROM product p, product_name n, product_model m
|
WHERE NOW() > DATE_ADD(p.create_time, INTERVAL 25 DAY)
|
AND p.`product_name_id` = n.`id`
|
AND p.`product_model_id` = m.`id`
|
</select>
|
|
<select id="SelectWeekNumData" resultType="map">
|
SELECT d.date, IFNULL(r.num,0) AS product_num, IFNULL(o.num,0) AS out_product_num
|
FROM (
|
SELECT CURDATE() AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS DATE
|
UNION ALL
|
SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS DATE
|
) d
|
LEFT JOIN (
|
SELECT DATE(create_time) AS createTime, COUNT(1) AS num
|
FROM product
|
GROUP BY createTime
|
) r
|
ON r.createTime = d.date
|
LEFT JOIN (
|
SELECT DATE(create_time) AS createTime, COUNT(1) AS num
|
FROM out_product
|
GROUP BY createTime
|
) o
|
ON o.createTime = d.date
|
</select>
|
|
<select id="TimerCountWeekDayData" resultType="int">
|
SELECT COUNT(1) FROM product
|
</select>
|
|
<select id="SelectNameData" resultType="map">
|
SELECT p.`id`, p.`incoming_quantity`, p.`unit`, p.`create_time`, n.`product_name`, m.`product_code`, m.`product_model`
|
FROM product p, product_name n, product_model m
|
WHERE p.`product_name_id` = n.`id`
|
AND p.`product_model_id` = m.`id`
|
AND n.`product_name` LIKE CONCAT('%', #{#productName}, '%');
|
</select>
|
|
<select id="PieData" resultType="map">
|
SELECT t1.datetime, IFNULL(t2.num, 0) AS addNum,IFNULL(t3.num, 0) AS outNum
|
FROM (
|
SELECT DATE_FORMAT((CURDATE()), '%Y-%m') AS DATETIME
|
UNION
|
SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS DATETIME
|
UNION
|
SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y-%m') AS DATETIME
|
UNION
|
SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y-%m') AS DATETIME
|
) AS t1
|
-- 当月入库数据量
|
LEFT JOIN (
|
SELECT LEFT(p.`create_time`, 7) AS DATETIME, SUM(p.`incoming_quantity`) + SUM(o.num) AS num
|
FROM product p, (
|
SELECT LEFT(o.`add_Time`, 7) AS DATETIME, SUM(o.`outbound_quantity`) AS num
|
FROM out_product o
|
GROUP BY LEFT(o.`add_Time`, 7)
|
ORDER BY DATETIME DESC LIMIT 4
|
) AS o
|
WHERE o.DATETIME = LEFT(p.`create_time`, 7)
|
GROUP BY LEFT(p.`create_time`, 7)
|
ORDER BY DATETIME DESC LIMIT 4
|
) t2 ON t1.datetime = t2.datetime
|
-- 当月出库数据量
|
LEFT JOIN (
|
SELECT LEFT(o.`create_time`, 7) AS DATETIME, SUM(o.`outbound_quantity`) AS num
|
FROM out_product o
|
GROUP BY LEFT(o.`create_time`, 7)
|
ORDER BY DATETIME DESC LIMIT 4
|
) t3 ON t1.datetime = t3.datetime
|
ORDER BY t1.datetime ASC
|
</select>
|
|
<select id="SelectIdProduct" resultMap="SelectHistoryResultMap">
|
SELECT s1.`id`,s1.`unit`,s1.`incoming_quantity`,s1.`add_person`,s1.`create_time`,
|
s2.`product_name` productName,s3.`product_model` productModel, s3.`product_code` productCode
|
FROM product s1, product_name s2, product_model s3
|
WHERE s1.`product_name_id` = s2.`id`
|
AND s1.`product_model_id` = s3.`id`
|
AND s1.`id` = #{code}
|
</select>
|
</mapper>
|