分页打包数据对应修正-新增排单:板材分组接口新增

This commit is contained in:
liuzhaotian
2024-06-29 16:13:03 +08:00
parent d491c6d796
commit 01c02bc6cc
16 changed files with 376 additions and 36 deletions
@@ -112,6 +112,16 @@ public class PlanController {
return success(planService.getOrderPage(pageReqVO));
}
@GetMapping("getNotPlanGoodsListPage")
@Operation(summary = "获取未排单的大板板材分页列表")
@PreAuthorize("@ss.hasPermission('placeorder:query')")
public CommonResult<PageResult<OrderGoodsResp>> getOrderGoodsPage(@Valid OrderPageReqVOCopy pageReqVO) {
return success(planService.getOrderGoodsPage(pageReqVO));
}
@GetMapping("getNotPlanPlateListPage")
@Operation(summary = "获取未排单的板材分页列表")
@PreAuthorize("@ss.hasPermission('executor:plan:query')")
@@ -3,23 +3,26 @@ package com.cf.imes.module.executor.controller.admin.plan.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Builder;
@Data
public class GoodsIds {
@Builder
public class OrderIds {
@Schema(description = "大板ID")
private Long id;
@Schema(description = "生产单ID")
private Long orderId;
@Schema(description = "板材库的大板ID")
@Schema(description = "商品ID")
private Long goodsId;
@Schema(description = "余料板ID")
private Long remainId;
}
@@ -43,9 +43,6 @@ public class OrderSource {
private PlanDO plan;
@Schema(description = "大板ID列表")
private List<GoodsIds> goodsIdList;
@Schema(description = "生产单列表")
private List<OrderDO> orderList;
@@ -0,0 +1,47 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
public class OrderGoodsResp {
@Schema(description = "生产单id")
private List<OrderIds> orderIds;
@Schema(description = "商品id")
private Long goodsId;
@Schema(description = "商品名称")
private String goodsName;
@Schema(description = "商品材质")
private String material;
@Schema(description = "商品颜色")
private String color;
@Schema(description = "")
private BigDecimal width;
@Schema(description = "")
private BigDecimal height;
@Schema(description = "")
private BigDecimal thickness;
@Schema(description = "面积")
private BigDecimal area;
@Schema(description = "板件数量")
private Long num;
@Schema(description = "订单对应的板件的信息")
private List<OrderRespVOCopy> orderList;
}
@@ -43,8 +43,8 @@ public class OrderRespVOCopy {
private int num;
@Schema(description = "平方")
private BigDecimal area = new BigDecimal("0");
// @Schema(description = "商品id")
// private String goodsId;
@Schema(description = "商品id")
private Long goodsId;
// @Schema(description = "商品名称")
// private String goodsName;
@@ -9,6 +9,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import org.apache.ibatis.annotations.Mapper;
@@ -122,4 +123,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
.eq(OrderDO::getId, id)
.eq(OrderDO::getOrganId, organId));
}
List<OrderRespVOCopy> selectOrderListByIds(@Param("orderIds") List<OrderIds> orderIds, @Param("organId")Long organId);
}
@@ -7,11 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.exception.ServiceException;
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.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
@@ -123,4 +125,13 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
List<PlatePage> selectGoodsPage( @Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
IPage<OrderGoodsResp> selectGoodsList(@Param("page") IPage<OrderGoodsResp> page,@Param("pageReqVO") OrderPageReqVOCopy pageReqVO,@Param("organId") Long organId);
List<OrderIds> selectOrderIds(@Param("pageReqVO") OrderPageReqVOCopy pageReqVO,@Param("organId") Long organId);
}
@@ -71,4 +71,7 @@ public interface PlanService {
Boolean setSort(List<SortVO> list);
List<PlateResList> getPlateList(List<Long> planIds);
PageResult<OrderGoodsResp> getOrderGoodsPage(OrderPageReqVOCopy pageReqVO);
}
@@ -15,6 +15,8 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
@@ -115,18 +117,6 @@ public class PlanServiceImpl implements PlanService {
orderMapper.updateBatch(orderDOS);
Long planId = plan.getId();
/* List<Long> orderIds = createReqVO.getOrderIds();
if (CollectionUtil.isNotEmpty(orderIds)) {
ArrayList<PlanOrderDO> planOrderDOS = new ArrayList<>();
for (Long orderId : orderIds) {
planOrderDOS.add(PlanOrderDO.builder()
.planId(planId)
.orderId(orderId)
.build());
}
planOrderMapper.insertBatch(planOrderDOS);
}*/
//List<Long> plateIds = createReqVO.getPlateIds();
Set<Long> itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(itemList,getUserOrganId());
@@ -334,6 +324,7 @@ public class PlanServiceImpl implements PlanService {
.eqIfPresent("a.custom_order_no", pageReqVO.getDefaultId())
.eqIfPresent("a.address", pageReqVO.getConsigneeAddress())
.betweenIfPresent("a.create_time", pageReqVO.getCreateTime())
.eqIfPresent("op.is_special_shaped", pageReqVO.getRectangle() != null ? false: null)
.eqIfPresent("op.is_special_shaped", pageReqVO.getSpecialShaped())
.eqIfPresent("op.is_sculpt", pageReqVO.getSculpt())
.eqIfPresent("op.is_door", pageReqVO.getIsDoor())
@@ -384,9 +375,8 @@ public class PlanServiceImpl implements PlanService {
// 处理后的 filteredRecords 将不包含过滤后的数据为空的 record
orderRespVOCopies.setRecords(filteredRecords);
orderRespVOCopies.setTotal(filteredRecords.size());
orderRespVOCopies.setTotal(orderRespVOCopies.getRecords().size());
return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal());
@@ -551,4 +541,51 @@ public class PlanServiceImpl implements PlanService {
}
@Override
public PageResult<OrderGoodsResp> getOrderGoodsPage(OrderPageReqVOCopy pageReqVO) {
PageDTO<OrderGoodsResp> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
List<Integer> filterTypes = new ArrayList<>();
if (Objects.nonNull(pageReqVO.getHoleThrough()) && pageReqVO.getHoleThrough()) {
filterTypes.add(PlanFilterTypeEnum.DIGGINGTHROUGHTHESHAPE.getType());
}
if (Objects.nonNull(pageReqVO.getBurrow()) && pageReqVO.getBurrow()) {
filterTypes.add(PlanFilterTypeEnum.THEREAREPERFORATEDHOLES.getType());
}
if (Objects.nonNull(pageReqVO.getTwoDimensionalToolPath()) && pageReqVO.getTwoDimensionalToolPath()) {
filterTypes.add(PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType());
}
IPage<OrderGoodsResp> orderGoodsRespIPage = plateMapper.selectGoodsList(page,pageReqVO,getUserOrganId());
if (CollectionUtil.isEmpty(orderGoodsRespIPage.getRecords())) {
return new PageResult<>();
}
List<OrderIds> orderIds = plateMapper.selectOrderIds(pageReqVO,getUserOrganId());
List<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderListByIds(orderIds, getUserOrganId());
for (OrderGoodsResp record : orderGoodsRespIPage.getRecords()) {
record.setOrderIds(orderIds.stream().filter(e -> Objects.equals(e.getGoodsId(), record.getGoodsId())).collect(Collectors.toList()));
record.setOrderList(orderRespVOCopies.stream().filter(e -> Objects.equals(e.getGoodsId(), record.getGoodsId())).collect(Collectors.toList()));
}
return new PageResult<>(orderGoodsRespIPage.getRecords(), orderGoodsRespIPage.getTotal());
}
}
@@ -20,4 +20,52 @@
<select id="selectDynamicSqlString" resultType="java.util.Map">
${sqlStr}
</select>
<select id="selectOrderListByIds"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy"
parameterType="map">
select distinct
o.id as orderId ,
o.custom_order_no as defineId,
o.customer as customer,
o.address as address,
o.order_date as orderDate,
o.delivery_date as deliveryDate,
o.update_time as updateTime,
og.goods_id as goodsId,
count(distinct op.id) as num,
sum(op.area) as area
from orders o
join order_goods og on o.id = og.order_id and o.organ_id = og.organ_id
join order_plate op on o.id = op.order_id and og.id = op.goods_id and o.organ_id = op.organ_id
where
o.id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
(#{orderIds.orderId})
</foreach>
and o.organ_id = #{organId}
and op.deleted = false
and op.is_cancel = 0
and og.goods_id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
(#{orderIds.goodsId})
</foreach>
group by o.id,o.custom_order_no, o.customer,o.address,o.order_date,o.delivery_date, o.update_time,o.status,og.goods_id;
</select>
</mapper>
@@ -365,4 +365,149 @@
</select>
<resultMap id="GoodsList" type="com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp">
<result property="goodsId" column="goodsId"/>
<result property="goodsName" column="goodsName"/>
<result property="width" column="width"/>
<result property="height" column="height"/>
<result property="thickness" column="thickness"/>
<result property="material" column="material"/>
<result property="color" column="color"/>
<result property="num" column="num"/>
</resultMap>
<select id="selectGoodsList"
resultMap="GoodsList"
parameterType="map">
select distinct
c.goods_id as goodsId,
c.width as width,
c.height as height,
c.thickness as thickness,
c.goods_name as goodsName,
c.material as material,
c.color as color,
count(distinct a.id)
from order_plate a
LEFT JOIN order_item oi on a.id = oi.plate_id and a.order_id = oi.order_id and a.organ_id = oi.organ_id
LEFT JOIN `orders` b on a.order_id = b.id and a.organ_id = b.organ_id
LEFT JOIN order_goods c on a.goods_id = c.id and a.organ_id = c.organ_id
left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id
<where>
c.organ_id = #{organId}
and a.is_cancel = 0
and b.status = 2
and a.deleted = false
and opi.item_id is null
<if test="pageReqVO.orderId !=null">
and a.order_id like concat('%', #{pageReqVO.orderId},'%')
</if>
<if test="pageReqVO.defaultId !=null">
and b.custom_order_no = #{pageReqVO.defaultId}
</if>
<if test="pageReqVO.consignee !=null">
and b.customer = #{pageReqVO.consignee}
</if>
<if test="pageReqVO.consigneeAddress !=null">
and b.address = #{pageReqVO.consigneeAddress}
</if>
<if test="pageReqVO.createTime[0] !=null and pageReqVO.createTime[1] !=null ">
and b.create_time between #{pageReqVO.createTime[0]} and #{pageReqVO.createTime[1]}
</if>
<if test="pageReqVO.rectangle !=null and pageReqVO.rectangle= true">
and a.is_special_shaped = false
</if>
<if test="pageReqVO.specialShaped !=null ">
and a.is_special_shaped = #{pageReqVO.specialShaped}
</if>
<if test="pageReqVO.sculpt !=null ">
and a.is_sculpt = #{pageReqVO.sculpt}
</if>
<if test="pageReqVO.isDoor !=null ">
and a.is_door = #{pageReqVO.isDoor}
</if>
<if test="pageReqVO.longMinRang !=null and pageReqVO.longMaxRang !=null">
and a.height between #{pageReqVO.longMinRang} and #{pageReqVO.longMaxRang}
</if>
<if test="pageReqVO.widthMinRang !=null and pageReqVO.widthMaxRang !=null">
and a.width between #{pageReqVO.widthMinRang} and #{pageReqVO.widthMaxRang}
</if>
<if test="pageReqVO.holeThrough !=null or pageReqVO.burrow !=null or pageReqVO.twoDimensionalToolPath !=null">
and a.filter_type in (pageReqVO.holeThrough,pageReqVO.burrow,pageReqVO.twoDimensionalToolPath)
</if>
</where>
group by c.goods_id,c.id,b.id ,c.goods_name,c.width,c.height,c.thickness, c.material, c.color;
</select>
<select id="selectOrderIds" resultType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" parameterType="map">
select distinct
a.order_id as orderId,
c.id as id,
c.goods_id as goodsId
from order_plate a
LEFT JOIN order_item oi on a.id = oi.plate_id and a.order_id = oi.order_id and a.organ_id = oi.organ_id
LEFT JOIN `orders` b on a.order_id = b.id and a.organ_id = b.organ_id
LEFT JOIN order_goods c on a.goods_id = c.id and a.organ_id = c.organ_id
left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id
<where>
c.organ_id = #{organId}
and a.is_cancel = 0
and b.status = 2
and a.deleted = false
and opi.item_id is null
<if test="pageReqVO.orderId !=null">
and a.order_id like concat('%', #{pageReqVO.orderId},'%')
</if>
<if test="pageReqVO.defaultId !=null">
and b.custom_order_no = #{pageReqVO.defaultId}
</if>
<if test="pageReqVO.consignee !=null">
and b.customer = #{pageReqVO.consignee}
</if>
<if test="pageReqVO.consigneeAddress !=null">
and b.address = #{pageReqVO.consigneeAddress}
</if>
<if test="pageReqVO.createTime[0] !=null and pageReqVO.createTime[1] !=null ">
and b.create_time between #{pageReqVO.createTime[0]} and #{pageReqVO.createTime[1]}
</if>
<if test="pageReqVO.rectangle !=null and pageReqVO.rectangle= true">
and a.is_special_shaped = false
</if>
<if test="pageReqVO.specialShaped !=null ">
and a.is_special_shaped = #{pageReqVO.specialShaped}
</if>
<if test="pageReqVO.sculpt !=null ">
and a.is_sculpt = #{pageReqVO.sculpt}
</if>
<if test="pageReqVO.isDoor !=null ">
and a.is_door = #{pageReqVO.isDoor}
</if>
<if test="pageReqVO.longMinRang !=null and pageReqVO.longMaxRang !=null">
and a.height between #{pageReqVO.longMinRang} and #{pageReqVO.longMaxRang}
</if>
<if test="pageReqVO.widthMinRang !=null and pageReqVO.widthMaxRang !=null">
and a.width between #{pageReqVO.widthMinRang} and #{pageReqVO.widthMaxRang}
</if>
<if test="pageReqVO.holeThrough !=null or pageReqVO.burrow !=null or pageReqVO.twoDimensionalToolPath !=null">
and a.filter_type in (pageReqVO.holeThrough,pageReqVO.burrow,pageReqVO.twoDimensionalToolPath)
</if>
</where>
</select>
</mapper>