<?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="org.springblade.modules.farmplant.mapper.FarmProductStockMapper">
|
|
<!--自定义查询农产品库存分页数据-->
|
<select id="selectFarmProductStockPage" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
|
select sfps.id,sfps.strain_id strainId,sfps.land_id,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
|
sys_farm_product_stock sfps
|
left join sys_strain ss on ss.id = sfps.strain_id
|
left join sys_land sl on sl.id = sfps.land_id
|
where 1=1
|
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
|
and sfps.strain_id = #{farmProductStock.strainId}
|
</if>
|
<if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
|
and sfps.leaves = #{farmProductStock.leaves}
|
</if>
|
<if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
|
and sfps.time >= #{farmProductStock.startTime}
|
</if>
|
<if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
|
and sfps.time <= #{farmProductStock.endTime}
|
</if>
|
<if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
|
and sfps.dept_id = #{farmProductStock.deptId}
|
</if>
|
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
|
and sfps.tenant_id = #{farmProductStock.tenantId}
|
</if>
|
<if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
|
and sl.farm_id = #{farmProductStock.farmId}
|
</if>
|
group by sfps.id,sfps.strain_id,ss.url,ss.strain_name,sfps.land_id
|
</select>
|
|
<select id="selectFarmProductStockPageCount" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
|
SELECT a.strainId,SUM(weight) weight,a.url,a.strainName FROM
|
(SELECT
|
sfps.id,
|
sfps.strain_id AS strainId,
|
sfps.land_id,
|
sum( sfps.weight ) AS weight,
|
ss.url,
|
ss.strain_name AS strainName
|
FROM
|
sys_farm_product_stock sfps
|
LEFT JOIN sys_strain ss ON ss.id = sfps.strain_id
|
LEFT JOIN sys_land sl ON sl.id = sfps.land_id
|
WHERE
|
1 = 1
|
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
|
and sfps.strain_id = #{farmProductStock.strainId}
|
</if>
|
<if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
|
and sfps.leaves = #{farmProductStock.leaves}
|
</if>
|
<if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
|
and sfps.time >= #{farmProductStock.startTime}
|
</if>
|
<if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
|
and sfps.time <= #{farmProductStock.endTime}
|
</if>
|
<if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
|
and sfps.dept_id = #{farmProductStock.deptId}
|
</if>
|
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
|
and sfps.tenant_id = #{farmProductStock.tenantId}
|
</if>
|
<if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
|
and sl.farm_id = #{farmProductStock.farmId}
|
</if>
|
GROUP BY
|
sfps.id,
|
sfps.strain_id,
|
ss.url,
|
ss.strain_name,
|
sfps.land_id
|
) a GROUP BY strainId
|
</select>
|
|
<select id="selectFarmProductStockPages" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
|
select sfps.strain_id strainId,sfps.land_id,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
|
sys_farm_product_stock sfps
|
left join sys_strain ss on ss.id = sfps.strain_id
|
left join sys_land sl on sl.id = sfps.land_id
|
where 1=1
|
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
|
and sfps.strain_id = #{farmProductStock.strainId}
|
</if>
|
<if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
|
and sfps.leaves = #{farmProductStock.leaves}
|
</if>
|
<if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
|
and sfps.time >= #{farmProductStock.startTime}
|
</if>
|
<if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
|
and sfps.time <= #{farmProductStock.endTime}
|
</if>
|
<if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
|
and sfps.dept_id = #{farmProductStock.deptId}
|
</if>
|
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
|
and sfps.tenant_id = #{farmProductStock.tenantId}
|
</if>
|
<if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
|
and sl.farm_id = #{farmProductStock.farmId}
|
</if>
|
group by sfps.strain_id,ss.url,ss.strain_name,sfps.land_id
|
</select>
|
|
<!--根据农场id和品种类型查询 关系:农产品库存表关联地块 -》 地块关联农场 -》 需要联合查询 -->
|
<select id="findFarmProductStockByFarmIdAndStrainId" resultType="org.springblade.modules.farmplant.entity.FarmProductStock">
|
select a.* from sys_farm_product_stock a
|
left join sys_land b on a.land_id = b.id
|
where 1=1 and a.strain_id = #{strainId} and b.farm_id = #{farmId}
|
</select>
|
|
|
<!--查询农产品库存数据-->
|
<select id="statisticsProduct" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
|
select sfps.id,sfps.strain_id strainId,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
|
sys_farm_product_stock sfps
|
left join sys_strain ss on ss.id = sfps.strain_id
|
LEFT JOIN sys_land sl ON sl.id = sfps.land_id
|
where 1=1
|
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
|
and sfps.strain_id = #{farmProductStock.strainId}
|
</if>
|
<if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
|
and sfps.leaves = #{farmProductStock.leaves}
|
</if>
|
<if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
|
and sfps.time >= #{farmProductStock.startTime}
|
</if>
|
<if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
|
and sfps.time <= #{farmProductStock.endTime}
|
</if>
|
<if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
|
and sfps.dept_id = #{farmProductStock.deptId}
|
</if>
|
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
|
and sfps.tenant_id = #{farmProductStock.tenantId}
|
</if>
|
<if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
|
and sl.farm_id = #{farmProductStock.farmId}
|
</if>
|
group by sfps.id,sfps.strain_id,ss.url,ss.strain_name
|
</select>
|
|
<!--大屏产量每个月统计-->
|
<select id="selctProductCount" resultType="java.util.HashMap">
|
SELECT SUM(CASE WHEN MONTH ( s.time ) = 1 THEN s.weight END ) AS '1', SUM(CASE WHEN MONTH ( s.time ) = 2 THEN s.weight END ) AS '2', SUM(CASE WHEN MONTH ( s.time ) = 3 THEN s.weight END ) AS '3', SUM(CASE WHEN MONTH ( s.time ) = 4 THEN s.weight END ) AS '4', SUM(CASE WHEN MONTH ( s.time ) = 5 THEN s.weight END ) AS '5', SUM(CASE WHEN MONTH ( s.time ) = 6 THEN s.weight END ) AS '6', SUM(CASE WHEN MONTH ( s.time ) = 7 THEN s.weight END ) AS '7', SUM(CASE WHEN MONTH ( s.time ) = 8 THEN s.weight END ) AS '8', SUM(CASE WHEN MONTH ( s.time ) = 9 THEN s.weight END ) AS '9', SUM(CASE WHEN MONTH ( s.time ) = 10 THEN s.weight END ) AS '10', SUM(CASE WHEN MONTH ( s.time ) = 11 THEN s.weight END ) AS '11', SUM(CASE WHEN MONTH ( s.time ) = 12 THEN s.weight END ) AS '12'
|
FROM sys_farm_product_stock AS s
|
WHERE
|
YEAR ( s.time ) =#{year}
|
</select>
|
|
<!--大屏经营概况库存数量统计-->
|
<select id="statisticsStock" resultType="java.util.HashMap">
|
SELECT SUM( stock.weight ) AS sum,SUM( stock.recovery ) AS cssum FROM sys_farm_product_stock AS stock
|
left join sys_land sl on sl.id = stock.land_id
|
WHERE
|
1 = 1
|
<if test="year!=null and year!=''">
|
and YEAR ( stock.time ) = #{year}
|
</if>
|
<if test="farmId!=null and farmId!=''">
|
and sl.farm_id = #{farmId}
|
</if>
|
</select>
|
<!--按年统计产量-->
|
<!-- <select id="statisticsStockYear" resultType="java.util.HashMap">-->
|
<!-- SELECT-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 1 THEN weight END ), 0 ) AS '1',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 2 THEN weight END ), 0 ) AS '2',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 3 THEN weight END ), 0 ) AS '3',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 4 THEN weight END ), 0 ) AS '4',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 5 THEN weight END ), 0 ) AS '5',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 6 THEN weight END ), 0 ) AS '6',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 7 THEN weight END ), 0 ) AS '7',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 8 THEN weight END ), 0 ) AS '8',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 9 THEN weight END ), 0 ) AS '9',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 10 THEN weight END ), 0 ) AS '10',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 11 THEN weight END ), 0 ) AS '11',-->
|
<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 12 THEN weight END ), 0 ) AS '12'-->
|
<!-- FROM-->
|
<!-- sys_recovery-->
|
<!-- where-->
|
<!-- 1 = 1-->
|
<!-- <if test="year!=null and year!=''">-->
|
<!-- and YEAR ( time ) = #{year}-->
|
<!-- </if>-->
|
<!-- <if test="deptId!=null and deptId!=''">-->
|
<!-- and dept_id = #{deptId}-->
|
<!-- </if>-->
|
<!-- </select>-->
|
<select id="statisticsStockYear" resultType="java.util.HashMap">
|
select m.id time, IFNULL(b,0) num from
|
(
|
select 1 as id union
|
select 2 union
|
select 3 union
|
select 4 union
|
select 5 union
|
select 6 union
|
select 7 union
|
select 8 union
|
select 9 union
|
select 10 union
|
select 11 union
|
select 12
|
) m
|
left join
|
(
|
select month(ssr.time) a,sum(weight) b from sys_recovery ssr
|
left join sys_land sl on sl.id = ssr.land_id
|
where year(ssr.time) = #{year}
|
and sl.farm_id = #{farmId}
|
GROUP BY month(ssr.time)
|
) n
|
on m.id = n.a
|
order by id
|
</select>
|
<!--按月份统计产量-->
|
<select id="statisticsStockMonth" resultType="java.util.HashMap">
|
SELECT
|
DAY(lefttable.date) time,
|
IFNULL( righttable.m, '0' ) AS num
|
FROM
|
(
|
SELECT
|
ADDDATE( y.FIRST, x.d - 1 ) AS date
|
FROM
|
(
|
SELECT
|
1 AS d UNION ALL
|
SELECT
|
2 UNION ALL
|
SELECT
|
3 UNION ALL
|
SELECT
|
4 UNION ALL
|
SELECT
|
5 UNION ALL
|
SELECT
|
6 UNION ALL
|
SELECT
|
7 UNION ALL
|
SELECT
|
8 UNION ALL
|
SELECT
|
9 UNION ALL
|
SELECT
|
10 UNION ALL
|
SELECT
|
11 UNION ALL
|
SELECT
|
12 UNION ALL
|
SELECT
|
13 UNION ALL
|
SELECT
|
14 UNION ALL
|
SELECT
|
15 UNION ALL
|
SELECT
|
16 UNION ALL
|
SELECT
|
17 UNION ALL
|
SELECT
|
18 UNION ALL
|
SELECT
|
19 UNION ALL
|
SELECT
|
20 UNION ALL
|
SELECT
|
21 UNION ALL
|
SELECT
|
22 UNION ALL
|
SELECT
|
23 UNION ALL
|
SELECT
|
24 UNION ALL
|
SELECT
|
25 UNION ALL
|
SELECT
|
26 UNION ALL
|
SELECT
|
27 UNION ALL
|
SELECT
|
28 UNION ALL
|
SELECT
|
29 UNION ALL
|
SELECT
|
30 UNION ALL
|
SELECT
|
31
|
) x,
|
(
|
SELECT
|
CONCAT( #{year}, '-01' ) AS FIRST,
|
DAY ( LAST_DAY( str_to_date( concat( #{year}, '-01' ), '%Y-%m-%d' ) ) ) AS last
|
) y
|
WHERE
|
x.d <= y.last
|
AND ADDDATE( y.FIRST, x.d - 1 ) <= CURDATE( )
|
) AS lefttable
|
LEFT JOIN (
|
SELECT
|
IFNULL( sum( weight ), 0 ) AS m,
|
DATE_FORMAT( recovery.time, '%Y-%c-%d' ) AS gptime
|
FROM
|
sys_recovery recovery
|
left join sys_land sl on sl.id = recovery.land_id
|
WHERE DATE_FORMAT( recovery.time, '%Y-%m' ) = #{year}
|
and sl.farm_id = #{farmId}
|
GROUP BY
|
gptime
|
) AS righttable ON DATE_FORMAT( lefttable.date, '%Y-%c-%d' ) = righttable.gptime
|
ORDER BY time
|
</select>
|
<!--按日统计产量-->
|
<select id="statisticsStockDay" resultType="java.util.HashMap">
|
select a.order_hour as time, ifnull(b.num, 0) as num
|
from (
|
SELECT 0 AS order_hour UNION ALL SELECT 1 AS order_hour UNION ALL
|
SELECT 2 AS order_hour UNION ALL SELECT 3 AS order_hour UNION ALL
|
SELECT 4 AS order_hour UNION ALL SELECT 5 AS order_hour UNION ALL
|
SELECT 6 AS order_hour UNION ALL SELECT 7 AS order_hour UNION ALL
|
SELECT 8 AS order_hour UNION ALL SELECT 9 AS order_hour UNION ALL
|
SELECT 10 AS order_hour UNION ALL SELECT 11 AS order_hour UNION ALL
|
SELECT 12 AS order_hour UNION ALL SELECT 13 AS order_hour UNION ALL
|
SELECT 14 AS order_hour UNION ALL SELECT 15 AS order_hour UNION ALL
|
SELECT 16 AS order_hour UNION ALL SELECT 17 AS order_hour UNION ALL
|
SELECT 18 AS order_hour UNION ALL SELECT 19 AS order_hour UNION ALL
|
SELECT 20 AS order_hour UNION ALL SELECT 21 AS order_hour UNION ALL
|
SELECT 22 AS order_hour UNION ALL SELECT 23 AS order_hour
|
) as a
|
LEFT JOIN
|
(
|
SELECT HOUR(recovery.time) AS order_hour, SUM(weight) AS num from sys_recovery recovery
|
left join sys_land sl on sl.id = recovery.land_id
|
WHERE recovery.time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
|
AND recovery.time <= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
|
and sl.farm_id = #{farmId}
|
GROUP BY order_hour
|
) b ON a.order_hour=b.order_hour
|
ORDER BY a.order_hour
|
</select>
|
<!--农产品监管-->
|
<select id="productsSupervise" resultType="java.util.HashMap">
|
SELECT
|
IFNULL( SUM( CASE WHEN LEAVES = 0 THEN weight END ), 0 ) AS '0',
|
IFNULL( SUM( CASE WHEN LEAVES = 1 THEN weight END ), 0 ) AS '1',
|
IFNULL( SUM( CASE WHEN LEAVES = 2 THEN weight END ), 0 ) AS '2',
|
IFNULL( SUM( CASE WHEN LEAVES = 3 THEN weight END ), 0 ) AS '3',
|
IFNULL( SUM( CASE WHEN LEAVES = 4 THEN weight END ), 0 ) AS '4'
|
FROM sys_recovery sr
|
left join sys_land sl on sr.land_id = sl.id
|
WHERE 1 = 1
|
<if test="year!=null and year!=''">
|
and YEAR ( sr.time ) = #{year}
|
</if>
|
<if test="farmId!=null and farmId!=''">
|
and sl.farm_id = #{farmId}
|
</if>
|
</select>
|
<!--大屏经营概况年产量统计-->
|
<select id="statisticsYield" resultType="java.util.HashMap">
|
SELECT
|
SUM( sale.sale_num ) AS sum
|
FROM
|
sys_sale AS sale
|
WHERE 1 = 1
|
<if test="year!=null and year!=''">
|
and YEAR ( sale.sale_time ) = #{year}
|
</if>
|
union all
|
SELECT
|
SUM( inventory.sale_num ) AS sum
|
FROM
|
sys_inventory AS inventory
|
WHERE 1 = 1
|
<if test="year!=null and year!=''">
|
and YEAR ( inventory.loss_time ) = #{year}
|
</if>
|
</select>
|
|
<!--小程序农产品库存详情数据-->
|
<select id="statisticsProductx" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
|
select sfps.strain_id strainId,SUM(sfps.weight) AS weight,ss.url,ss.strain_name strainName from
|
sys_farm_product_stock sfps
|
left join sys_strain ss on ss.id = sfps.strain_id
|
LEFT JOIN sys_land land ON land.id = sfps.land_id
|
where 1=1
|
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
|
and sfps.strain_id = #{farmProductStock.strainId}
|
</if>
|
<if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
|
and sfps.leaves = #{farmProductStock.leaves}
|
</if>
|
<if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
|
and sfps.time >= #{farmProductStock.startTime}
|
</if>
|
<if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
|
and sfps.time <= #{farmProductStock.endTime}
|
</if>
|
<if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
|
and sfps.dept_id = #{farmProductStock.deptId}
|
</if>
|
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
|
and sfps.tenant_id = #{farmProductStock.tenantId}
|
</if>
|
<if test="farmProductStock.strainType !=null and farmProductStock.strainType !='' ">
|
and ss.strain_type = #{farmProductStock.strainType}
|
</if>
|
<if test="farmProductStock.farmId !=null and farmProductStock.farmId !='' ">
|
and land.farm_id = #{farmProductStock.farmId}
|
</if>
|
GROUP BY sfps.strain_id
|
</select>
|
|
<!--销售对比库存是否充足-->
|
<select id="stockCompare" resultType="boolean">
|
SELECT
|
CASE
|
WHEN
|
weight >= #{sale} THEN
|
TRUE ELSE FALSE
|
END result
|
FROM
|
sys_farm_product_stock
|
WHERE
|
id = #{id}
|
</select>
|
|
<!--减去对应库存-->
|
<update id="stockReduce">
|
UPDATE sys_farm_product_stock SET weight = weight - #{sale}
|
WHERE
|
id = #{id}
|
</update>
|
|
<select id="selectBy2Id" resultType="org.springblade.modules.farmplant.entity.FarmProductStock">
|
SELECT id,strain_id,weight,leaves,time,operator,remark,
|
create_time,farm_plant_id,dept_id,tenant_id,recovery,land_id
|
FROM sys_farm_product_stock WHERE strain_id = #{strainId} AND land_id = #{landId}
|
</select>
|
</mapper>
|