Merge branch 'main' of ssh://192.168.1.205:9922/cf_devdept2/cf_imes_server

This commit is contained in:
lym
2024-05-17 18:05:11 +08:00
24 changed files with 487 additions and 59 deletions
@@ -1,6 +1,7 @@
package com.cf.imes.module.executor.controller.admin.plan.bo;
import com.cf.imes.module.executor.controller.admin.plan.vo.OptimizeParamRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
@@ -34,11 +35,11 @@ public class OrderSource {
@Schema(description = "生产单列表")
private List<OrderDO> orderList;
@Schema(description = "商品板材列表")
@Schema(description = "板材-大板列表")
private List<GoodsDO> goodsList;
@Schema(description = "小板列表")
private List<PlateDO> plateList;
private List<PlateDetialRespVO> plateList;
@Schema(description = "小板造型列表")
private List<OrderModelDO> plateModels;
@@ -0,0 +1,93 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 生产单板件 Response VO")
@Data
public class PlateDetialRespVO {
@Schema(description = "板件ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "房间名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String roomName;
@Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String bodyName;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderId;
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long goodsId;
@Schema(description = "板编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String plateNo;
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String name;
@Schema(description = "板长", requiredMode = Schema.RequiredMode.REQUIRED)
private Double height;
@Schema(description = "板宽", requiredMode = Schema.RequiredMode.REQUIRED)
private Double width;
@Schema(description = "板厚", requiredMode = Schema.RequiredMode.REQUIRED)
private Double thickness;
@Schema(description = "是否异性-是否弧形地脚,不处理异形", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isSpecialShaped;
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealLeft;
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealRight;
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealUp;
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealDown;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer texture;
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
private Double offsetX;
@Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
private Double offsetY;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
private String remark;
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer type;
@Schema(description = "加工组名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String processGroupName;
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
private Integer openDoorType;
@Schema(description = "生产单明细ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long itemId;
}
@@ -66,11 +66,12 @@ public class PlateController {
@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));
public CommonResult<List<PlateRespVO>> getPlate(@Valid PlateDetailReqVO reqVO) {
List<PlateRespVO> plate = plateService.getPlate(reqVO);
return success(plate);
}
@GetMapping("/page")
@@ -17,6 +17,7 @@ import java.util.List;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "管理后台 - 柜体对应的板件造型信息")
public class BodyPlateDetailVO {
@Schema(description = "模块id")
private Long bodyId;
@@ -0,0 +1,27 @@
package com.cf.imes.module.executor.controller.admin.plate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 查询生产单板件对应详细信息")
@Data
public class PlateDetailReqVO {
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14195")
private Long plateId;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11087")
private Long orderId;
@Schema(description = "柜体ID", example = "11087")
private Long bodyId;
}
@@ -0,0 +1,26 @@
package com.cf.imes.module.executor.controller.admin.plate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 生产单的大板-余料板等信息")
@Data
public class PlateDetailRespVO {
@Schema(description = "大板数量")
private Long bigPlateNum;
@Schema(description = "余料板数量")
private Long remainPlateNum;
@Schema(description = "排单状态")
private Long planStatus;
@Schema(description = "用户ID")
private Long companyId;
}
@@ -174,6 +174,52 @@ public class PlateRespVO {
@Schema(description = "板材材质")
private String material;
@Schema(description = "柜体名称")
private String bodyName;
@Schema(description = "房间名称")
private String roomName;
@Schema(description = "生产单明细ID")
private Long itemId;
@Schema(description = "加工组ID")
private Long processGroupId;
@Schema(description = "大板数量")
private Long bigPlateNum;
@Schema(description = "余料板数量")
private Long remainPlateNum;
@Schema(description = "品牌")
private String brand;
@Schema(description = "用户ID")
private Long companyId;
@Schema(description = "有纹路")
private String hasTexture;
@Schema(description = "大板长度")
private BigDecimal bigPlateLength;
@Schema(description = "大板宽度")
private BigDecimal bigPlateWidth;
@Schema(description = "规格")
private String spec;
@Schema(description = "排单状态")
private Long planStatus;
@Schema(description = "小板详情列表")
private List<PlateDetailVO> plateDetailList;
@@ -5,6 +5,7 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDetailRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
@@ -27,4 +28,7 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
List<OrderPlatesDetailRespVO> selectPartsByOrderId(@Param("orderId") Long orderId);
List<PlateRespVO> selectPlateList(PlateDetailReqVO reqVO);
}
@@ -10,10 +10,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
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.plan.vo.PlanSaveReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateParam;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import org.apache.ibatis.annotations.Mapper;
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
@@ -92,4 +89,11 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
IPage<PlateRespVO> selectProductList(@Param("page") IPage<PlateRespVO> page , @Param("orderId")Long orderId, @Param("roomId")Long roomId , @Param("bodyId")Long bodyId);
Set<Long> selectBatchOrderIdsAndGoodsIds(@Param("itemList") List<PlanSaveReqVO.Item> itemList);
PlateDetailRespVO selectPlateNumList(PlateDetailReqVO reqVO);
List<PlateDetialRespVO> selectPlateDetialList(@Param("orderId") Long orderId);
List<PlateDetialRespVO> selectPlateDetialListByIds(@Param("orderIds") Set<Long> orderIds);
}
@@ -304,10 +304,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrderId, orderId)
);
List<PlateDO> plateDOS = plateMapper.selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrderId, orderId)
);
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialList(orderId);
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL);
orderSource.setOrderList(Collections.singletonList(orderDO));
orderSource.setPlateList(plateDOS);
orderSource.setGoodsList(goodsDOS);
@@ -333,7 +333,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
Set<Long> orderIds = orderItemDOS.stream().map(OrderItemDO::getOrderId).collect(Collectors.toSet());
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>().in(GoodsDO::getOrderId, orderIds));
List<PlateDO> plateDOS = plateMapper.selectList(new LambdaQueryWrapperX<PlateDO>().in(PlateDO::getOrderId, orderIds));
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialListByIds(orderIds);
List<OrderModelDO> orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL);
return OrderSource.builder()
.orderList(orderDOS)
@@ -41,10 +41,10 @@ public interface PlateService {
/**
* 获得生产单板件
*
* @param id 编号
* @param
* @return 生产单板件
*/
PlateDO getPlate(Long id);
List<PlateRespVO> getPlate(PlateDetailReqVO reqVO);
/**
* 获得生产单板件分页
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.service.plate;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
@@ -15,6 +16,8 @@ import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
@@ -103,8 +106,36 @@ public class PlateServiceImpl implements PlateService {
}
@Override
public PlateDO getPlate(Long id) {
return plateMapper.selectById(id);
public List<PlateRespVO> getPlate(PlateDetailReqVO reqVO) {
// 获取到当前登录用户的信息
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
// 查询生产单下的大板。余料板,排单状态的信息
PlateDetailRespVO plateDetailRespVO = plateMapper.selectPlateNumList(reqVO);
plateDetailRespVO.setCompanyId(loginUser.getId());
// PlateRespVO plateRespVO = BeanUtil.toBean(plateDetailRespVO, PlateRespVO.class);
// 查询生产单下的板材详细信息
List<PlateRespVO> plateRespVOS = orderItemMapper.selectPlateList(reqVO);
// List<PlateRespVO> plateRespVOS2 = plateRespVOS
// .stream()
// .map(item -> BeanUtil.toBean(plateDetailRespVO, PlateRespVO.class))
// .collect(Collectors.toList());
// 将大板等信息循环插入
for (PlateRespVO respVO : plateRespVOS) {
respVO.setCompanyId(plateDetailRespVO.getCompanyId());
respVO.setPlanStatus(plateDetailRespVO.getPlanStatus());
respVO.setBigPlateNum(plateDetailRespVO.getBigPlateNum());
respVO.setRemainPlateNum(plateDetailRespVO.getRemainPlateNum());
}
return plateRespVOS;
}
@Override
@@ -198,6 +229,14 @@ public class PlateServiceImpl implements PlateService {
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
//
// // 使用Stream API将 Collection<Long> 转换成 Collection<String>
// Collection<String> stringPlateIds = plateIds.stream()
// .map(String::valueOf) // 将Long类型的元素转换成String类型
// .collect(Collectors.toList()); // 收集到一个新的List中
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -14,25 +15,32 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class HoleDetail {
private String holeName;// 孔名称,用于类型相同的孔,进行分组区分,一组的孔名称相同
@Schema(description = "孔名称,用于类型相同的孔,进行分组区分,一组的孔名称相同")
private String holeName;
private Integer faceType; // 打孔面(0正面, 1反面, 2侧面)
private Integer holeType;// 孔类型(0大孔, 10小孔, 20木削, 21木削大孔, 30层板钉, 40通孔, 50连接杆, -10造型孔)
@Schema(description = "打孔面(0正面, 1反面, 2侧面)")
private Integer faceType;
@Schema(description = "孔类型(0大孔, 10小孔, 20木削, 21木削大孔, 30层板钉, 40通孔, 50连接杆, -10造型孔)")
private Integer holeType;
// 孔的起点坐标
@Schema(description = "孔的起点坐标")
private Double startX;
private Double startY;
private Double startZ;
// 打孔的半径
private Double radius; //孔半径
// 孔的终点坐标
@Schema(description = " 打孔的半径-孔半径")
private Double radius;
@Schema(description = "孔的终点坐标")
private Double endX;
private Double endY;
private Double endZ;
private Double depth; // 深度
@Schema(description = "深度")
private Double depth;
}
@@ -1,6 +1,7 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import com.cf.imes.module.executor.controller.admin.plan.dto.Point;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -19,6 +20,9 @@ import java.util.List;
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class IContourData {
private List<Point> pts; //点集(二维向量(x,y))
private Double[] buls; //凸度(0直线段 >0逆时针方向 <0顺时针方向)
@Schema(description = "点集(二维向量(x,y))")
private List<Point> pts; //
@Schema(description = "凸度(0直线段 >0逆时针方向 <0顺时针方向)")
private Double[] buls; //
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -18,16 +19,24 @@ import java.util.List;
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class IOriginModelingData {
private float knifeRadius; // 刀半径
@Schema(description = "刀半径")
private float knifeRadius;
private float thickness;// 厚度
private Integer dir;// 方向
@Schema(description = "厚度")
private float thickness;
@Schema(description = "方向")
private Integer dir;
private IContourData outline; // 轮廓,造型最外围的轮廓数据
private List<IContourData> holes; //孔轮廓
@Schema(description = "轮廓,造型最外围的轮廓数据")
private IContourData outline;
@Schema(description = "孔轮廓")
private List<IContourData> holes;
private float addLen; // 槽加长
private float addWidth; // 槽加宽
private float addDepth; // 槽加深
@Schema(description = "槽加长")
private float addLen;
@Schema(description = "槽加宽")
private float addWidth;
@Schema(description = "槽加深")
private float addDepth;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -15,18 +16,28 @@ import java.util.List;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "管理后台 - 造型信息")
public class ModelDetail {
private Integer faceType; //使用字典进行解析 造型排版面 0正面, 1反面, 2侧面
@Schema(description = "使用字典进行解析 造型排版面 0正面, 1反面, 2侧面")
private Integer faceType;
private Double depth; //造型深度
@Schema(description = "造型深度")
private Double depth;
private String knifeName; //造像使用刀具名称
private Double knifeRadius; //刀半径
@Schema(description = "造像使用刀具名称")
private String knifeName;
@Schema(description = "刀半径")
private Double knifeRadius;
private IOriginModelingData originModeling;//造型数据
private List<PointList> pointList; //点列表
private List<OffSetList> offSetList; //偏移量列表 //模块偏移数据
@Schema(description = "造型数据")
private IOriginModelingData originModeling;
@Schema(description = "点列表")
private List<PointList> pointList;
@Schema(description = "偏移量列表-模块偏移数据")
private List<OffSetList> offSetList;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -19,13 +20,19 @@ import lombok.experimental.Accessors;
public class OffSetList {
// 刀路的偏移值
private Double value; // 刀路的偏倚值
private Double depth;//下刀的深度
private Double angle;//角度
@Schema(description = "刀路的偏倚值")
private Double value;
@Schema(description = "下刀的深度")
private Double depth;
@Schema(description = "角度")
private Double angle;
// 二维刀路的属性
private String name; //刀的名称
private Double radius;//刀的半径
@Schema(description = "二维刀路的属性-刀的名称")
private String name;
@Schema(description = "二维刀路的属性-刀的半径")
private Double radius;
private String faceType;// 面向类型(0正面, 1反面, 2侧面)
@Schema(description = "面向类型(0正面, 1反面, 2侧面)")
private String faceType;
}
@@ -89,6 +89,7 @@ public class PlateDetail{
private Boolean has3DModel; // 是否有三维刀路
// 轮廓数据、造型数据
private List<PointDetail> pointDetail ; //点明细,表示小板外围轮廓的几个转折点(不含封边)
private List<PointDetail> rawPointDetail ; //原始点明细(含封边)
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -17,10 +18,13 @@ import lombok.experimental.Accessors;
public class PointDetail {
// 点的位置信息
@Schema(description = "点的位置信息")
private Double pointX;
private Double pointY;
private Double curve;//曲线
@Schema(description = "曲线-凸度")
private Double curve;
// 点的封边尺寸
private Double sealSize;//封边尺寸,封边的厚度,长同边长
@Schema(description = "点的封边尺寸,封边尺寸,封边的厚度,长同边长")
private Double sealSize;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -16,16 +17,21 @@ import lombok.experimental.Accessors;
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class PointList {
private Integer lineId;//纹路Id
private Integer pointId;//点Id
@Schema(description = "纹路Id")
private Integer lineId;
@Schema(description = "点Id")
private Integer pointId;
// 点的位置信息
//
@Schema(description = "点的位置信息")
private Double pointX;
private Double pointY;
private Double pointZ;
private Double radius;
private Double curve; // 曲线
private Double depth; //曲线深度
@Schema(description = "曲线")
private Double curve;
@Schema(description = "曲线深度")
private Double depth;
}
@@ -42,4 +42,61 @@
RIGHT JOIN `order_parts` p ON i.parts_id = p.id
WHERE i.order_id = #{orderId}
</select>
<resultMap id="PlateListMap" type="com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO">
<result property="color" column="color"/>
<result property="material" column="material"/>
<result property="bodyName" column="bodyName"/>
<result property="roomName" column="roomName"/>
<result property="itemId" column="itemId"/>
<result property="processGroupId" column="processGroupId"/>
<result property="brand" column="brand"/>
<result property="hasTexture" column="hasTexture"/>
<result property="bigPlateLength" column="bigPlateLength"/>
<result property="bigPlateWidth" column="bigPlateWidth"/>
<result property="spec" column="spec"/>
</resultMap>
<select id="selectPlateList"
resultMap="PlateListMap"
parameterType="com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO">
select distinct
op.*,
og.color as color,
og.material as material,
ob.name as bodyName,
ob.room_name as roomName,
oi.id as itemId,
oi.group_id as processGroupId,
og.brand as brand,
(case
when p.texture = '' then '是'
else '否' end ) as hasTexture,
og.height as bigPlateLength,
og.width as bigPlateWidth,
og.spec as spec
from order_item oi
join order_plate op on oi.plate_id = op.id
join order_body ob on oi.body_id = ob.id
join order_goods og on op.goods_id = og.id
join plate p on og.goods_id = p.id
<where>
<if test="orderId != null and orderId != ''">
AND oi.order_id = #{orderId}
</if>
<if test="bodyId != null and bodyId != ''">
AND oi.body_id = #{bodyId}
</if>
<if test="plateId != null and plateId != ''">
AND oi.plate_id = #{plateId}
</if>
</where>
</select>
</mapper>
@@ -84,4 +84,80 @@
(#{item.orderId},#{item.goodsId})
</foreach>
</select>
<resultMap id="PlateNumListMap" type="com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO">
<result property="bigPlateNum" column="bigPlateNum"/>
<result property="planStatus" column="planStatus"/>
<result property="remainPlateNum" column="remainPlateNum"/>
</resultMap>
<select id="selectPlateNumList"
resultMap="PlateNumListMap"
parameterType="com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO">
select count(distinct og.id) as bigPlateNum,
op.status as planStatus,
orp.count as remainPlateNum
from order_goods og
left join order_plan op on og.order_id = op.order_nos
left join order_remain_plate orp on op.id = orp.plan_id
where order_id = #{orderId}
group by planStatus,remainPlateNum;
</select>
<resultMap id="PlateDetialMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO">
<result property="itemId" column="itemId"/>
<result property="bodyName" column="bodyName"/>
<result property="roomName" column="roomName"/>
<result property="processGroupName" column="processGroupName"/>
</resultMap>
<select id="selectPlateDetialList"
resultMap="PlateDetialMap"
resultType="java.lang.Long">
select distinct op.*,
oi.id as itemId,
ob.name as bodyName,
ob.room_name as roomName,
og.name as processGroupName
from order_plate op
join order_item oi on op.id = oi.plate_id
join order_body ob on oi.body_id = ob.id
left join order_group og on oi.group_id = og.id
where op.order_id = #{orderId}
</select>
<select id="selectPlateDetialListByIds"
resultMap="PlateDetialMap"
resultType="java.lang.Long">
select distinct op.*,
oi.id as itemId,
ob.name as bodyName,
ob.room_name as roomName,
og.name as processGroupName
from order_plate op
join order_item oi on op.id = oi.plate_id
join order_body ob on oi.body_id = ob.id
left join order_group og on oi.group_id = og.id
where op.order_id in
<foreach collection="id" item="orderIds" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
</mapper>