2021-03-04 16:50:51 +08:00

147 lines
6.7 KiB
XML

<?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.stdiet.custom.mapper.SysRecipesMapper">
<resultMap type="SysRecipesDaily" id="SysRecipesResult">
<result property="id" column="id"/>
<result property="numDay" column="num_day"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="reviewStatus" column="review_status"/>
<association property="dishes" column="id" select="selectDishesByMenuId"/>
</resultMap>
<resultMap id="SysDishesResult" type="SysRecipesDailyDishes">
<result property="dishesId" column="dishes_id"/>
<result property="menuId" column="menu_id"/>
<result property="id" column="id" />
<result property="name" column="name"/>
<result property="type" column="type"/>
<result property="methods" column="methods"/>
<result property="isMain" column="is_main"/>
<result property="detail" column="detail" typeHandler="com.stdiet.custom.typehandler.ArrayJsonHandler"
javaType="com.stdiet.custom.domain.SysDishesIngredient"/>
<association property="igdList" column="dishes_id" select="selectIngredientsByDishesId"/>
</resultMap>
<resultMap id="SysIgdsResult" type="SysDishesIngredient">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="type" column="type"/>
<result property="proteinRatio" column="protein_ratio"/>
<result property="fatRatio" column="fat_ratio"/>
<result property="carbonRatio" column="carbon_ratio"/>
<result property="area" column="area"/>
<result property="rec" column="rec"/>
<result property="notRec" column="not_rec"/>
<result property="cusWeight" column="cus_weight" />
<result property="cusUnit" column="cus_unit" />
<result property="weight" column="weight" />
</resultMap>
<select id="selectSysRecipesByRecipesId" parameterType="Long" resultMap="SysRecipesResult">
SELECT * FROM sys_customer_daily_menu WHERE recipes_id = #{id}
</select>
<select id="selectDishesByMenuId" parameterType="Long" resultMap="SysDishesResult">
SELECT * FROM (SELECT * FROM sys_customer_menu_dishes WHERE menu_id = #{id}) AS menu
LEFT JOIN sys_dishes ON menu.dishes_id = sys_dishes.id
</select>
<select id="selectIngredientsByDishesId" parameterType="Long" resultMap="SysIgdsResult">
SELECT * FROM(
SELECT ingredient_id AS id, ingredient_weight AS weight, cus_weight, cus_unit, remark
FROM sys_dishes_ingredient
WHERE dishes_id = #{id}
) dishes
LEFT JOIN (
SELECT id, name, type, protein_ratio, fat_ratio, carbon_ratio, area, not_rec, rec
FROM sys_ingredient igd
LEFT JOIN (
SELECT ingredient_id as id, GROUP_CONCAT(name SEPARATOR ',') not_rec FROM(
SELECT physical_signs_id as id, ingredient_id
FROM sys_ingredient_not_rec
) notRec JOIN sys_physical_signs phy USING(id)
GROUP BY id
) notRecT USING(id)
LEFT JOIN (
SELECT ingredient_id as id, GROUP_CONCAT(name SEPARATOR ',') rec FROM(
SELECT physical_signs_id as id, ingredient_id
FROM sys_ingredient_rec
) rec JOIN sys_physical_signs phy USING(id)
GROUP BY id
) recT USING(id)
) ing USING(id)
</select>
<!-- 更新菜品-->
<update id="updateDishesDetail" parameterType="SysRecipesDailyDishes">
update sys_customer_menu_dishes
<trim prefix="SET" suffixOverrides=",">
<if test="menuId != null">menu_id = #{menuId},</if>
<if test="dishesId != null">dishes_id = #{dishesId},</if>
<if test="type != null">type = #{type},</if>
<if test="detail != null">detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},</if>
</trim>
where id = #{id}
</update>
<!-- 插入菜品-->
<insert id="addDishes" parameterType="SysRecipesDailyDishes" useGeneratedKeys="true" keyProperty="id">
insert into sys_customer_menu_dishes
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="menuId != null">menu_id,</if>
<if test="dishesId != null">dishes_id,</if>
<if test="type != null">type,</if>
<if test="detail != null">detail,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="menuId != null">#{menuId},</if>
<if test="dishesId != null">#{dishesId},</if>
<if test="type != null">#{type},</if>
<if test="detail != null">#{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler},</if>
</trim>
</insert>
<!-- 删除菜品-->
<delete id="deleteDishes" parameterType="Long">
delete from sys_customer_menu_dishes where id = #{id}
</delete>
<!-- 查询已有食谱天数-->
<select id="getNumDayByCusId" parameterType="Long" resultType="Integer">
select count(*) from sys_customer_daily_menu where cus_id = #{id}
</select>
<!-- 新增食谱 -->
<insert id="addRecipes" parameterType="SysRecipes" useGeneratedKeys="true" keyProperty="id">
insert into sys_customer_menu
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="cusId != null">cus_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="cusId != null">#{cusId},</if>
</trim>
</insert>
<!-- 新增每菜单 -->
<insert id="bashAddMenus">
insert into sys_customer_daily_menu (id, num_day, recipes_id, cus_id) values
<foreach collection="list" separator="," item="item" index="index">
(#{item.id}, #{item.numDay}, #{item.recipesId}, #{item.cusId})
</foreach>
</insert>
<!-- 新增菜单对应菜品-->
<insert id="bashAddDishes" >
insert into sys_customer_menu_dishes (menu_id, type, dishes_id, detail) values
<foreach collection="list" separator="," item="item" index="index">
(#{item.menuId}, #{item.type}, #{item.dishesId}, #{item.detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler})
</foreach>
</insert>
</mapper>