排单-新数据结构,接口逻辑,参数更改

This commit is contained in:
liuzhaotian
2024-09-02 17:43:07 +08:00
parent 511d6f417b
commit 772cbe9970
28 changed files with 1002 additions and 401 deletions
@@ -19,6 +19,10 @@ public interface ErrorCodeConstants {
ErrorCode PLAN_ERROR = new ErrorCode(1_001_107_004, "{} 排单数据不存在");
ErrorCode PLATE_ERROR = new ErrorCode(1_001_107_005, "当前新增的板材非同一类型的板材,禁止更改");
// ========== 生产单商品 TODO 补充编号 ==========
ErrorCode GOODS_NOT_EXISTS = new ErrorCode(1_001_108_000, "生产单商品不存在");
@@ -41,7 +41,7 @@ public class OptimizeRemainPlate {
@Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED)
private String goodsName;
private String name;
@Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -67,11 +67,6 @@ public class OptimizeRemainPlate {
@Schema(description = "排单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String planCode;
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
@@ -0,0 +1,56 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "优化生产使用的余料板的信息")
public class RemainBoardList {
@Schema(description = "前端生成的ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String id;
@Schema(description = "余料板材质", requiredMode = Schema.RequiredMode.REQUIRED)
private String material;
@Schema(description = "余料板颜色", requiredMode = Schema.RequiredMode.REQUIRED)
private String color;
@Schema(description = "余料板宽", requiredMode = Schema.RequiredMode.REQUIRED)
private Double width;
@Schema(description = "余料板长", requiredMode = Schema.RequiredMode.REQUIRED)
private Double length;
@Schema(description = "余料板厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private Double thickness;
@Schema(description = "余料板数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
@Schema(description = "纹路 纹路(0正纹1可翻转2反纹)")
private Integer texture;
@Schema(description = "是否手动添加余料", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isHandAdd;
}
@@ -1,13 +1,10 @@
package com.cf.imes.module.executor.controller.admin.plan.saveOptimize;
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
@@ -29,18 +26,18 @@ public class SavePlanPlateResultReqVO {
@Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
private List<PlateDetialRespVO> plateList;
@Schema(description = "优化后新增的小板ID")
private List<Long> addPlateIds;
@Schema(description = "优化后删除的小板ID")
private List<Long> deletePlateIds;
// @Schema(description = "优化后的小板列表数据", requiredMode = Schema.RequiredMode.REQUIRED)
// private List<PlateDetialRespVO> plateList;
//
//
//
// @Schema(description = "优化后新增的小板ID")
// private List<Long> addPlateIds;
//
//
//
// @Schema(description = "优化后删除的小板ID")
// private List<Long> deletePlateIds;
@@ -42,7 +42,7 @@ public class OrderPageReqVOCopy extends PageParam {
private Boolean twoDimensionalToolPath;
@Schema(description = "门板")
private Boolean isDoor;
@Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
@Schema(description = "生产单订单日期", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "长 小范围")
@@ -55,7 +55,7 @@ public class OrderPageReqVOCopy extends PageParam {
private BigDecimal widthMaxRang;
// todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决
// todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决
@Schema(description = "商品ID-板材库对应的大板ID")
private Long goodsId;
@@ -56,7 +56,7 @@ public class PlanSaveReqVO {
private LocalDateTime produceTime;
@Schema(description = "生产单id与商品id 列表",requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "生产单id与商品id 列表,修改排单时,只传入新增的那一部分",requiredMode = Schema.RequiredMode.REQUIRED)
private List<Item> itemList;
@@ -39,7 +39,7 @@ public class PlateDetialRespVO {
private Long id;
@Schema(description = "大板实ID", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "大板实ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long goodsId;
@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -57,4 +57,7 @@ public class PlateInfoVO {
@Schema(description = "优化大板片数")
private Long optimizeGoodsCount;
@Schema(description = "排单对应的小板信息")
private List<PlatePage> platePages;
}
@@ -1,14 +1,10 @@
package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 生产单商品 DO
@@ -45,6 +41,10 @@ public class GoodsDO extends BaseDO {
* 商品 ID
*/
private String goodsId;
/**
* 排单 ID
*/
private Long planId;
/**
* 商品名称
*/
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.es.core.dal.ESDocument;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardList;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
@@ -142,6 +143,9 @@ public class OptimizeBoardModelDO extends ESDocument {
@Schema(description = "余料板的数据列表")
private List<RemainBoardList> remainBoardList;
@@ -1,14 +1,15 @@
package com.cf.imes.module.executor.dal.mysql.goods;
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.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.goods.vo.GoodsPageReqVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -50,7 +51,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
List<GoodsReqVO> selectGoodsList(@Param("orderId") Long orderId, @Param("organId") Long organId);
List<GoodsReqVO> selectGoodsListByOrderIds(@Param("goodsIds") List<Long> goodsIds, @Param("organId") Long organId);
List<GoodsReqVO> selectGoodsListByOrderIds(@Param("planId") Long planId, @Param("organId") Long organId);
// 单个修改删除状态
@@ -143,4 +144,42 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
}
default PageResult<GoodsDO> selectTestSQL(OrderPageReqVOCopy pageReqVO) {
return selectPage(pageReqVO, new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, getUserOrganId())
.orderByDesc(GoodsDO::getId));
}
IPage<OrderGoodsResp> selectOrderGoodsList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<GoodsDO> wrapper);
List<PlateInfoVO> selectOrderGoodsPlateList(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
default List<GoodsDO> selectPlanGoodsList(List<Long> goodsIds, Long organId) {
return selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, false)
.inIfPresent(GoodsDO::getId,goodsIds));
}
default List<GoodsDO> selectPlanGoods(Long planId, Long organId) {
return selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getDeleted, false)
.eqIfPresent(GoodsDO::getPlanId,planId)
.select(GoodsDO::getGoodsId,GoodsDO::getId,GoodsDO::getOrderId));
}
List<OrderGoodsResp> selectGoodsListByGoodsId(@Param(Constants.WRAPPER) Wrapper<GoodsDO> wrapper);
IPage<PlateResList> selectPlanGoodsListByPlanId(@Param("page") IPage<PlateResList> page, @Param(Constants.WRAPPER) Wrapper<GoodsDO> wrapper);
}
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
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.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCountProducePeriodRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO;
@@ -242,10 +243,12 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
.likeIfPresent(OrderDO::getCustomOrderNo,pageReqVO.getDefaultId())
.likeIfPresent(OrderDO::getCustomer,pageReqVO.getConsignee())
.likeIfPresent(OrderDO::getAddress,pageReqVO.getConsigneeAddress())
.betweenIfPresent(OrderDO::getCreateTime,pageReqVO.getCreateTime())
.betweenIfPresent(OrderDO::getOrderDate,pageReqVO.getCreateTime())
.select(OrderDO::getId));
}
List<OrderGoodsResp> selectGoodsListByGoodsId(@Param(Constants.WRAPPER) QueryWrapperX<OrderDO> queryWrapperX);
}
@@ -123,4 +123,19 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
return delete(new LambdaQueryWrapperX<OrderBodyDO>()
.in(OrderBodyDO::getOrderId, orderId));
}
List<OrderBodyDO> selectTestSQL(@Param("filed") String filed,@Param("bodyIds") List<Long> bodyIds,@Param("organId") Long organId);
default List<OrderBodyDO> selectOrderBodyList(List<Long> bodyIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderBodyDO>()
.eq(OrderBodyDO::getOrganId, organId)
.eq(OrderBodyDO::getDeleted,false)
.in(OrderBodyDO::getId, bodyIds)
.select(OrderBodyDO::getId,OrderBodyDO::getName,OrderBodyDO::getRoomName));
}
}
@@ -1,19 +1,15 @@
package com.cf.imes.module.executor.dal.mysql.orderGroup;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.api.plan.vo.OrderGroupRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
* 生产单加工组 Mapper
@@ -96,4 +92,8 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
return delete(new LambdaQueryWrapperX<OrderGroupDO>()
.in(OrderGroupDO::getOrderId, orderId));
}
List<OrderGroupRespVO> selectTestSQL(@Param("filed") String filed, @Param("field2") String field2 ,@Param("groupIds") List<Long> groupIds, @Param("organId") Long organId);
}
@@ -7,6 +7,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDe
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPackReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailReqVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailRespVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
@@ -99,8 +100,23 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
default List<OrderItemDO> selectPartsList(List<Long> partIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId,organId)
.inIfPresent(OrderItemDO::getPlateId, partIds)
.inIfPresent(OrderItemDO::getPartsId, partIds)
.select(OrderItemDO::getNum));
}
IPage<OrderRespVOCopy> selectTestNum(@Param("page") IPage page,@Param("organId") Long organId);
default List<OrderItemDO> selectOrderPlateList(List<Long> plateIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId,organId)
.inIfPresent(OrderItemDO::getPlateId, plateIds)
.select(OrderItemDO::getBodyId,OrderItemDO::getRoomId,OrderItemDO::getGroupId,OrderItemDO::getPlateId));
}
}
@@ -6,10 +6,9 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
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.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -43,9 +42,11 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
.betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(PlanDO::getOperator, reqVO.getOperator())
.betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime())
.leftJoin(PlanItemDO.class, PlanItemDO::getPlanId, PlanDO::getId)
.leftJoin(OrderItemDO.class, OrderItemDO::getId, PlanItemDO::getItemId)
.leftJoin(OrderDO.class, OrderDO::getId, OrderItemDO::getOrderId)
// todo 如果后续生产单加入排单状态,这里可以更改只连 orders 表
.leftJoin(GoodsDO.class, GoodsDO::getPlanId, PlanDO::getId)
// .leftJoin(OrderItemDO.class, OrderItemDO::getId, PlanItemDO::getItemId)
.leftJoin(OrderDO.class, OrderDO::getId, GoodsDO::getOrderId)
.like(OrderDO::getCustomer, reqVO.getCustomer())
.orderBy(true, true, PlanDO::getSort)
.orderByDesc(PlanDO::getUpdateTime)
@@ -2,7 +2,6 @@ package com.cf.imes.module.executor.dal.mysql.planitem;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlanOrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO;
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -18,9 +17,6 @@ import java.util.List;
public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
List<PlateInfoVO> selectGoodsList(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
List<PlanOrderRespVO> selectOrderList(@Param("planIds") List<Long> planIds, @Param("organId") Long userOrganId);
}
@@ -175,7 +175,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
List<PlateDetialRespVO> selectPlateListByGoodIds(@Param("goodIds") List<Long> goodIds,@Param("organId") Long organId);
List<PlateInfoVO> selectPlateArea(@Param("orderIdsList") List<OrderIds> orderIdsList,@Param("organId") Long organId);
// List<PlateInfoVO> selectPlateArea(@Param("orderIdsList") List<OrderIds> orderIdsList,@Param("organId") Long organId);
@@ -189,13 +189,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
default List<PlateDO> selectPlateListByGoodsIds(List<Long> deleteIds, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.inIfPresent(PlateDO::getGoodsId, deleteIds)
.select(PlateDO::getPlateNo));
}
List<PlateDetialRespVO> selectPlateListByGoodsIds(@Param("goodsIdList") List<Long> goodsIdList,@Param("organId") Long organId);
// 批量删除
@@ -220,6 +214,18 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
}
default List<PlateDO> selectPlateIds(OrderPageReqVOCopy pageReqVO, Long organId) {
return selectList(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId,organId)
.eq(PlateDO::getDeleted,false)
.eqIfPresent(PlateDO::getIsSpecialShaped,pageReqVO.getSpecialShaped())
.eqIfPresent(PlateDO::getIsDoor,pageReqVO.getIsDoor())
.select(PlateDO::getGoodsId));
}
// List<PlateDO> selectTestSQL(@Param("sql") String sql);
@@ -3,7 +3,10 @@ package com.cf.imes.module.executor.service.optimizeplan;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.CuttingStatusRespVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.SavePlanPlateResultReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.AddRemainReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.GetSourceDataReq;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPageReqVOCopy;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
@@ -11,13 +11,11 @@ import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.enums.RemainTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.util.object.BeanUtils;
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.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
@@ -28,7 +26,7 @@ import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
@@ -37,6 +35,8 @@ import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
@@ -53,7 +53,6 @@ import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -70,7 +69,6 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.INSUFFICIENT_PERMISSIONS;
/**
* @author there
@@ -126,6 +124,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Resource
private ProcessStepItemMapper processStepItemMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Override
public List<PlateOptimize> getPlateListByPlanId(Long planId) {
@@ -474,6 +478,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialList(orderId,getUserOrganId());
for (PlateDetialRespVO plateDetailsRespVO : plateDOS) {
String name = "";
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
@@ -504,7 +509,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 大板数据的尺寸长度
Integer boardSize = goodsDOS.stream().map(m -> m.getId()).collect(Collectors.toList()).size();
Integer boardSize = goodsDOS.stream().map(GoodsReqVO::getId).toList().size();
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByOrderId(orderId, ORDER_REMAIN_PLATE_MODEL, boardSize);
@@ -528,29 +533,41 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if (Objects.isNull(planDO)) {
throw exception(PLAN_NOT_EXISTS);
}
MPJLambdaWrapper<OrderItemDO> wrapper = new MPJLambdaWrapperX<OrderItemDO>()
.select(OrderItemDO::getOrderId,OrderItemDO::getPlateId)
.rightJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId)
.eq(PlanItemDO::getPlanId, planId)
.isNotNull(OrderItemDO::getId);
List<OrderItemDO> orderItemDOS = orderItemMapper.selectJoinList(OrderItemDO.class, wrapper);
List<Long> orderIds = orderItemDOS.stream().map(OrderItemDO::getOrderId).collect(Collectors.toList());
// 查询排单对应的大板信息
List<GoodsReqVO> goodsDOS = goodsMapper.selectGoodsListByOrderIds(planId,getUserOrganId());
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
// List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>().in(GoodsDO::getOrderId, orderIds));
List<Long> orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).toList();
List<Long> plateIds = orderItemDOS.stream().map(OrderItemDO::getPlateId).distinct().toList();
List<Long> ids = goodsDOS.stream().map(GoodsReqVO::getId).toList();
List<Long> goodsIds = plateMapper.selectBatchIds(plateIds).stream().map(PlateDO::getGoodsId).distinct().toList();
List<GoodsReqVO> goodsDOS = goodsMapper.selectGoodsListByOrderIds(goodsIds,getUserOrganId());
List<PlateDetialRespVO> plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
List<PlateDetialRespVO> plateDOS = plateMapper.selectPlateDetialListByIds(plateIds,getUserOrganId());
for (PlateDetialRespVO plateDetailsRespVO : plateDOS) {
List<Long> bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds, getUserOrganId());
List<PlateDetialRespVO> detialRespVOS = new ArrayList<>();
for (OrderBodyDO orderBodyDO : orderBodyDOS) {
detialRespVOS.addAll(plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).peek(m -> {
m.setBodyName(orderBodyDO.getName());
m.setRoomName(orderBodyDO.getRoomName());
}).toList());
}
for (PlateDetialRespVO plateDetailsRespVO : detialRespVOS) {
String name = "";
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
@@ -561,12 +578,26 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
name = name.substring(0, name.length() - 1);
}
plateDetailsRespVO.setProcessGroupName(name);
plateDetailsRespVO.setGoodsId(goodsDOS
.stream()
.filter(f->f.getId().equals(plateDetailsRespVO.getId()))
.map(GoodsReqVO::getGoodsId)
.findAny().orElse(null));
plateDetailsRespVO.setGoodsName(goodsDOS
.stream()
.filter(f->f.getId().equals(plateDetailsRespVO.getId()))
.map(GoodsReqVO::getGoodsName)
.findAny().orElse(null));
}
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
// 造型数据的尺寸长度
Integer orderModelSize = plateDOS.size();
Integer orderModelSize = plateDetialRespVOS.size();
List<OrderModelDO> orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL, orderModelSize);
@@ -592,7 +623,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.orderList(orderDOS)
.plan(planDO)
.goodsList(goodsDOS)
.plateList(plateDOS)
.plateList(plateDetialRespVOS)
.plateModels(orderModelDOS)
.optimizeBoardModelDOS(optimizeBoardModelDOS)
.optimizeRemainPlates(optimizeRemainPlates)
@@ -627,10 +658,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
List<PlateDetialRespVO> plateDetialRespVOS = plateMapper.selectPlateListByGoodIds(ids, getUserOrganId());
List<PlateDetialRespVO> plateDetialRespVOS = plateMapper.selectPlateListByGoodsIds(ids, getUserOrganId());
for (PlateDetialRespVO plateDetailsRespVO : plateDetialRespVOS) {
List<Long> bodyIds = plateDetialRespVOS.stream().map(PlateDetialRespVO::getBodyId).distinct().toList();
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectOrderBodyList(bodyIds, getUserOrganId());
List<PlateDetialRespVO> detialRespVOS = new ArrayList<>();
for (OrderBodyDO orderBodyDO : orderBodyDOS) {
detialRespVOS.addAll(plateDetialRespVOS.stream().filter(f -> f.getBodyId().equals(orderBodyDO.getId())).peek(m -> {
m.setBodyName(orderBodyDO.getName());
m.setRoomName(orderBodyDO.getRoomName());
}).toList());
}
for (PlateDetialRespVO plateDetailsRespVO : detialRespVOS) {
String name = "";
if(!plateDetailsRespVO.getProcessGroupLists().isEmpty()) {
for (ProcessGroupList groupNameList : plateDetailsRespVO.getProcessGroupLists()) {
@@ -684,6 +735,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 先根据排单查找是否有优化数据,如果有,删除
List<Long> planIds = req.getOptimizeBoardModelDOS().stream().map(OptimizeBoardModelDO::getPlanId).toList();
// todo 目前只解决非混单的情况下,
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, planIds.size());
if(!optimizeBoardModelDOS.isEmpty()){
@@ -696,84 +748,75 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
batchSaveBoardModel(req.getOptimizeBoardModelDOS());
// 保存余料板的数据
if (CollectionUtil.isNotEmpty(req.getOptimizeRemainPlates())) {
ArrayList<RemainPlateDO> remainPlateDOS = new ArrayList<>();
for (OptimizeRemainPlate optimizeRemainPlate : req.getOptimizeRemainPlates()) {
remainPlateDOS.add(RemainPlateDO.builder()
.id(optimizeRemainPlate.getId())
.planId(optimizeRemainPlate.getPlanId())
.initPlanId(optimizeRemainPlate.getInitPlanId())
.organId(getUserOrganId())
.status(optimizeRemainPlate.getStatus())
.isCutting(true)
.useType(RemainTypeEnum.PATCHINGPLATE.getType())
.goodsId(optimizeRemainPlate.getGoodsId().toString())
.name(optimizeRemainPlate.getGoodsName())
.material(optimizeRemainPlate.getMaterial())
.color(optimizeRemainPlate.getColor())
.width(optimizeRemainPlate.getWidth())
.length(optimizeRemainPlate.getLength())
.thickness(optimizeRemainPlate.getThickness())
.brand(optimizeRemainPlate.getBrand())
.placeStyle(optimizeRemainPlate.getPlaceStyle())
.store("")
.count(optimizeRemainPlate.getCount())
.remark(optimizeRemainPlate.getRemark())
.outLineJson(optimizeRemainPlate.getOutLineJson())
.build());
}
List<RemainPlateDO> remainPlateDoS = BeanUtils.toBean(req.getOptimizeRemainPlates(), RemainPlateDO.class)
.stream()
.map(m -> m.setUseType(1))
.map(m -> m.setOutLineJson("")).toList();
remainPlateMapper.updateBatch(remainPlateDOS);
List<RemainPlateDO> insertPlateDoS = remainPlateDoS.stream().filter(f -> f.getId() == null).toList();
List<RemainPlateDO> updatePlateDoS = remainPlateDoS.stream().filter(f -> f.getId() != null).toList();
Boolean aBoolean = insertPlateDoS.isEmpty() ? null : remainPlateMapper.insertBatch(insertPlateDoS);
Boolean bBoolean = updatePlateDoS.isEmpty() ? null : remainPlateMapper.updateBatch(updatePlateDoS);
}
// 有新增小板,往数据库新增小板
if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) {
// todo 目前新增小板在界面就已经走接口了,这个逻辑应该用不到了
List<PlateDetialRespVO> addPlates = req.getPlateList().stream()
.filter(m -> req.getAddPlateIds().contains(m.getPlateId()))
.map(m -> m.setPlateId(null))
.collect(Collectors.toList());
// 批量新增小板信息
List<PlateDO> plateDOS = BeanUtils.toBean(addPlates, PlateDO.class);
plateMapper.insertBatch(plateDOS);
// 批量新增生产单明细表信息
ArrayList<OrderItemDO> orderItemDOS = new ArrayList<>();
for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) {
orderItemDOS.add(OrderItemDO.builder()
// .id(plateDetialRespVO.getItemId())
.bodyId(plateDetialRespVO.getBodyId())
.roomId(plateDetialRespVO.getRoomId())
// .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId()))
.orderId(plateDetialRespVO.getOrderId())
.type(1)
.plateId(plateDetialRespVO.getPlateId())
.build());
}
orderItemMapper.insertBatch(orderItemDOS);
}
// 有删除的小板ID,删除小板
if (CollectionUtil.isNotEmpty(req.getDeletePlateIds())) {
// 删除生产单板件表的小板
plateMapper.deleteBatchIds(req.getDeletePlateIds());
// 删除生产单明细表中对应的小板数据
orderItemMapper.deleteByPlateId(req.getDeletePlateIds());
}
// if (CollectionUtil.isNotEmpty(req.getAddPlateIds())) {
//
// List<PlateDetialRespVO> addPlates = req.getPlateList().stream()
// .filter(m -> req.getAddPlateIds().contains(m.getPlateId()))
// .map(m -> m.setPlateId(null))
// .collect(Collectors.toList());
//
// // 批量新增小板信息
// List<PlateDO> plateDOS = BeanUtils.toBean(addPlates, PlateDO.class);
//
// plateMapper.insertBatch(plateDOS);
//
// // 批量新增生产单明细表信息
// ArrayList<OrderItemDO> orderItemDOS = new ArrayList<>();
//
// for (PlateDetialRespVO plateDetialRespVO : req.getPlateList()) {
// orderItemDOS.add(OrderItemDO.builder()
//// .id(plateDetialRespVO.getItemId())
// .bodyId(plateDetialRespVO.getBodyId())
// .roomId(plateDetialRespVO.getRoomId())
//// .groupId(Long.valueOf(plateDetialRespVO.getProcessGroupId()))
// .orderId(plateDetialRespVO.getOrderId())
// .type(1)
// .plateId(plateDetialRespVO.getPlateId())
// .build());
// }
//
//
// orderItemMapper.insertBatch(orderItemDOS);
//
// }
//
// // 有删除的小板ID,删除小板
// if (CollectionUtil.isNotEmpty(req.getDeletePlateIds())) {
//
// // 删除生产单板件表的小板
// plateMapper.deleteBatchIds(req.getDeletePlateIds());
//
// // 删除生产单明细表中对应的小板数据
// orderItemMapper.deleteByPlateId(req.getDeletePlateIds());
//
//
// }
}
@@ -24,7 +24,6 @@ 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.plan.bo.OrderRoomBodyList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.BlockPlaceInfo;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsReqVO;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
@@ -48,9 +47,6 @@ import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.machine.dto.CuttingRespDTO;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -71,7 +67,6 @@ import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparato
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.THE_BOARD_HAS_BEEN_CUT_INTO_PIECES;
/**
* 生产单开料排单 Service 实现类
@@ -130,7 +125,7 @@ public class PlanServiceImpl implements PlanService {
ArrayList<PlanDO> planDOS = new ArrayList<>();
ArrayList<PlanItemDO> planItemDOS = new ArrayList<>();
List<GoodsDO> goodsDOS = new ArrayList<>();
Map<Long,Long> goodsPlanId = new HashMap<>();
@@ -154,18 +149,24 @@ public class PlanServiceImpl implements PlanService {
goodsPlanId.put(entry.getKey(), plan.getId());
Set<Long> itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(items,getUserOrganId());
// Set<Long> itemIds = plateMapper.selectBatchOrderIdsAndGoodsIds(items,getUserOrganId());
if (CollectionUtil.isNotEmpty(itemIds)) {
List<Long> goodsIds = items.stream().map(PlanSaveReqVO.Item::getId).toList();
for (Long itemId : itemIds) {
planItemDOS.add(PlanItemDO.builder()
.planId(plan.getId())
.itemId(itemId)
.build());
}
List<GoodsDO> goodsDOList = goodsMapper.selectPlanGoodsList(goodsIds, getUserOrganId()).stream().map(m -> m.setPlanId(plan.getId())).toList();
}
goodsDOS.addAll(goodsDOList);
// if (CollectionUtil.isNotEmpty(itemIds)) {
//
// for (Long itemId : itemIds) {
// planItemDOS.add(PlanItemDO.builder()
// .planId(plan.getId())
// .itemId(itemId)
// .build());
// }
//
// }
}
@@ -173,7 +174,7 @@ public class PlanServiceImpl implements PlanService {
planMapper.insertBatch(planDOS);
planItemMapper.insertBatch(planItemDOS);
goodsMapper.updateBatch(goodsDOS);
return goodsPlanId;
@@ -207,74 +208,111 @@ public class PlanServiceImpl implements PlanService {
@Transactional(rollbackFor = Exception.class)
public void updatePlan(PlanSaveReqVO updateReqVO) {
// 校验存在
// 校验排单是否存在,是否开料
validatePlanExists(updateReqVO.getId(),updateReqVO.getMachineId());
// 更新
PlanDO plan = BeanUtils.toBean(updateReqVO, PlanDO.class);
// 目前只解决非混单的情况
// 校验新增的板材是否和排单为统一类型的
if(!updateReqVO.getItemList().isEmpty()){
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(plan.getId(), ORDER_REMAIN_PLATE_MODEL, 99);
// todo 目前之解决非混单的情况,混单的情况待解决
Long goodsId = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().get(0);
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
List<Long> goodsNo = optimizeBoardModelDO.getCutedBoardInfo().getCutedBoardList();
// todo 目前只解决非混单的情况
Long goodsIds = BeanUtils.toBean(goodsMapper.selectPlanGoods(plan.getId(), getUserOrganId()).stream().map(GoodsDO::getGoodsId).toList(), Long.class).get(0);
List<Long> plateNo = new ArrayList<>();
// 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态
List<BlockPlaceInfo> outputList = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper();
try {
// 解析 JSON 字符串
JsonNode jsonArray = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo());
// 遍历 JSON 数组并提取所需字段
if (jsonArray.isArray()) {
for (JsonNode jsonNode : jsonArray) {
Long bi = jsonNode.get("bi").asLong();
Long bo = jsonNode.get("bo").asLong();
outputList.add(new BlockPlaceInfo(bi,bo));
}
}
} catch (JsonProcessingException e) {
e.printStackTrace();
if(goodsId.equals(goodsIds)){
throw exception(PLATE_ERROR);
}
for (Long goods : goodsNo) {
plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList());
}
// 修改排单板材,删除排单的优化生产数据
deleteByPlanId(Collections.singletonList(plan.getId()),ORDER_REMAIN_PLATE_MODEL);
if(updateReqVO.getDeleteIds() != null) {
List<Long> ids = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getId).toList();
List<PlateDO> plateDOS = plateMapper.selectPlateListByGoodsIds(updateReqVO.getDeleteIds(), getUserOrganId());
List<GoodsDO> goodsDOS = new ArrayList<>(goodsMapper.selectPlanGoodsList(ids, getUserOrganId())
.stream().map(m -> m.setPlanId(plan.getId())).toList());
List<Long> deletePlateNos = plateDOS.stream().map(PlateDO::getPlateNo).map(Long::valueOf).toList();
if (!updateReqVO.getDeleteIds().isEmpty()){
List<Long> plateNoCopyList = new ArrayList<>(plateNo);
// 使用retainAll方法保留 plateNo 中与 deletePlateNos 相同的元素
plateNoCopyList.retainAll(deletePlateNos);
// 如果 plateNoCopyList 不为空,说明两个List有共同的元素
boolean b = !plateNoCopyList.isEmpty();
if (b) {
throw exception(THE_BOARD_HAS_BEEN_CUT_INTO_PIECES);
}
goodsDOS.addAll(goodsMapper.selectPlanGoodsList(ids, getUserOrganId()).stream().map(m -> m.setPlanId(null)).toList());
}
goodsMapper.updateBatch(goodsDOS);
}
planMapper.updateById(plan);
//
// // todo 目前只解决非混单的情况,混单的情况待解决,这个逻辑目前应该不用,排单是否开料判断了,可保留,万一以后需求更改
// if(!updateReqVO.getItemList().isEmpty()){
//
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(plan.getId(), ORDER_REMAIN_PLATE_MODEL, 10);
//
// OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
//
// List<Long> goodsNo = optimizeBoardModelDO.getCutedBoardInfo().getCutedBoardList();
//
// List<Long> plateNo = new ArrayList<>();
//
// // 创建一个列表存储 BlockPlaceInfo 对象,将优化的小板信息拿出,获取到小板编号,查询生产单,修改生产单的状态
// List<BlockPlaceInfo> outputList = new ArrayList<>();
//
// ObjectMapper mapper = new ObjectMapper();
//
// try {
// // 解析 JSON 字符串
// JsonNode jsonArray = mapper.readTree(optimizeBoardModelDO.getBlockPlaceInfo());
//
// // 遍历 JSON 数组并提取所需字段
// if (jsonArray.isArray()) {
// for (JsonNode jsonNode : jsonArray) {
// Long bi = jsonNode.get("bi").asLong();
// Long bo = jsonNode.get("bo").asLong();
// outputList.add(new BlockPlaceInfo(bi,bo));
// }
// }
// } catch (JsonProcessingException e) {
// e.printStackTrace();
// }
//
// for (Long goods : goodsNo) {
// plateNo.addAll(outputList.stream().filter(f -> f.getBi().equals(goods)).map(BlockPlaceInfo::getBo).distinct().toList());
// }
//
// if(updateReqVO.getDeleteIds() != null) {
//
// List<PlateDO> plateDOS = plateMapper.selectPlateListByGoodsIds(updateReqVO.getDeleteIds(), getUserOrganId());
//
// List<Long> deletePlateNos = plateDOS.stream().map(PlateDO::getPlateNo).map(Long::valueOf).toList();
//
// List<Long> plateNoCopyList = new ArrayList<>(plateNo);
//
// // 使用retainAll方法保留 plateNo 中与 deletePlateNos 相同的元素
// plateNoCopyList.retainAll(deletePlateNos);
//
// // 如果 plateNoCopyList 不为空,说明两个List有共同的元素
// boolean b = !plateNoCopyList.isEmpty();
//
// if (b) {
//
// throw exception(THE_BOARD_HAS_BEEN_CUT_INTO_PIECES);
//
// }
//
// }
// }
}
@Override
@@ -358,7 +396,7 @@ public class PlanServiceImpl implements PlanService {
private void validatePlanExists(Long id,Long machineId) {
private void validatePlanExists(Long id, Long machineId) {
PlanDO planDO = planMapper.selectById(id);
if ( planDO== null) {
throw exception(PLAN_NOT_EXISTS);
@@ -462,31 +500,47 @@ public class PlanServiceImpl implements PlanService {
List<CuttingRespDTO> machines = machineApi.list(machineIds).getCheckedData();
List<PlateInfoVO> plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId());
List<OrderIds> orderIdsList = new ArrayList<>();
plateInfoVOS.forEach(f->
orderIdsList.addAll(f.getOrderIdList()));
// List<PlateInfoVO> plateInfoVOS = planItemMapper.selectGoodsList(planIds,getUserOrganId());
List<PlateInfoVO> plateInfoVOList = plateMapper.selectPlateArea(orderIdsList, getUserOrganId());
// 查询排单对应的大板板材信息
List<PlateInfoVO> plateInfoVOS = goodsMapper.selectOrderGoodsPlateList(planIds, getUserOrganId());
// todo 目前这种情况只解决没有混单的情况,混单情况待解决 (目前解决,数据正确性待测试)
for (PlateInfoVO plateInfoVO : plateInfoVOS) {
plateInfoVO.setArea(plateInfoVOList.stream()
.filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId()))
.map(PlateInfoVO::getArea)
.reduce(BigDecimal.ZERO,BigDecimal::add));
// 查询排单对应的小板数量和小板面积
List<PlateInfoVO> infoVOList = plateInfoVOS.stream().peek(m -> {
// plateInfoVO.setOptimizeGoodsCount(plateInfoVOList.stream().filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())).mapToLong(PlateInfoVO::getOptimizeGoodsCount).sum());
}
m.setCount((int) m.getPlatePages().stream().map(PlatePage::getPlateId).count());
m.setArea(m.getPlatePages().stream().map(PlatePage::getArea).reduce(BigDecimal.ZERO, BigDecimal::add));
m.setPlatePages(null);
}).toList();
// List<OrderIds> orderIdsList = new ArrayList<>();
//
// plateInfoVOS.forEach(f->
// orderIdsList.addAll(f.getOrderIdList()));
//
//
// List<PlateInfoVO> plateInfoVOList = plateMapper.selectPlateArea(orderIdsList, getUserOrganId());
//
//
//
// // todo 目前这种情况只解决没有混单的情况,混单情况待解决 (目前解决,数据正确性待测试)
// for (PlateInfoVO plateInfoVO : plateInfoVOS) {
// plateInfoVO.setArea(plateInfoVOList.stream()
// .filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId()))
// .map(PlateInfoVO::getArea)
// .reduce(BigDecimal.ZERO,BigDecimal::add));
//
//// plateInfoVO.setOptimizeGoodsCount(plateInfoVOList.stream().filter(s->s.getGoodsId().equals(plateInfoVO.getGoodsId())).mapToLong(PlateInfoVO::getOptimizeGoodsCount).sum());
// }
// 根据排单ID查询ES中的优化数据 todo 目前只解决无混单的情况,混单情况待解决
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, plateInfoVOS.size());
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanIds(planIds, ORDER_REMAIN_PLATE_MODEL, infoVOList.size());
// 获取排单对应的生产单的信息
@@ -504,11 +558,11 @@ public class PlanServiceImpl implements PlanService {
.findAny()
.orElse(null));
// 板材信息列表
e.setPlateInfoList(plateInfoVOS.stream()
e.setPlateInfoList(infoVOList.stream()
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
.collect(Collectors.toList()));
// todo 小板总数量目前只解决没有混单的情况时的小板数量,后续待加入混单情况 (目前解决,数据正确性待测试)
e.setPlateNum(plateInfoVOS.stream()
e.setPlateNum(infoVOList.stream()
.filter(f -> Objects.equals(f.getPlanId(), e.getId()))
.mapToLong(PlateInfoVO::getCount)
.sum());
@@ -559,32 +613,44 @@ public class PlanServiceImpl implements PlanService {
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX
.eq("a.organ_id",getUserOrganId())
// .eq("a.status",OrderStatusEnum.SORTED.getStatus())
.eq("a.deleted",false)
.in("a.status",statusList)
.isNull("opi.item_id")
.eq("o.organ_id",getUserOrganId())
.eq("o.deleted",false)
.in("o.status",statusList)
.eq("og.organ_id",getUserOrganId())
.eq("og.plan_id",0)
.eq("og.deleted",false)
// .isNull("opi.item_id")
// todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决
.inIfPresent("op.goods_id",goodsDOS.isEmpty() ? null :goodsDOS.stream().map(GoodsDO::getId).toList())
.inIfPresent("a.id",pageReqVO.getOrderIds())
.likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null)
.inIfPresent("o.id",pageReqVO.getOrderIds())
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null)
.inIfPresent("op.goods_id",pageReqVO.getIds())
.eqIfPresent("a.customer", pageReqVO.getConsignee())
.eqIfPresent("a.custom_order_no", pageReqVO.getDefaultId())
.eqIfPresent("a.address", pageReqVO.getConsigneeAddress())
.betweenIfPresent("a.create_time", pageReqVO.getCreateTime())
.groupBy("a.id", " a.order_date", "a.delivery_date", "a.customer", "a.address", "a.custom_order_no","a.create_time","a.update_time","a.status")
.likeIfPresent("o.customer", pageReqVO.getConsignee())
.likeIfPresent("o.custom_order_no", pageReqVO.getDefaultId())
.likeIfPresent("o.address", pageReqVO.getConsigneeAddress())
.betweenIfPresent("o.order_date", pageReqVO.getCreateTime())
.groupBy("o.id", " o.order_date", "o.delivery_date", "o.customer", "o.address", "o.custom_order_no","o.status")
.having("count(op.id) != 0")
.orderByDesc("a.create_time");
.orderByDesc("o.order_date");
IPage<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderPage(page, queryWrapperX);
// todo 目前修改一半,速度无法再进行特别的优化,需等后面修改表结构再进行优化
IPage<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderPage(page,queryWrapperX);
if (CollectionUtil.isEmpty(orderRespVOCopies.getRecords())) {
return new PageResult<>();
}
// List<OrderRespVOCopy> records = orderRespVOCopies.getRecords();
//
// orderRespVOCopies.setRecords(records.stream().peek(m -> {
//
// m.setNum((int) m.getPlatePages().stream().map(PlatePage::getPlateId).count());
//
// m.setArea(m.getPlatePages().stream().map(PlatePage::getArea).reduce(BigDecimal.ZERO, BigDecimal::add));
// m.setPlatePages(null);
//
// }).toList());
return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal());
@@ -718,16 +784,26 @@ public class PlanServiceImpl implements PlanService {
statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus());
statusList.add(OrderStatusEnum.SORTED.getStatus());
List<Long> orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId())
.stream().map(OrderDO::getId).toList();
// List<Long> orderIds = orderMapper.selectOrderIdsList(pageReqVO, statusList, getUserOrganId())
// .stream().map(OrderDO::getId).distinct().toList();
//
// List<Long> goodsIds = plateMapper.selectPlateIds(pageReqVO, getUserOrganId())
// .stream().map(PlateDO::getGoodsId).distinct().toList();
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX
.eq("oi.organ_id",getUserOrganId())
.eq("o.organ_id",getUserOrganId())
.eq("o.deleted",false)
.in("o.status",statusList)
.eq("og.organ_id",getUserOrganId())
.eq("og.plan_id",0)
.eq("og.deleted",false)
.inIfPresent("oi.order_id", orderIds)
.isNull("opi.item_id")
.isNotNull("og.id")
.inIfPresent("og.order_id", pageReqVO.getOrderIds())
// .inIfPresent("og.id", goodsIds)
// .isNull("opi.item_id")
// .isNotNull("og.id")
// todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决
.eqIfPresent("og.goods_id",pageReqVO.getGoodsId())
@@ -751,44 +827,80 @@ public class PlanServiceImpl implements PlanService {
queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes));
// List<Long> orderIds = orderMapper.selectOrderIds(queryWrapperX);
IPage<OrderGoodsResp> orderGoodsResps = orderMapper.selectOrderIds(page,queryWrapperX);
// if(orderIds.isEmpty()){
// return new PageResult<>();
// }
// IPage<OrderGoodsResp> orderGoodsResps = goodsMapper.selectOrderGoodsList(page, queryWrapperX);
if (CollectionUtil.isEmpty(orderGoodsResps.getRecords())) {
return new PageResult<>();
}
List<OrderGoodsResp> records = orderGoodsResps.getRecords();
System.out.println("哈哈哈哈哈哈1 "+records.size());
List<Long> goodsIdList = records.stream().map(OrderGoodsResp::getGoodsId).toList();
queryWrapperX.in("og.goods_id", goodsIdList);
List<OrderGoodsResp> goodsResp = orderMapper.selectGoodsListByGoodsId(queryWrapperX);
//
// Map<Long, List<OrderGoodsResp>> collect = records.stream().collect(Collectors.groupingBy(OrderGoodsResp::getGoodsId));
// for (OrderGoodsResp orderGoodsResp : goodsResp) {
//
// List<OrderGoodsResp> orderGoodsResps1 = collect.get(orderGoodsResp.getGoodsId());
//
//
// List<OrderIds> orderIdsList = plateMapper.selectOrderIds(orderIds,getUserOrganId());
//
//
// List<Long> goodsList = orderIdsList.stream().map(OrderIds::getGoodsId).distinct().toList();
//
// // 修改排单时进行数据筛选,todo 目前只解决非混单情况
// if(pageReqVO.getGoodsId() != null){
//
// goodsList = goodsList.stream().filter(f->f.equals(pageReqVO.getGoodsId())).toList();
// if (orderGoodsResps1 != null) {
// // 合并 otherObjectList 到 obj1 副本中
// orderGoodsResps1.get().addAll(obj2.getOtherObjectList());
// }
//
// }
for (OrderGoodsResp record : records) {
List<OrderIds> orderIdsList = new ArrayList<>();
List<List<OrderIds>> list = goodsResp.stream().filter(f -> f.getGoodsId().equals(record.getGoodsId())).map(OrderGoodsResp::getOrderIds).toList();
if(!list.isEmpty()){
orderIdsList = list.stream().flatMap(Collection::stream).toList();
}
record.setOrderIds(orderIdsList);
}
orderGoodsResps.setRecords(records);
// for (Map.Entry<Long, List<OrderGoodsResp>> entry : collect.entrySet()) {
//
// IPage<OrderGoodsResp> orderGoodsResps = goodsMapper.selectGoods(page,goodsList, getUserOrganId());
// List<OrderRespVOCopy> orderRespVOCopies = orderMapper.selectOrderListByIds(orderIdsList, getUserOrganId());
// for (OrderGoodsResp record : orderGoodsResps.getRecords()) {
// record.setNum(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId())).
// mapToInt(OrderRespVOCopy::getNum).sum());
// List<List<OrderIds>> list = entry.getValue().stream().map(OrderGoodsResp::getOrderIds).toList();
//
// record.setArea(orderRespVOCopies.stream().filter(e-> Objects.equals(e.getGoodsId(), record.getGoodsId()))
// .map(OrderRespVOCopy::getArea)
// .reduce(BigDecimal.ZERO,BigDecimal::add));
// List<OrderIds> orderds = list.stream().flatMap(Collection::stream).toList();
//
// List<OrderGoodsResp> list1 = records.stream().filter(f -> f.getGoodsId().equals(entry.getKey())).map(m -> m.setOrderIds(orderds)).toList();
//
// orderGoodsResps.setRecords(list1);
//
// record.setOrderIds(orderIdsList.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()));
// }
@@ -859,7 +971,7 @@ public class PlanServiceImpl implements PlanService {
for (Long planId : vo.getPlanIds()) {
validatePlanExists(planId,null);
}
QueryWrapperX<PlateDO> queryWrapperX = new QueryWrapperX<>();
QueryWrapperX<GoodsDO> queryWrapperX = new QueryWrapperX<>();
String filterTypes = "";
if (Objects.nonNull(vo.getHoleThrough()) && vo.getHoleThrough()) {
@@ -872,21 +984,25 @@ public class PlanServiceImpl implements PlanService {
filterTypes += PlanFilterTypeEnum.TWODIMENSIONALCUTTINGPATH.getType().toString();
}
queryWrapperX.in("p.plan_id", vo.getPlanIds())
.eq("a.organ_id",getUserOrganId())
.eqIfPresent("a.is_door", vo.getIsDoor())
.eqIfPresent("a.is_special_shaped", vo.getRectangle() != null ? false: null)
.eqIfPresent("a.is_special_shaped", vo.getSpecialShaped())
.eqIfPresent("a.is_sculpt", vo.getSculpt())
.betweenIfPresent("a.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()})
.betweenIfPresent("a.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()})
.likeIfPresent("a.filter_type", insertSeparator(filterTypes))
.betweenIfPresent("f.delivery_date", new Date[]{vo.getBeginDate(), vo.getEndDate()})
.orderByDesc("a.order_id")
.orderByDesc("a.name");
queryWrapperX.eq("og.organ_id",getUserOrganId())
.in("og.plan_id", vo.getPlanIds())
.eqIfPresent("op.is_door", vo.getIsDoor())
.eqIfPresent("op.is_special_shaped", vo.getRectangle() != null ? false: null)
.eqIfPresent("op.is_special_shaped", vo.getSpecialShaped())
.eqIfPresent("op.is_sculpt", vo.getSculpt())
.betweenIfPresent("op.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()})
.betweenIfPresent("op.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()})
.likeIfPresent("op.filter_type", insertSeparator(filterTypes))
.orderByDesc("op.order_id");
PageDTO<PlateResList> page = new PageDTO<>(vo.getPageNo(), vo.getPageSize());
IPage<PlateResList> pageResult = plateMapper.selectPlateByPlanId(page, queryWrapperX);
// IPage<PlateResList> pageResult = plateMapper.selectPlateByPlanId(page, queryWrapperX);
IPage<PlateResList> pageResult = goodsMapper.selectPlanGoodsListByPlanId(page, queryWrapperX);
Set<Long> bodyIds = pageResult.getRecords().stream().map(PlateResList::getBodyId).collect(Collectors.toSet());
if (CollectionUtil.isNotEmpty(bodyIds)) {
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
for (PlateResList resList : pageResult.getRecords()) {
@@ -900,12 +1016,12 @@ public class PlanServiceImpl implements PlanService {
@Override
public PageResult<OrderRespVO> getOrderByPlanId(PlanOrderPageReqVO pageReqVO) {
MPJLambdaWrapperX<OrderDO> lambdaWrapperX = new MPJLambdaWrapperX<>();
lambdaWrapperX.leftJoin(OrderItemDO.class, OrderItemDO::getOrderId, OrderDO::getId)
.leftJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId)
.eq(PlanItemDO::getOrganId,getUserOrganId())
.eq(PlanItemDO::getPlanId, pageReqVO.getPlanId())
lambdaWrapperX.leftJoin(GoodsDO.class, GoodsDO::getOrderId, OrderDO::getId)
.eq(GoodsDO::getOrganId,getUserOrganId())
.eq(GoodsDO::getPlanId, pageReqVO.getPlanId())
.distinct();
PageResult<OrderDO> pageResult = orderMapper.selectJoinPage(pageReqVO, OrderDO.class, lambdaWrapperX);
return BeanUtils.toBean(pageResult, OrderRespVO.class);
}
@@ -32,11 +32,7 @@
orp.id as remainId
from order_goods og
left join order_remain_plate orp on og.id = orp.goods_id and og.organ_id = orp.organ_id
where og.organ_id =#{organId} and og.deleted = false and og.id in
<foreach item="id" collection="goodsIds" open="(" separator="," close=")">
#{id}
</foreach>
where og.organ_id =#{organId} and og.deleted = false and og.plan_id = #{planId}
</select>
@@ -134,4 +130,171 @@
</select>
<resultMap id="OrderGoodsMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp">
<result property="goodsName" column="goodsName"/>
<result property="material" column="material"/>
<result property="width" column="width"/>
<result property="height" column="height"/>
<result property="thickness" column="thickness"/>
<result property="texture" column="texture"/>
<result property="color" column="color"/>
<result property="goodsId" column="goodsId"/>
<collection property="orderIds" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" resultMap="OrderIdMap"/>
</resultMap>
<select id="selectOrderGoodsList" resultMap="OrderGoodsMap">
select distinct
og.goods_name as goodsName,
og.material as material,
og.color as color,
og.width as width,
og.height as height,
og.thickness as thickness,
og.texture as texture,
og.goods_id as goodsId
-- og.order_id as orderId,
-- og.id as id
from orders o
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
${ew.customSqlSegment}
</select>
<resultMap id="GoodsListMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO">
<result property="planId" column="planId"/>
<result property="material" column="material"/>
<result property="width" column="width"/>
<result property="height" column="height"/>
<result property="thickness" column="thickness"/>
<result property="color" column="color"/>
<result property="count" column="plateNum"/>
<result property="area" column="area"/>
<result property="goodsId" column="goodsId"/>
<collection property="orderIdList" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" resultMap="OrderIdMap"/>
<collection property="platePages" ofType="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage" resultMap="PlatePageMap"/>
</resultMap>
<resultMap id="OrderIdMap" type="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds">
<result property="id" column="id"/>
<result property="orderId" column="orderId"/>
<result property="goodsId" column="goodsId"/>
</resultMap>
<resultMap id="PlatePageMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage">
<result property="plateId" column="plateId"/>
<result property="area" column="plateArea"/>
</resultMap>
<select id="selectOrderGoodsPlateList" resultMap="GoodsListMap" parameterType="java.lang.Long">
select distinct
og.plan_id as planId,
og.material as material,
og.width as width,
og.height as height,
og.thickness as thickness ,
og.color as color,
og.goods_id as goodsId,
og.order_id as orderId,
og.id as id,
op.id as plateId,
op.area as plateArea
from order_goods og
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
where og.organ_id = #{organId}
and og.plan_id in
<foreach collection="planIds" item="ids" open="(" close=")" separator=",">
#{ids}
</foreach>
</select>
<select id="selectGoodsListByGoodsId" resultMap="OrderGoodsMap">
select distinct
og.goods_id as goodsId,
og.order_id as orderId,
og.id as id
from orders o
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
${ew.customSqlSegment}
</select>
<select id="selectPlanGoodsListByPlanId"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList">
select distinct op.id as plateId,
op.order_id,
op.plate_no ,
op.name as plateName,
op.is_special_shaped,
op.is_sculpt,
op.area,
op.seal_left,
op.seal_right,
op.seal_up,
op.seal_down,
og.material,
og.color,
op.width,
op.height,
op.thickness,
oi.room_id,
oi.body_id
from order_goods og
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
left join order_item oi on op.organ_id = oi.organ_id and op.id = oi.plate_id
${ew.customSqlSegment}
</select>
</mapper>
@@ -2,13 +2,54 @@
<!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.OrderRespVOCopy">
select distinct a.id as orderId, a.order_date, a.delivery_date, a.customer, a.address, a.custom_order_no as defineId,a.status,
count(op.id) as num, sum(op.area) as area,a.update_time,a.create_time
from `orders` a
left join order_item oi on a.id = oi.order_id and a.organ_id = oi.organ_id
left join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id
left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id
<resultMap id="OrderPageMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy">
<result property="orderId" column="orderId"/>
<result property="status" column="status"/>
<result property="defineId" column="defineId"/>
<result property="customer" column="customer"/>
<result property="address" column="address"/>
<result property="deliveryDate" column="deliveryDate"/>
<result property="orderDate" column="orderDate"/>
<result property="num" column="num"/>
<result property="area" column="area"/>
<!-- <collection property="platePages" ofType="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage" resultMap="PlatePageMap"/>-->
</resultMap>
<resultMap id="PlatePageMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage">
<result property="plateId" column="plateId"/>
<result property="area" column="area"/>
</resultMap>
<select id="selectOrderPage" resultMap="OrderPageMap">
select distinct
o.id as orderId,
o.order_date as orderDate,
o.delivery_date as deliveryDate,
o.customer as customer,
o.address as address,
o.custom_order_no as defineId,
o.status as status,
count( op.id) as num ,
sum(op.area) as area
from orders o
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
${ew.customSqlSegment}
@@ -271,10 +312,10 @@
og.width,
og.height,
og.brand
from order_item oi
left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id
left join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id
left join order_goods og on op.goods_id = og.id and op.organ_id = og.organ_id
from orders o
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
${ew.customSqlSegment}
@@ -282,4 +323,22 @@
</select>
<select id="selectGoodsListByGoodsId" resultMap="OrderGoodsMap">
select distinct
og.goods_id as goodsId,
og.order_id as orderId,
og.id as id
from orders o
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted
${ew.customSqlSegment}
</select>
</mapper>
@@ -55,5 +55,20 @@
</select>
<select id="selectTestSQL" resultType="java.util.Map">
select distinct ${filed} from order_body
where organ_id = #{organId}
and deleted = false
and id in
<foreach item="bodyIds" collection="bodyIds" open="(" separator="," close=")">
#{bodyIds}
</foreach>
</select>
</mapper>
@@ -11,4 +11,19 @@
from `order_group` as gp
where gp.order_id = #{orderId} and gp.organ_id = #{organId} and gp.deleted = 0
</select>
<select id="selectTestSQL" resultType="java.util.Map">
select ${filed} from order_group
where id in
<foreach item="groupIds" collection="groupIds" open="(" separator="," close=")">
#{groupIds}
</foreach>
and organ_id = #{organId}
and deleted = false
${field2}
</select>
</mapper>
@@ -258,4 +258,35 @@
</select>
<resultMap id="TestMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy">
<result property="orderId" column="orderId"/>
<!-- <collection property="platePages" ofType="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage" resultMap="Test2Map"/>-->
</resultMap>
<resultMap id="Test2Map" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage">
<result property="plateId" column="plateId"/>
</resultMap>
<select id="selectTestNum"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy">
select distinct
oi.order_id as orderId
from order_item oi
left join order_plan_item opi on oi.id = opi.item_id and oi.organ_id = opi.organ_id
where oi.organ_id = #{organId} and opi.item_id is null and oi.plate_id !=0;
</select>
</mapper>
@@ -4,62 +4,6 @@
<resultMap id="GoodsListMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO">
<result property="planId" column="planId"/>
<result property="material" column="material"/>
<result property="width" column="width"/>
<result property="height" column="height"/>
<result property="thickness" column="thickness"/>
<result property="color" column="color"/>
<result property="count" column="plateNum"/>
<result property="area" column="area"/>
<result property="goodsId" column="goodsId"/>
<collection property="orderIdList" ofType="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds" resultMap="OrderIdMap"/>
</resultMap>
<resultMap id="OrderIdMap" type="com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds">
<result property="id" column="id"/>
<result property="orderId" column="orderId"/>
<result property="goodsId" column="goodsId"/>
</resultMap>
<select id="selectGoodsList" resultMap="GoodsListMap" parameterType="java.lang.Long">
select distinct
opi.plan_id as planId,
og.material as material,
og.width as width,
og.height as height,
og.thickness as thickness ,
og.color as color,
og.goods_id as goodsId,
og.order_id as orderId,
og.id as id,
count(distinct op.id) as plateNum
from order_plan_item opi
left join order_item oi on opi.item_id = oi.id and opi.organ_id = oi.organ_id
left join order_plate op on oi.plate_id = op.id and oi.organ_id = op.organ_id
left join order_goods og on op.goods_id = og.id and op.organ_id = og.organ_id
where opi.organ_id = #{organId}
and
opi.plan_id in
<foreach collection="planIds" item="ids" open="(" close=")" separator=",">
#{ids}
</foreach>
and og.goods_id !=0
group by planId,material,width,height,thickness,color,goodsId,orderId,id;
</select>
<select id="selectOrderList"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlanOrderRespVO">
@@ -67,15 +11,24 @@
select distinct
opi.plan_id as planId,
o.*
o.id,
og.plan_id,
o.order_date,
o.delivery_date,
o.custom_order_no,
o.customer,
o.address,
o.phone_number,
o.salesman,
o.splitter,
o.remark
from orders o
from order_plan_item opi
join order_item oi on opi.item_id = oi.id and opi.organ_id = oi.organ_id
join orders o on oi.order_id = o.id
where opi.organ_id = #{organId}
and
opi.plan_id in
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
where og.organ_id = #{organId}
and og.plan_id in
<foreach collection="planIds" item="ids" open="(" close=")" separator=",">
#{ids}
</foreach>
@@ -774,34 +774,34 @@
</select>
<select id="selectPlateArea"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO">
<!-- <select id="selectPlateArea"-->
<!-- resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlateInfoVO">-->
select
og.goods_id as goodsId,
-- count(distinct og.id) as optimizeGoodsCount,
sum(op.area) as area
<!-- select-->
<!-- og.goods_id as goodsId,-->
<!--&#45;&#45; count(distinct og.id) as optimizeGoodsCount,-->
<!-- sum(op.area) as area-->
from order_plate op
left join order_goods og on op.goods_id = og.id
<!-- from order_plate op-->
<!-- left join order_goods og on op.goods_id = og.id-->
where og.organ_id = #{organId} and og.goods_id in
<!-- where og.organ_id = #{organId} and og.goods_id in-->
<foreach collection="orderIdsList" item="orderIdsList" open="(" close=")" separator=",">
(#{orderIdsList.goodsId})
</foreach>
<!-- <foreach collection="orderIdsList" item="orderIdsList" open="(" close=")" separator=",">-->
<!-- (#{orderIdsList.goodsId})-->
<!-- </foreach>-->
and og.order_id in
<!-- and og.order_id in-->
<foreach collection="orderIdsList" item="orderIdsList" open="(" close=")" separator=",">
(#{orderIdsList.orderId})
</foreach>
<!-- <foreach collection="orderIdsList" item="orderIdsList" open="(" close=")" separator=",">-->
<!-- (#{orderIdsList.orderId})-->
<!-- </foreach>-->
group by goodsId;
<!-- group by goodsId;-->
</select>
<!-- </select>-->
<select id="selectTestSQL" resultType="java.util.Map">
@@ -818,4 +818,72 @@
</select>
<select id="selectPlateListByGoodsIds"
resultMap="PlateDetialMap">
select distinct
oi.body_id as bodyId,
oi.group_id as groupId,
oi.room_id as roomId,
og.name as groupName,
op.id as plateId,
op.order_id as orderId,
op.name as name,
op.plate_no as plateNo,
op.type as type,
op.goods_id as goodsId,
op.width as width,
op.height as height,
op.thickness as thickness,
op.split_width as splitWidth,
op.split_height as splitHeight,
op.split_thickness as splitThickness,
op.seal_left as sealLeft,
op.seal_right as sealRight,
op.seal_up as sealUp,
op.seal_down as sealDown,
op.area as area,
op.texture as texture,
op.hole_face as holeFace,
op.hole_arrange as holeArrange,
op.unregular_point_count as unregularPointCount,
op.front_hole_count as frontHoleCount,
op.back_hole_count as backHoleCount,
op.side_hole_count as sideHoleCount,
op.front_model_count as frontModelCount,
op.back_model_count as backModelCount,
op.is_door as isDoor,
op.open_door_type as openDoorType,
op.offset_x as offsetX,
op.offset_y as offsetY,
op.is_arc_across as isArcAcross,
op.module_type_id as moduleTypeId,
op.is_special_shaped as isSpecialShaped,
op.is_sculpt as isSculpt,
op.is_row_hole as hasHole,
op.remark as remark,
op.filter_type as filterType,
op.is_cancel as isCancel,
op.is_row_hole as hasHole
from order_plate op
left join order_item oi on op.organ_id = oi.organ_id and op.id = oi.plate_id
left join order_group og on oi.organ_id = og.organ_id and oi.group_id = og.id
where op.organ_id = #{organId} and op.deleted = false and op.goods_id in
<foreach collection="goodsIdList" item="goodsIdList" open="(" close=")" separator=",">
#{goodsIdList}
</foreach>
</select>
</mapper>