后厨 页面 按台桌查看 按商品查看
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
package com.czg.controller.kitchen;
|
||||||
|
|
||||||
|
import com.czg.annotation.SaAdminCheckPermission;
|
||||||
|
import com.czg.order.vo.KitchenFoodVO;
|
||||||
|
import com.czg.order.vo.KitchenTableFoodVO;
|
||||||
|
import com.czg.order.vo.KitchenTableVO;
|
||||||
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
|
import com.czg.service.order.mapper.KitchenDetailMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后厨:台桌/菜单
|
||||||
|
*
|
||||||
|
* @author tankaikai
|
||||||
|
* @since 2025-03-07 15:25
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
//@RequestMapping("/admin/kitchen")
|
||||||
|
@RequestMapping("/notify/kitchen")
|
||||||
|
public class TableController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private KitchenDetailMapper kitchenDetailMapper;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按台桌查看
|
||||||
|
*/
|
||||||
|
@GetMapping("getKitchenTable")
|
||||||
|
@SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看")
|
||||||
|
public CzgResult<List<KitchenTableVO>> getKitchenTable(@RequestParam String tableName, @RequestParam Long areaId) {
|
||||||
|
Long shopId = StpKit.USER.getShopId();
|
||||||
|
List<KitchenTableVO> kitchenTables = kitchenDetailMapper.getKitchenTable(shopId, tableName, areaId);
|
||||||
|
return CzgResult.success(kitchenTables);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按台桌查看 商品内容
|
||||||
|
*/
|
||||||
|
@GetMapping("getKitchenTableFoods")
|
||||||
|
@SaAdminCheckPermission(value = "kitchen:tableFood", name = "后厨-按台桌查看商品内容")
|
||||||
|
public CzgResult<List<KitchenTableFoodVO>> getKitchenTableFoods(@RequestParam(required = false) Long orderId,
|
||||||
|
@RequestParam(required = false) String tableCode,
|
||||||
|
@RequestParam(required = false) Long isNoTable) {
|
||||||
|
Long shopId = StpKit.USER.getShopId();
|
||||||
|
if (isNoTable != null) {
|
||||||
|
tableCode = null;
|
||||||
|
}
|
||||||
|
List<KitchenTableFoodVO> kitchenFood = kitchenDetailMapper.getKitchenTableFoods(shopId, orderId, tableCode, isNoTable);
|
||||||
|
return CzgResult.success(kitchenFood);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按商品查看
|
||||||
|
*/
|
||||||
|
@GetMapping("getKitchenFood")
|
||||||
|
@SaAdminCheckPermission(value = "kitchen:table", name = "后厨-按台桌查看")
|
||||||
|
public CzgResult<List<KitchenFoodVO>> getKitchenFood(@RequestParam String productName) {
|
||||||
|
Long shopId = StpKit.USER.getShopId();
|
||||||
|
List<KitchenFoodVO> kitchenFood = kitchenDetailMapper.getKitchenFood(shopId, productName);
|
||||||
|
return CzgResult.success(kitchenFood);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.czg.order.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后厨台桌列表
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class KitchenFoodVO {
|
||||||
|
|
||||||
|
private Long productId;
|
||||||
|
//是否临时商品 0-否 1-是
|
||||||
|
private int isTemporary;
|
||||||
|
|
||||||
|
private String productName;
|
||||||
|
private String skuName;
|
||||||
|
|
||||||
|
private List<KitchenFoodItemVO> foodItems;
|
||||||
|
|
||||||
|
record KitchenFoodItemVO(
|
||||||
|
//员工名称
|
||||||
|
Long orderId, String staffName,
|
||||||
|
String tableName,String areaName,Long orderDetailId,
|
||||||
|
//下单数 //菜品状态 待起菜 PENDING_PREP 待出菜 READY_TO_SERVE 已出菜 SENT_OUT 已上菜 DELIVERED
|
||||||
|
Long num, String subStatus,
|
||||||
|
//下单时间 起菜时间 出菜时间 上菜时间
|
||||||
|
String orderTime, String startOrderTime, String dishOutTime, String foodServeTime
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.czg.order.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后厨台桌列表
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class KitchenTableFoodVO {
|
||||||
|
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private String skuName;
|
||||||
|
//是否临时商品 0-否 1-是
|
||||||
|
private int isTemporary;
|
||||||
|
private String staffName;
|
||||||
|
private Long orderDetailId;
|
||||||
|
private Long num;
|
||||||
|
//菜品状态 待起菜 PENDING_PREP 待出菜 READY_TO_SERVE 已出菜 SENT_OUT 已上菜 DELIVERED
|
||||||
|
private String subStatus;
|
||||||
|
//下单时间
|
||||||
|
private String orderTime;
|
||||||
|
//起菜时间
|
||||||
|
private String startOrderTime;
|
||||||
|
//出菜时间
|
||||||
|
private String dishOutTime;
|
||||||
|
//上菜时间
|
||||||
|
private String foodServeTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.czg.order.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后厨台桌列表
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class KitchenTableVO {
|
||||||
|
/**
|
||||||
|
* 订单ID
|
||||||
|
*/
|
||||||
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 台桌ID
|
||||||
|
*/
|
||||||
|
private Long tableId;
|
||||||
|
/**
|
||||||
|
* 台桌编码
|
||||||
|
*/
|
||||||
|
private String tableCode;
|
||||||
|
/**
|
||||||
|
* 台桌名称
|
||||||
|
*/
|
||||||
|
private String tableName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 区域ID
|
||||||
|
*/
|
||||||
|
private Long areaId;
|
||||||
|
/**
|
||||||
|
* 区域名称
|
||||||
|
*/
|
||||||
|
private String areaName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待上菜数
|
||||||
|
*/
|
||||||
|
private Integer pendingDishCount;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.czg.service.order.mapper;
|
||||||
|
|
||||||
|
import com.czg.order.vo.KitchenFoodVO;
|
||||||
|
import com.czg.order.vo.KitchenTableFoodVO;
|
||||||
|
import com.czg.order.vo.KitchenTableVO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后厨 台桌列表/商品列表
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface KitchenDetailMapper {
|
||||||
|
/**
|
||||||
|
* 按台桌查看
|
||||||
|
*/
|
||||||
|
List<KitchenTableVO> getKitchenTable(Long shopId, String tableName, Long areaId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按台桌查看商品内容
|
||||||
|
*/
|
||||||
|
List<KitchenTableFoodVO> getKitchenTableFoods(Long shopId, Long orderId, String tableCode, Long isNoTable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按台桌查看商品列表
|
||||||
|
*/
|
||||||
|
List<KitchenFoodVO> getKitchenFood(Long shopId, String productName);
|
||||||
|
}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
<?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.czg.service.order.mapper.KitchenDetailMapper">
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getKitchenFood" resultMap="KitchenFoodVOResultMap">
|
||||||
|
SELECT detail.product_id AS productId,
|
||||||
|
detail.is_temporary AS isTemporary,
|
||||||
|
detail.product_name AS productName,
|
||||||
|
detail.sku_name AS skuName,
|
||||||
|
`order`.id AS orderId,
|
||||||
|
detail.id AS orderDetailId,
|
||||||
|
COALESCE(`table`.`name`, '无台桌') AS tableName,
|
||||||
|
CASE WHEN `table`.id IS NULL THEN '吧台' ELSE COALESCE(`area`.`name`, '') END AS areaName,
|
||||||
|
`staff`.`name` AS staffName,
|
||||||
|
sum(detail.num - detail.return_num) AS num,
|
||||||
|
detail.sub_status AS subStatus,
|
||||||
|
detail.order_time AS orderTime,
|
||||||
|
detail.start_order_time AS startOrderTime,
|
||||||
|
detail.dish_out_time AS dishOutTime,
|
||||||
|
detail.food_serve_time AS foodServeTime
|
||||||
|
FROM `tb_order_detail` detail
|
||||||
|
INNER JOIN `tb_order_info` `order` ON detail.order_id = `order`.id AND `order`.`status` = 'unpaid'
|
||||||
|
LEFT JOIN `tb_shop_staff` `staff` ON staff.id = `order`.staff_id
|
||||||
|
LEFT JOIN `tb_shop_table` `table` ON `order`.table_code = `table`.table_code
|
||||||
|
LEFT JOIN `tb_shop_table_area` `area` ON `table`.area_id = `area`.id
|
||||||
|
WHERE detail.shop_id = #{shopId}
|
||||||
|
AND detail.`status` = 'wait-pay'
|
||||||
|
<if test="productName != null and productName != ''">
|
||||||
|
AND detail.product_name like concat('%',#{productName},'%')
|
||||||
|
</if>
|
||||||
|
GROUP BY `order`.id, detail.product_id, detail.sku_id, detail.place_num
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getKitchenTable" resultType="com.czg.order.vo.KitchenTableVO">
|
||||||
|
SELECT
|
||||||
|
`order`.id AS orderId,
|
||||||
|
`table`.id AS tableId,
|
||||||
|
CASE WHEN `table`.id IS NULL THEN '' ELSE COALESCE (`order`.table_code, '') END AS tableCode,
|
||||||
|
COALESCE(`table`.`name`, '无台桌') AS tableName,
|
||||||
|
`table`.`area_id` AS areaId,
|
||||||
|
CASE WHEN `table`.id IS NULL THEN '吧台' ELSE COALESCE(`area`.`name`, '') END AS areaName,
|
||||||
|
count( detail.id ) AS pendingDishCount
|
||||||
|
FROM
|
||||||
|
`tb_order_detail` detail
|
||||||
|
INNER JOIN `tb_order_info` `order` ON detail.order_id = `order`.id AND `order`.`status` = 'unpaid'
|
||||||
|
LEFT JOIN `tb_shop_table` `table` ON `order`.table_code = `table`.table_code
|
||||||
|
LEFT JOIN `tb_shop_table_area` `area` ON `table`.area_id = `area`.id
|
||||||
|
WHERE
|
||||||
|
detail.shop_id = #{shopId}
|
||||||
|
AND detail.`status` = 'wait-pay'
|
||||||
|
<if test="tableName != null and tableName != ''">
|
||||||
|
AND `table`.`name` like concat('%',#{tableName},'%')
|
||||||
|
</if>
|
||||||
|
<if test="areaId != null">
|
||||||
|
AND `table`.`area_id` = #{areaId}
|
||||||
|
</if>
|
||||||
|
GROUP BY detail.order_id,tableName
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getKitchenTableFoods" resultType="com.czg.order.vo.KitchenTableFoodVO">
|
||||||
|
SELECT
|
||||||
|
detail.product_id AS productId,
|
||||||
|
detail.product_name AS productName,
|
||||||
|
detail.is_temporary AS isTemporary,
|
||||||
|
`staff`.`name` AS staffName,
|
||||||
|
detail.id AS orderDetailId,
|
||||||
|
detail.sku_name AS skuName,
|
||||||
|
sum(detail.num - detail.return_num) AS num,
|
||||||
|
detail.sub_status AS subStatus,
|
||||||
|
detail.order_time AS orderTime,
|
||||||
|
detail.start_order_time AS startOrderTime,
|
||||||
|
detail.dish_out_time AS dishOutTime,
|
||||||
|
detail.food_serve_time AS foodServeTime
|
||||||
|
FROM `tb_order_detail` detail
|
||||||
|
INNER JOIN `tb_order_info` `order` ON detail.order_id = `order`.id AND `order`.`status` = 'unpaid'
|
||||||
|
LEFT JOIN `tb_shop_table` `table` ON `order`.table_code = `table`.table_code
|
||||||
|
LEFT JOIN `tb_shop_staff` `staff` ON staff.id = `order`.staff_id
|
||||||
|
WHERE detail.shop_id = #{shopId}
|
||||||
|
AND detail.`status` = 'wait-pay'
|
||||||
|
<if test="orderId != null">
|
||||||
|
AND detail.order_id = #{orderId}
|
||||||
|
</if>
|
||||||
|
<if test="tableCode != null and tableCode != ''">
|
||||||
|
AND `table`.`table_code` = #{tableCode}
|
||||||
|
</if>
|
||||||
|
<if test="isNoTable != null">
|
||||||
|
AND `table`.`table_code` is null
|
||||||
|
</if>
|
||||||
|
GROUP BY `order`.id, detail.product_id, detail.sku_id, detail.place_num
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<resultMap id="KitchenFoodVOResultMap" type="com.czg.order.vo.KitchenFoodVO">
|
||||||
|
<result property="productId" column="productId"/>
|
||||||
|
<result property="isTemporary" column="isTemporary"/>
|
||||||
|
<result property="productName" column="productName"/>
|
||||||
|
<collection property="foodItems" ofType="com.czg.order.vo.KitchenFoodVO$KitchenFoodItemVO">
|
||||||
|
<constructor>
|
||||||
|
<arg column="orderId" javaType="java.lang.Long"/>
|
||||||
|
<arg column="staffName" javaType="java.lang.String"/>
|
||||||
|
<arg column="tableName" javaType="java.lang.String"/>
|
||||||
|
<arg column="areaName" javaType="java.lang.String"/>
|
||||||
|
<arg column="orderDetailId" javaType="java.lang.Long"/>
|
||||||
|
<arg column="num" javaType="java.lang.Long"/>
|
||||||
|
<arg column="subStatus" javaType="java.lang.String"/>
|
||||||
|
<arg column="orderTime" javaType="java.lang.String"/>
|
||||||
|
<arg column="startOrderTime" javaType="java.lang.String"/>
|
||||||
|
<arg column="dishOutTime" javaType="java.lang.String"/>
|
||||||
|
<arg column="foodServeTime" javaType="java.lang.String"/>
|
||||||
|
</constructor>
|
||||||
|
</collection>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user