处理冲突

This commit is contained in:
yangshb
2024-03-05 14:09:35 +08:00
parent 5c80bcc9a9
commit f2c9523843
19 changed files with 19 additions and 1314 deletions
@@ -1,96 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemPageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemSaveReqVO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.dal.dataobject.order.OrderItemDO;
import com.cf.imes.module.executor.service.order.OrderItemService;
@Tag(name = "管理后台 - 生产单明细表 order_item_{N}")
@RestController
@RequestMapping("/executor/order-item")
@Validated
public class OrderItemController {
@Resource
private OrderItemService orderItemService;
@PostMapping("/create")
@Operation(summary = "创建生产单明细表 order_item_{N}")
@PreAuthorize("@ss.hasPermission('executor:order-item:create')")
public CommonResult<Long> createOrderItem(@Valid @RequestBody OrderItemSaveReqVO createReqVO) {
return success(orderItemService.createOrderItem(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产单明细表 order_item_{N}")
@PreAuthorize("@ss.hasPermission('executor:order-item:update')")
public CommonResult<Boolean> updateOrderItem(@Valid @RequestBody OrderItemSaveReqVO updateReqVO) {
orderItemService.updateOrderItem(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产单明细表 order_item_{N}")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:order-item:delete')")
public CommonResult<Boolean> deleteOrderItem(@RequestParam("id") Long id) {
orderItemService.deleteOrderItem(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产单明细表 order_item_{N}")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:order-item:query')")
public CommonResult<OrderItemRespVO> getOrderItem(@RequestParam("id") Long id) {
OrderItemDO orderItem = orderItemService.getOrderItem(id);
return success(BeanUtils.toBean(orderItem, OrderItemRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产单明细表 order_item_{N}分页")
@PreAuthorize("@ss.hasPermission('executor:order-item:query')")
public CommonResult<PageResult<OrderItemRespVO>> getOrderItemPage(@Valid OrderItemPageReqVO pageReqVO) {
PageResult<OrderItemDO> pageResult = orderItemService.getOrderItemPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, OrderItemRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产单明细表 order_item_{N} Excel")
@PreAuthorize("@ss.hasPermission('executor:order-item:export')")
@OperateLog(type = EXPORT)
public void exportOrderItemExcel(@Valid OrderItemPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<OrderItemDO> list = orderItemService.getOrderItemPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产单明细表 order_item_{N}.xls", "数据", OrderItemRespVO.class,
BeanUtils.toBean(list, OrderItemRespVO.class));
}
}
@@ -1,96 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlatePageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlateRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlateSaveReqVO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.dal.dataobject.order.PlateDO;
import com.cf.imes.module.executor.service.order.PlateService;
@Tag(name = "管理后台 - 生产单板件")
@RestController
@RequestMapping("/executor/plate")
@Validated
public class PlateController {
@Resource
private PlateService plateService;
@PostMapping("/create")
@Operation(summary = "创建生产单板件")
@PreAuthorize("@ss.hasPermission('executor:plate:create')")
public CommonResult<Long> createPlate(@Valid @RequestBody PlateSaveReqVO createReqVO) {
return success(plateService.createPlate(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产单板件")
@PreAuthorize("@ss.hasPermission('executor:plate:update')")
public CommonResult<Boolean> updatePlate(@Valid @RequestBody PlateSaveReqVO updateReqVO) {
plateService.updatePlate(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产单板件")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:plate:delete')")
public CommonResult<Boolean> deletePlate(@RequestParam("id") Long id) {
plateService.deletePlate(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产单板件")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:plate:query')")
public CommonResult<PlateRespVO> getPlate(@RequestParam("id") Long id) {
PlateDO plate = plateService.getPlate(id);
return success(BeanUtils.toBean(plate, PlateRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产单板件分页")
@PreAuthorize("@ss.hasPermission('executor:plate:query')")
public CommonResult<PageResult<PlateRespVO>> getPlatePage(@Valid PlatePageReqVO pageReqVO) {
PageResult<PlateDO> pageResult = plateService.getPlatePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlateRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产单板件 Excel")
@PreAuthorize("@ss.hasPermission('executor:plate:export')")
@OperateLog(type = EXPORT)
public void exportPlateExcel(@Valid PlatePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlateDO> list = plateService.getPlatePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产单板件.xls", "数据", PlateRespVO.class,
BeanUtils.toBean(list, PlateRespVO.class));
}
}
@@ -1,38 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.item;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
@Schema(description = "管理后台 - 生产单明细表 order_item_{N}分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class OrderItemPageReqVO extends PageParam {
@Schema(description = "生产单号", example = "9670")
private Long orderId;
@Schema(description = "明细类型,1 板材 2 五金/配件 3 其他 4 报价配件", example = "1")
private Integer type;
@Schema(description = "房间 ID", example = "18039")
private Long roomId;
@Schema(description = "柜体 ID", example = "19484")
private Long bodyId;
@Schema(description = "数据 ID", example = "22988")
private Long dataId;
@Schema(description = "排单 ID", example = "7880")
private Long planId;
@Schema(description = "包裹 ID", example = "18267")
private Long packageId;
@Schema(description = "部件数量")
private Double num;
}
@@ -1,50 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.item;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产单明细表 order_item_{N} Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderItemRespVO {
@Schema(description = "明细编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19495")
@ExcelProperty("明细编号")
private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9670")
@ExcelProperty("生产单号")
private Long orderId;
@Schema(description = "明细类型,1 板材 2 五金/配件 3 其他 4 报价配件", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("明细类型,1 板材 2 五金/配件 3 其他 4 报价配件")
private Integer type;
@Schema(description = "房间 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18039")
@ExcelProperty("房间 ID")
private Long roomId;
@Schema(description = "柜体 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19484")
@ExcelProperty("柜体 ID")
private Long bodyId;
@Schema(description = "数据 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22988")
@ExcelProperty("数据 ID")
private Long dataId;
@Schema(description = "排单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7880")
@ExcelProperty("排单 ID")
private Long planId;
@Schema(description = "包裹 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18267")
@ExcelProperty("包裹 ID")
private Long packageId;
@Schema(description = "部件数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("部件数量")
private Double num;
}
@@ -1,47 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.item;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 生产单明细表 order_item_{N}新增/修改 Request VO")
@Data
public class OrderItemSaveReqVO {
@Schema(description = "明细编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19495")
private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9670")
@NotNull(message = "生产单号不能为空")
private Long orderId;
@Schema(description = "明细类型,1 板材 2 五金/配件 3 其他 4 报价配件", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "明细类型,1 板材 2 五金/配件 3 其他 4 报价配件不能为空")
private Integer type;
@Schema(description = "房间 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18039")
@NotNull(message = "房间 ID不能为空")
private Long roomId;
@Schema(description = "柜体 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19484")
@NotNull(message = "柜体 ID不能为空")
private Long bodyId;
@Schema(description = "数据 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22988")
@NotNull(message = "数据 ID不能为空")
private Long dataId;
@Schema(description = "排单 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7880")
@NotNull(message = "排单 ID不能为空")
private Long planId;
@Schema(description = "包裹 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18267")
@NotNull(message = "包裹 ID不能为空")
private Long packageId;
@Schema(description = "部件数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "部件数量不能为空")
private Double num;
}
@@ -0,0 +1 @@
package com.cf.imes.module.executor.controller.admin.order.vo;
@@ -1,119 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.plate;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产单板件分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlatePageReqVO extends PageParam {
@Schema(description = "生产单号", example = "934")
private Long orderId;
@Schema(description = "板名称", example = "赵六")
private String name;
@Schema(description = "板类型,0 层板 1 立板 2 背板", example = "1")
private Integer type;
@Schema(description = "商品 ID", example = "24680")
private Long goodsId;
@Schema(description = "宽度")
private BigDecimal width;
@Schema(description = "高度")
private BigDecimal height;
@Schema(description = "厚度")
private BigDecimal thickness;
@Schema(description = "拆单宽度")
private BigDecimal splitWidth;
@Schema(description = "拆单高度")
private BigDecimal splitHeight;
@Schema(description = "拆单厚度")
private BigDecimal splitThickness;
@Schema(description = "左封边厚度")
private BigDecimal sealLeft;
@Schema(description = "右封边厚度")
private BigDecimal sealRight;
@Schema(description = "上封边厚度")
private BigDecimal sealUp;
@Schema(description = "下封边厚度")
private BigDecimal sealDown;
@Schema(description = "面积")
private BigDecimal area;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹")
private Integer texture;
@Schema(description = "孔面类型,0 正面 1 反面 2 侧面")
private Integer holeFace;
@Schema(description = "排孔类型,0 正纹 1 反面 2 随意面")
private Integer holeArrange;
@Schema(description = "异型孔数量", example = "27841")
private Short unregularPointCount;
@Schema(description = "正面孔数量", example = "16040")
private Short frontHoleCount;
@Schema(description = "背面孔数量", example = "5101")
private Short backHoleCount;
@Schema(description = "侧面孔数量", example = "1790")
private Short sideHoleCount;
@Schema(description = "正面造型量", example = "4076")
private Short frontModelCount;
@Schema(description = "背面造型量", example = "30341")
private Short backModelCount;
@Schema(description = "是否门板")
private Boolean isDoor;
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", example = "2")
private Boolean openDoorType;
@Schema(description = "异型偏移 x")
private Double offsetX;
@Schema(description = "异型偏移 y")
private Double offsetY;
@Schema(description = "是否孤形对角")
private Boolean isArcAcross;
@Schema(description = "模块类型 ID", example = "21588")
private Long moduleTypeId;
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", example = "2")
private Boolean filterType;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -1,153 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.plate;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产单板件 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlateRespVO {
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1847")
@ExcelProperty("板件 ID")
private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "934")
@ExcelProperty("生产单号")
private Long orderId;
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("板名称")
private String name;
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("板类型,0 层板 1 立板 2 背板")
private Integer type;
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24680")
@ExcelProperty("商品 ID")
private Long goodsId;
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("宽度")
private BigDecimal width;
@Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("高度")
private BigDecimal height;
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("厚度")
private BigDecimal thickness;
@Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("拆单宽度")
private BigDecimal splitWidth;
@Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("拆单高度")
private BigDecimal splitHeight;
@Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("拆单厚度")
private BigDecimal splitThickness;
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("左封边厚度")
private BigDecimal sealLeft;
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("右封边厚度")
private BigDecimal sealRight;
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("上封边厚度")
private BigDecimal sealUp;
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("下封边厚度")
private BigDecimal sealDown;
@Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("面积")
private BigDecimal area;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("纹路类型,0 正纹 1 可翻转 2 反纹")
private Integer texture;
@Schema(description = "孔面类型,0 正面 1 反面 2 侧面", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("孔面类型,0 正面 1 反面 2 侧面")
private Integer holeFace;
@Schema(description = "排孔类型,0 正纹 1 反面 2 随意面", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排孔类型,0 正纹 1 反面 2 随意面")
private Integer holeArrange;
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "27841")
@ExcelProperty("异型孔数量")
private Short unregularPointCount;
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "16040")
@ExcelProperty("正面孔数量")
private Short frontHoleCount;
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5101")
@ExcelProperty("背面孔数量")
private Short backHoleCount;
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1790")
@ExcelProperty("侧面孔数量")
private Short sideHoleCount;
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "4076")
@ExcelProperty("正面造型量")
private Short frontModelCount;
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30341")
@ExcelProperty("背面造型量")
private Short backModelCount;
@Schema(description = "是否门板", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否门板")
private Boolean isDoor;
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("开门类型,0 无 1 左 2 右 3 上 4 下")
private Boolean openDoorType;
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("异型偏移 x")
private Double offsetX;
@Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("异型偏移 y")
private Double offsetY;
@Schema(description = "是否孤形对角", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否孤形对角")
private Boolean isArcAcross;
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21588")
@ExcelProperty("模块类型 ID")
private Long moduleTypeId;
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠")
private Boolean filterType;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
@@ -1,143 +0,0 @@
package com.cf.imes.module.executor.controller.admin.order.vo.plate;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 生产单板件新增/修改 Request VO")
@Data
public class PlateSaveReqVO {
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1847")
private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "934")
@NotNull(message = "生产单号不能为空")
private Long orderId;
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "板名称不能为空")
private String name;
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "板类型,0 层板 1 立板 2 背板不能为空")
private Integer type;
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24680")
@NotNull(message = "商品 ID不能为空")
private Long goodsId;
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "宽度不能为空")
private BigDecimal width;
@Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "高度不能为空")
private BigDecimal height;
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "厚度不能为空")
private BigDecimal thickness;
@Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "拆单宽度不能为空")
private BigDecimal splitWidth;
@Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "拆单高度不能为空")
private BigDecimal splitHeight;
@Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "拆单厚度不能为空")
private BigDecimal splitThickness;
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "左封边厚度不能为空")
private BigDecimal sealLeft;
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "右封边厚度不能为空")
private BigDecimal sealRight;
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "上封边厚度不能为空")
private BigDecimal sealUp;
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "下封边厚度不能为空")
private BigDecimal sealDown;
@Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "面积不能为空")
private BigDecimal area;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "纹路类型,0 正纹 1 可翻转 2 反纹不能为空")
private Integer texture;
@Schema(description = "孔面类型,0 正面 1 反面 2 侧面", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "孔面类型,0 正面 1 反面 2 侧面不能为空")
private Integer holeFace;
@Schema(description = "排孔类型,0 正纹 1 反面 2 随意面", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排孔类型,0 正纹 1 反面 2 随意面不能为空")
private Integer holeArrange;
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "27841")
@NotNull(message = "异型孔数量不能为空")
private Short unregularPointCount;
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "16040")
@NotNull(message = "正面孔数量不能为空")
private Short frontHoleCount;
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5101")
@NotNull(message = "背面孔数量不能为空")
private Short backHoleCount;
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1790")
@NotNull(message = "侧面孔数量不能为空")
private Short sideHoleCount;
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "4076")
@NotNull(message = "正面造型量不能为空")
private Short frontModelCount;
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30341")
@NotNull(message = "背面造型量不能为空")
private Short backModelCount;
@Schema(description = "是否门板", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否门板不能为空")
private Boolean isDoor;
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "开门类型,0 无 1 左 2 右 3 上 4 下不能为空")
private Boolean openDoorType;
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "异型偏移 x不能为空")
private Double offsetX;
@Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "异型偏移 y不能为空")
private Double offsetY;
@Schema(description = "是否孤形对角", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否孤形对角不能为空")
private Boolean isArcAcross;
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21588")
@NotNull(message = "模块类型 ID不能为空")
private Long moduleTypeId;
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠不能为空")
private Boolean filterType;
@Schema(description = "备注", example = "你说的对")
private String remark;
}
@@ -1,61 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.order;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 生产单明细表 order_item_{N} DO
*
* @author 晨丰科技
*/
@TableName("order_item")
@KeySequence("order_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderItemDO extends BaseDO {
/**
* 明细编号
*/
@TableId
private Long id;
/**
* 生产单号
*/
private Long orderId;
/**
* 明细类型,1 板材 2 五金/配件 3 其他 4 报价配件
*/
private Integer type;
/**
* 房间 ID
*/
private Long roomId;
/**
* 柜体 ID
*/
private Long bodyId;
/**
* 数据 ID
*/
private Long dataId;
/**
* 排单 ID
*/
private Long planId;
/**
* 包裹 ID
*/
private Long packageId;
/**
* 部件数量
*/
private Double num;
}
@@ -1,170 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.order;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 生产单板件 DO
*
* @author 晨丰科技
*/
@TableName("order_plate")
@KeySequence("order_plate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PlateDO extends BaseDO {
/**
* 板件 ID
*/
@TableId
private Long id;
/**
* 生产单号
*/
private Long orderId;
/**
* 板名称
*/
private String name;
/**
* 板类型,0 层板 1 立板 2 背板
*/
private Integer type;
/**
* 商品 ID
*/
private Long goodsId;
/**
* 宽度
*/
private BigDecimal width;
/**
* 高度
*/
private BigDecimal height;
/**
* 厚度
*/
private BigDecimal thickness;
/**
* 拆单宽度
*/
private BigDecimal splitWidth;
/**
* 拆单高度
*/
private BigDecimal splitHeight;
/**
* 拆单厚度
*/
private BigDecimal splitThickness;
/**
* 左封边厚度
*/
private BigDecimal sealLeft;
/**
* 右封边厚度
*/
private BigDecimal sealRight;
/**
* 上封边厚度
*/
private BigDecimal sealUp;
/**
* 下封边厚度
*/
private BigDecimal sealDown;
/**
* 面积
*/
private BigDecimal area;
/**
* 纹路类型,0 正纹 1 可翻转 2 反纹
*/
private Integer texture;
/**
* 孔面类型,0 正面 1 反面 2 侧面
*/
private Integer holeFace;
/**
* 排孔类型,0 正纹 1 反面 2 随意面
*/
private Integer holeArrange;
/**
* 异型孔数量
*/
private Short unregularPointCount;
/**
* 正面孔数量
*/
private Short frontHoleCount;
/**
* 背面孔数量
*/
private Short backHoleCount;
/**
* 侧面孔数量
*/
private Short sideHoleCount;
/**
* 正面造型量
*/
private Short frontModelCount;
/**
* 背面造型量
*/
private Short backModelCount;
/**
* 是否门板
*/
private Boolean isDoor;
/**
* 开门类型,0 无 1 左 2 右 3 上 4 下
*/
private Boolean openDoorType;
/**
* 异型偏移 x
*/
private Double offsetX;
/**
* 异型偏移 y
*/
private Double offsetY;
/**
* 是否孤形对角
*/
private Boolean isArcAcross;
/**
* 模块类型 ID
*/
private Long moduleTypeId;
/**
* 排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠
*/
private Boolean filterType;
/**
* 备注
*/
private String remark;
}
@@ -1,31 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.order;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemPageReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderItemDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 生产单明细表 order_item_{N} Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
default PageResult<OrderItemDO> selectPage(OrderItemPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<OrderItemDO>()
.eqIfPresent(OrderItemDO::getOrderId, reqVO.getOrderId())
.eqIfPresent(OrderItemDO::getType, reqVO.getType())
.eqIfPresent(OrderItemDO::getRoomId, reqVO.getRoomId())
.eqIfPresent(OrderItemDO::getBodyId, reqVO.getBodyId())
.eqIfPresent(OrderItemDO::getDataId, reqVO.getDataId())
.eqIfPresent(OrderItemDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(OrderItemDO::getPackageId, reqVO.getPackageId())
.eqIfPresent(OrderItemDO::getNum, reqVO.getNum())
.orderByDesc(OrderItemDO::getId));
}
}
@@ -2,9 +2,11 @@ package com.cf.imes.module.executor.dal.mysql.order;
import java.util.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import org.apache.ibatis.annotations.Mapper;
@@ -17,4 +19,6 @@ import org.apache.ibatis.annotations.Mapper;
public interface OrderMapper extends BaseMapperX<OrderDO> {
PageResult<OrderDO> selectPage(OrderPageReqVO pageReqVO);
IPage<OrderRespVO> selectOrderPage(IPage page, com.cf.imes.module.executor.controller.admin.plan.vo.OrderPageReqVO pageReqVO);
}
@@ -1,56 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.order;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlatePageReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.PlateDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 生产单板件 Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface PlateMapper extends BaseMapperX<PlateDO> {
default PageResult<PlateDO> selectPage(PlatePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PlateDO>()
.eqIfPresent(PlateDO::getOrderId, reqVO.getOrderId())
.likeIfPresent(PlateDO::getName, reqVO.getName())
.eqIfPresent(PlateDO::getType, reqVO.getType())
.eqIfPresent(PlateDO::getGoodsId, reqVO.getGoodsId())
.eqIfPresent(PlateDO::getWidth, reqVO.getWidth())
.eqIfPresent(PlateDO::getHeight, reqVO.getHeight())
.eqIfPresent(PlateDO::getThickness, reqVO.getThickness())
.eqIfPresent(PlateDO::getSplitWidth, reqVO.getSplitWidth())
.eqIfPresent(PlateDO::getSplitHeight, reqVO.getSplitHeight())
.eqIfPresent(PlateDO::getSplitThickness, reqVO.getSplitThickness())
.eqIfPresent(PlateDO::getSealLeft, reqVO.getSealLeft())
.eqIfPresent(PlateDO::getSealRight, reqVO.getSealRight())
.eqIfPresent(PlateDO::getSealUp, reqVO.getSealUp())
.eqIfPresent(PlateDO::getSealDown, reqVO.getSealDown())
.eqIfPresent(PlateDO::getArea, reqVO.getArea())
.eqIfPresent(PlateDO::getTexture, reqVO.getTexture())
.eqIfPresent(PlateDO::getHoleFace, reqVO.getHoleFace())
.eqIfPresent(PlateDO::getHoleArrange, reqVO.getHoleArrange())
.eqIfPresent(PlateDO::getUnregularPointCount, reqVO.getUnregularPointCount())
.eqIfPresent(PlateDO::getFrontHoleCount, reqVO.getFrontHoleCount())
.eqIfPresent(PlateDO::getBackHoleCount, reqVO.getBackHoleCount())
.eqIfPresent(PlateDO::getSideHoleCount, reqVO.getSideHoleCount())
.eqIfPresent(PlateDO::getFrontModelCount, reqVO.getFrontModelCount())
.eqIfPresent(PlateDO::getBackModelCount, reqVO.getBackModelCount())
.eqIfPresent(PlateDO::getIsDoor, reqVO.getIsDoor())
.eqIfPresent(PlateDO::getOpenDoorType, reqVO.getOpenDoorType())
.eqIfPresent(PlateDO::getOffsetX, reqVO.getOffsetX())
.eqIfPresent(PlateDO::getOffsetY, reqVO.getOffsetY())
.eqIfPresent(PlateDO::getIsArcAcross, reqVO.getIsArcAcross())
.eqIfPresent(PlateDO::getModuleTypeId, reqVO.getModuleTypeId())
.eqIfPresent(PlateDO::getFilterType, reqVO.getFilterType())
.eqIfPresent(PlateDO::getRemark, reqVO.getRemark())
.betweenIfPresent(PlateDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(PlateDO::getId));
}
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.executor.service.order;
import javax.validation.*;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemPageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderItemDO;
import com.cf.imes.framework.common.pojo.PageResult;
/**
* 生产单明细表 order_item_{N} Service 接口
*
* @author 晨丰科技
*/
public interface OrderItemService {
/**
* 创建生产单明细表 order_item_{N}
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createOrderItem(@Valid OrderItemSaveReqVO createReqVO);
/**
* 更新生产单明细表 order_item_{N}
*
* @param updateReqVO 更新信息
*/
void updateOrderItem(@Valid OrderItemSaveReqVO updateReqVO);
/**
* 删除生产单明细表 order_item_{N}
*
* @param id 编号
*/
void deleteOrderItem(Long id);
/**
* 获得生产单明细表 order_item_{N}
*
* @param id 编号
* @return 生产单明细表 order_item_{N}
*/
OrderItemDO getOrderItem(Long id);
/**
* 获得生产单明细表 order_item_{N}分页
*
* @param pageReqVO 分页查询
* @return 生产单明细表 order_item_{N}分页
*/
PageResult<OrderItemDO> getOrderItemPage(OrderItemPageReqVO pageReqVO);
}
@@ -1,72 +0,0 @@
package com.cf.imes.module.executor.service.order;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemPageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.item.OrderItemSaveReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.executor.dal.dataobject.order.OrderItemDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.order.OrderItemMapper;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_ITEM_NOT_EXISTS;
/**
* 生产单明细表 order_item_{N} Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class OrderItemServiceImpl implements OrderItemService {
@Resource
private OrderItemMapper orderItemMapper;
@Override
public Long createOrderItem(OrderItemSaveReqVO createReqVO) {
// 插入
OrderItemDO orderItem = BeanUtils.toBean(createReqVO, OrderItemDO.class);
orderItemMapper.insert(orderItem);
// 返回
return orderItem.getId();
}
@Override
public void updateOrderItem(OrderItemSaveReqVO updateReqVO) {
// 校验存在
validateOrderItemExists(updateReqVO.getId());
// 更新
OrderItemDO updateObj = BeanUtils.toBean(updateReqVO, OrderItemDO.class);
orderItemMapper.updateById(updateObj);
}
@Override
public void deleteOrderItem(Long id) {
// 校验存在
validateOrderItemExists(id);
// 删除
orderItemMapper.deleteById(id);
}
private void validateOrderItemExists(Long id) {
if (orderItemMapper.selectById(id) == null) {
throw exception(ORDER_ITEM_NOT_EXISTS);
}
}
@Override
public OrderItemDO getOrderItem(Long id) {
return orderItemMapper.selectById(id);
}
@Override
public PageResult<OrderItemDO> getOrderItemPage(OrderItemPageReqVO pageReqVO) {
return orderItemMapper.selectPage(pageReqVO);
}
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.executor.service.order;
import javax.validation.*;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlatePageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlateSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.PlateDO;
import com.cf.imes.framework.common.pojo.PageResult;
/**
* 生产单板件 Service 接口
*
* @author 晨丰科技
*/
public interface PlateService {
/**
* 创建生产单板件
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createPlate(@Valid PlateSaveReqVO createReqVO);
/**
* 更新生产单板件
*
* @param updateReqVO 更新信息
*/
void updatePlate(@Valid PlateSaveReqVO updateReqVO);
/**
* 删除生产单板件
*
* @param id 编号
*/
void deletePlate(Long id);
/**
* 获得生产单板件
*
* @param id 编号
* @return 生产单板件
*/
PlateDO getPlate(Long id);
/**
* 获得生产单板件分页
*
* @param pageReqVO 分页查询
* @return 生产单板件分页
*/
PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO);
}
@@ -1,72 +0,0 @@
package com.cf.imes.module.executor.service.order;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlatePageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.plate.PlateSaveReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.executor.dal.dataobject.order.PlateDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.order.PlateMapper;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_NOT_EXISTS;
/**
* 生产单板件 Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class PlateServiceImpl implements PlateService {
@Resource
private PlateMapper plateMapper;
@Override
public Long createPlate(PlateSaveReqVO createReqVO) {
// 插入
PlateDO plate = BeanUtils.toBean(createReqVO, PlateDO.class);
plateMapper.insert(plate);
// 返回
return plate.getId();
}
@Override
public void updatePlate(PlateSaveReqVO updateReqVO) {
// 校验存在
validatePlateExists(updateReqVO.getId());
// 更新
PlateDO updateObj = BeanUtils.toBean(updateReqVO, PlateDO.class);
plateMapper.updateById(updateObj);
}
@Override
public void deletePlate(Long id) {
// 校验存在
validatePlateExists(id);
// 删除
plateMapper.deleteById(id);
}
private void validatePlateExists(Long id) {
if (plateMapper.selectById(id) == null) {
throw exception(PLATE_NOT_EXISTS);
}
}
@Override
public PlateDO getPlate(Long id) {
return plateMapper.selectById(id);
}
@Override
public PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO) {
return plateMapper.selectPage(pageReqVO);
}
}
@@ -0,0 +1,14 @@
<?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.cf.imes.module.executor.dal.mysql.order.OrderMapper">
<select id="selectOrderPage" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO">
select a.id as orderId, a.delivery_date, a.customer, a.address, a.custom_order_no
from `order` a
left join prod_plan_order b on a.id = b.order_id
left join order_plate c on a.id = c.order_id
left join order_item d on a.id = d.order_id
where d.order_id is null
</select>
</mapper>