1、混单创建排单提示小板已排单问题修复,创建混单order_plan真实使用大板商品赋值规则修改;2、优化真实大板查询修复;3、订单详情-配件/组件详情列表不显示修复;

This commit is contained in:
gaoqr
2025-07-02 17:05:34 +08:00
parent 13ba0f767a
commit d8d55652ee
7 changed files with 83 additions and 64 deletions
@@ -7,6 +7,7 @@ import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; 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.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanPlateStatisticsRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanPlateStatisticsRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsAreaRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsAreaRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO;
@@ -123,6 +124,14 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
List<PlanDO> selectIsTopDownPlan(@Param("updateTime") LocalDateTime updateTime,@Param("organId") Long organId); List<PlanDO> selectIsTopDownPlan(@Param("updateTime") LocalDateTime updateTime,@Param("organId") Long organId);
/**
* 查询排单下的材质、颜色、品牌、厚度分组
* @param planId
* @param organId
* @return
*/
List<OrderGoodsResp> selectPlanGoodsList(@Param("planId") Long planId, @Param("organId") Long organId);
/** /**
* 统计涉及移除小板的排单下还存在的排单数量 * 统计涉及移除小板的排单下还存在的排单数量
* *
@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.OrderPlateCutStatusEnum; import com.cf.imes.framework.common.enums.OrderPlateCutStatusEnum;
import com.cf.imes.framework.common.enums.OrderStatusEnum; import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum; import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.enums.PlanTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils; import com.cf.imes.framework.common.util.Assert.AssertUtils;
@@ -51,6 +52,7 @@ import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateModel; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderPlateModel;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; 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.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
@@ -58,6 +60,7 @@ import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
import com.cf.imes.module.executor.dal.mysql.planItem.PlanItemMapper; import com.cf.imes.module.executor.dal.mysql.planItem.PlanItemMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper; import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
import com.cf.imes.module.executor.enums.ErrorCodeConstants; import com.cf.imes.module.executor.enums.ErrorCodeConstants;
@@ -145,6 +148,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Resource @Resource
private PlanItemMapper planItemMapper; private PlanItemMapper planItemMapper;
@Resource
private PlateGoodMapper plateGoodMapper;
private static final String FIELD_ORDER_ID = "orderId"; private static final String FIELD_ORDER_ID = "orderId";
private static final String FIELD_PLATE_ID = "plateId"; private static final String FIELD_PLATE_ID = "plateId";
private static final String FIELD_PLAN_ID = "planId"; private static final String FIELD_PLAN_ID = "planId";
@@ -398,6 +404,15 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OptimizeRemainPlate> optimizeRemainPlates = BeanUtils.toBean(remainPlateDOS, OptimizeRemainPlate.class); List<OptimizeRemainPlate> optimizeRemainPlates = BeanUtils.toBean(remainPlateDOS, OptimizeRemainPlate.class);
// 查询混单实际请求大板信息
PlanActualGoodsModelDO planActualGoodsModelDO = null;
if (planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())) {
List<PlateGoodDO> plateGoodDOS = plateGoodMapper.selectGoodsByGoodsId(List.of(planDO.getGoodsId()), getUserOrganId());
if (CollUtil.isNotEmpty(plateGoodDOS)) {
planActualGoodsModelDO = BeanUtils.toBean(plateGoodDOS.get(0), PlanActualGoodsModelDO.class);
planActualGoodsModelDO.setPlanId(planId);
}
}
// 查询生产单对应的配件信息 // 查询生产单对应的配件信息
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId()); List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
@@ -428,7 +443,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
.goodsList(goodsDOS) .goodsList(goodsDOS)
.plateList(plateDetailRespVOS) .plateList(plateDetailRespVOS)
.plateModels(orderModelDOS) .plateModels(orderModelDOS)
.planActualGoodsModelDO(BeanUtil.copyProperties(goodsDOS.get(0), PlanActualGoodsModelDO.class)) .planActualGoodsModelDO(planActualGoodsModelDO)
.optimizeRemainPlates(optimizeRemainPlates) .optimizeRemainPlates(optimizeRemainPlates)
.orderPartsRespVOS(printOrderPartsRespVOS) .orderPartsRespVOS(printOrderPartsRespVOS)
.orderPartsRemarks(orderPartsRemarks) .orderPartsRemarks(orderPartsRemarks)
@@ -56,7 +56,6 @@ import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi; import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
import com.cf.imes.module.system.api.systemconfig.dto.SystemConfigRespDTO; import com.cf.imes.module.system.api.systemconfig.dto.SystemConfigRespDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -69,7 +68,6 @@ import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR;
@@ -145,6 +143,8 @@ public class PlanServiceImpl implements PlanService {
private static final String FIELD_ORDER_DATE = "o.order_date"; private static final String FIELD_ORDER_DATE = "o.order_date";
private static final String FIELD_OP_ID = "op.id"; private static final String FIELD_OP_ID = "op.id";
private static final String FIELD_OP_DELETED = "op.deleted"; private static final String FIELD_OP_DELETED = "op.deleted";
private static final String ES_FIELD_NEWVALUE = "new_value";
private static final String ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG = "排单加工方案状态更新异常:";
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -340,19 +340,16 @@ public class PlanServiceImpl implements PlanService {
.set(PlateDO::getPlanId, 0L) .set(PlateDO::getPlanId, 0L)
.set(PlateDO::getIsOptimized, false)); .set(PlateDO::getIsOptimized, false));
// 排单对应的商品id
String goodsId = planDO.getGoodsId();
String orderNos = Optional.ofNullable(planDO.getOrderNos()).orElse("[]"); String orderNos = Optional.ofNullable(planDO.getOrderNos()).orElse("[]");
// 排单下的订单号列表 // 排单下的订单号列表
Set<Long> planOrderIds = JSON.parseArray(orderNos).toJavaList(Long.class).stream().collect(Collectors.toSet()); Set<Long> planOrderIds = JSON.parseArray(orderNos).toJavaList(Long.class).stream().collect(Collectors.toSet());
orderIds.addAll(planOrderIds); orderIds.addAll(planOrderIds);
if (CollUtil.isNotEmpty(planOrderIds) && StringUtils.isNotEmpty(goodsId)) { if (CollUtil.isNotEmpty(planOrderIds)) {
// 查询排单下所有订单材质order_goods // 查询排单下所有订单材质order_goods
List<GoodsDO> goodsDO = goodsMapper.selectList(new LambdaQueryWrapper<GoodsDO>() List<GoodsDO> goodsDO = goodsMapper.selectList(new LambdaQueryWrapper<GoodsDO>()
.in(GoodsDO::getOrderId, planOrderIds) .in(GoodsDO::getOrderId, planOrderIds)
.eq(GoodsDO::getGoodsId, goodsId)
.eq(GoodsDO::getOrganId, getUserOrganId()) .eq(GoodsDO::getOrganId, getUserOrganId())
.eq(GoodsDO::getDeleted, false)); .eq(GoodsDO::getDeleted, false));
@@ -1334,7 +1331,7 @@ public class PlanServiceImpl implements PlanService {
)) ))
.script(s -> s.inline(i -> i .script(s -> s.inline(i -> i
.source("ctx._source.isNewInsertPlate = params.new_value") .source("ctx._source.isNewInsertPlate = params.new_value")
.params("new_value", JsonData.of(Boolean.TRUE)) .params(ES_FIELD_NEWVALUE, JsonData.of(Boolean.TRUE))
)); ));
UpdateByQueryRequest request = builder.build(); UpdateByQueryRequest request = builder.build();
@@ -1461,7 +1458,7 @@ public class PlanServiceImpl implements PlanService {
for (SavePlanPlateList.GoodsItemList item : items) { for (SavePlanPlateList.GoodsItemList item : items) {
// 将 material 和 thickness 组合成键 // 将 material 和 thickness 组合成键
String key = item.getMaterial() + "|" + item.getThickness()+ "|" + item.getGoodsId(); String key = item.getMaterial() + "|" + item.getThickness();
// 如果键不存在,初始化一个新的列表 // 如果键不存在,初始化一个新的列表
groupedItems.putIfAbsent(key, new ArrayList<>()); groupedItems.putIfAbsent(key, new ArrayList<>());
@@ -1478,7 +1475,7 @@ public class PlanServiceImpl implements PlanService {
for (SavePlanPlateList.GoodsItemList item : items) { for (SavePlanPlateList.GoodsItemList item : items) {
// 将 material 和 thickness 组合成键 // 将 material 和 thickness 组合成键
String key = item.getThickness().toString()+ "|" + item.getGoodsId(); String key = item.getThickness().toString();
// 如果键不存在,初始化一个新的列表 // 如果键不存在,初始化一个新的列表
groupedItems.putIfAbsent(key, new ArrayList<>()); groupedItems.putIfAbsent(key, new ArrayList<>());
@@ -1541,7 +1538,7 @@ public class PlanServiceImpl implements PlanService {
for (SavePlanPlateList.GoodsItemList item : items) { for (SavePlanPlateList.GoodsItemList item : items) {
// 将 material 和 thickness 组合成键 // 将 material 和 thickness 组合成键
String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getGoodsId(); String key = item.getMaterial() + "|" + item.getThickness();
// 如果键不存在,初始化一个新的列表 // 如果键不存在,初始化一个新的列表
groupedItems.putIfAbsent(key, new ArrayList<>()); groupedItems.putIfAbsent(key, new ArrayList<>());
@@ -1562,7 +1559,7 @@ public class PlanServiceImpl implements PlanService {
for (SavePlanPlateList.GoodsItemList item : items) { for (SavePlanPlateList.GoodsItemList item : items) {
// 将 material 和 thickness 组合成键 // 将 material 和 thickness 组合成键
String key = item.getThickness().toString()+ "|" + item.getGoodsId(); String key = item.getThickness().toString();
// 如果键不存在,初始化一个新的列表 // 如果键不存在,初始化一个新的列表
groupedItems.putIfAbsent(key, new ArrayList<>()); groupedItems.putIfAbsent(key, new ArrayList<>());
@@ -1585,7 +1582,7 @@ public class PlanServiceImpl implements PlanService {
for (SavePlanPlateList.GoodsItemList item : items) { for (SavePlanPlateList.GoodsItemList item : items) {
// 将 material 和 thickness 组合成键 // 将 material 和 thickness 组合成键
String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getColor()+ "|" + item.getBrand() + "|" + item.getGoodsId(); String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getColor()+ "|" + item.getBrand();
// 如果键不存在,初始化一个新的列表 // 如果键不存在,初始化一个新的列表
groupedItems.putIfAbsent(key, new ArrayList<>()); groupedItems.putIfAbsent(key, new ArrayList<>());
@@ -1672,7 +1669,7 @@ public class PlanServiceImpl implements PlanService {
)) ))
.script(s -> s.inline(i -> i .script(s -> s.inline(i -> i
.source("ctx._source.isOptimized = params.new_value") .source("ctx._source.isOptimized = params.new_value")
.params("new_value", JsonData.of(false)) .params(ES_FIELD_NEWVALUE, JsonData.of(false))
)); ));
UpdateByQueryRequest request = builder.build(); UpdateByQueryRequest request = builder.build();
@@ -1681,7 +1678,7 @@ public class PlanServiceImpl implements PlanService {
elasticsearchClient.updateByQuery(request); elasticsearchClient.updateByQuery(request);
}catch (Exception e){ }catch (Exception e){
log.error("排单加工方案状态更新异常:" + e.getMessage(), e); log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR); throw new ServiceException(DATA_DATA_ERROR);
} }
@@ -1707,7 +1704,7 @@ public class PlanServiceImpl implements PlanService {
)) ))
.script(s -> s.inline(i -> i .script(s -> s.inline(i -> i
.source("ctx._source.planId = params.new_value") .source("ctx._source.planId = params.new_value")
.params("new_value", JsonData.of(planId)) .params(ES_FIELD_NEWVALUE, JsonData.of(planId))
)); ));
UpdateByQueryRequest request = builder.build(); UpdateByQueryRequest request = builder.build();
@@ -1716,7 +1713,7 @@ public class PlanServiceImpl implements PlanService {
elasticsearchClient.updateByQuery(request); elasticsearchClient.updateByQuery(request);
}catch (Exception e){ }catch (Exception e){
log.error("排单加工方案状态更新异常:"+e.getMessage()); log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR); throw new ServiceException(DATA_DATA_ERROR);
} }
@@ -1754,7 +1751,7 @@ public class PlanServiceImpl implements PlanService {
)) ))
.script(s -> s.inline(i -> i .script(s -> s.inline(i -> i
.source("ctx._source.planId = params.new_value") .source("ctx._source.planId = params.new_value")
.params("new_value", JsonData.of(0)) .params(ES_FIELD_NEWVALUE, JsonData.of(0))
)); ));
UpdateByQueryRequest request = builder.build(); UpdateByQueryRequest request = builder.build();
@@ -1763,7 +1760,7 @@ public class PlanServiceImpl implements PlanService {
elasticsearchClient.updateByQuery(request); elasticsearchClient.updateByQuery(request);
}catch (Exception e){ }catch (Exception e){
log.error("排单加工方案状态更新异常:"+e.getMessage()); log.error(ORDER_PLAN_PROCESS_SCHEME_STATUS_UPDATE_ERROR_MSG + e.getMessage(), e);
throw new ServiceException(DATA_DATA_ERROR); throw new ServiceException(DATA_DATA_ERROR);
} }
@@ -1919,10 +1916,6 @@ public class PlanServiceImpl implements PlanService {
Long planId = (Long) identifierGenerator.nextId(null); Long planId = (Long) identifierGenerator.nextId(null);
// String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getColor()+ "|" + item.getBrand() + "|" + item.getGoodsId();
// 截取key中的goodsId
String goodsId = key.substring(key.lastIndexOf("|") + 1);
// 创建排单 // 创建排单
planDOS.add(PlanDO.builder() planDOS.add(PlanDO.builder()
.id(planId) .id(planId)
@@ -1934,7 +1927,6 @@ public class PlanServiceImpl implements PlanService {
.status(PlanStatusEnum.NOCUTTING.getStatus()) .status(PlanStatusEnum.NOCUTTING.getStatus())
.operator(loginUser.getNickname()) .operator(loginUser.getNickname())
.planTime(LocalDateTime.now()) .planTime(LocalDateTime.now())
.goodsId(goodsId)
.build()); .build());
// 更新板件排单id & 统计更新order_goods的数量和面积 // 更新板件排单id & 统计更新order_goods的数量和面积
@@ -1961,7 +1953,7 @@ public class PlanServiceImpl implements PlanService {
for (List<Long> plateIdList : batchPlanPlateIdList) { for (List<Long> plateIdList : batchPlanPlateIdList) {
int updatePlateNum = plateMapper.update(new LambdaUpdateWrapper<PlateDO>() int updatePlateNum = plateMapper.update(new LambdaUpdateWrapper<PlateDO>()
.in(PlateDO::getId, plateIdList) .in(PlateDO::getId, plateIdList)
.eq(PlateDO::getPlanId, 0L) .eq(PlateDO::getPlanId, 0)
.set(PlateDO::getPlanId, planId)); .set(PlateDO::getPlanId, planId));
if (updatePlateNum != plateIdList.size()) { if (updatePlateNum != plateIdList.size()) {
throw new ServiceException(CREAT_PLAN_PLATE_DATA_ERROR); throw new ServiceException(CREAT_PLAN_PLATE_DATA_ERROR);
@@ -23,6 +23,7 @@ import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlateNumAndAreaRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlateNumAndAreaRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList; import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
import com.cf.imes.module.executor.controller.admin.plate.vo.*; import com.cf.imes.module.executor.controller.admin.plate.vo.*;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
@@ -347,22 +348,17 @@ public class PlateServiceImpl implements PlateService {
AssertUtils.notEmpty(planDO, PLAN_NOT_EXISTS); AssertUtils.notEmpty(planDO, PLAN_NOT_EXISTS);
List<PlateGoodDO> planGoods = plateGoodMapper.selectList(new LambdaQueryWrapper<PlateGoodDO>() List<OrderGoodsResp> goodsRespVOS = planMapper.selectPlanGoodsList(planId, organId);
.eq(PlateGoodDO::getGoodsId, planDO.getGoodsId())
.eq(PlateGoodDO::getOrganId, organId)
.eq(PlateGoodDO::getDeleted, false)
.orderByAsc(PlateGoodDO::getCreateTime));
AssertUtils.notEmpty(planGoods, PLAN_NOT_EXISTS); AssertUtils.notEmpty(goodsRespVOS,PLAN_NOT_EXISTS);
PlateGoodDO planGood = planGoods.get(0); List<String> material = goodsRespVOS.stream().map(OrderGoodsResp::getMaterial).distinct().toList();
String material = planGood.getMaterial();
String color = planGood.getColor(); List<String> color = goodsRespVOS.stream().map(OrderGoodsResp::getColor).distinct().toList();
String brand = planGood.getBrand(); List<String> brand = goodsRespVOS.stream().map(OrderGoodsResp::getBrand).distinct().toList();
Double thickness = planGood.getThickness(); List<BigDecimal> thickness = goodsRespVOS.stream().map(OrderGoodsResp::getThickness).distinct().toList();
// 混单 // 混单
@@ -773,12 +769,10 @@ public class PlateServiceImpl implements PlateService {
} }
private void mixedInsertQuery(NoPlanPlatePageReqVO pageReqVO, private void mixedInsertQuery(NoPlanPlatePageReqVO pageReqVO,
PlanDO planDO, PlanDO planDO,
String material, List<String> material,
Double thickness, List<BigDecimal> thickness,
QueryWrapperX<OrderDO> queryWrapperX) { QueryWrapperX<OrderDO> queryWrapperX) {
@@ -791,10 +785,10 @@ public class PlateServiceImpl implements PlateService {
if(planDO.getFilter().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){ if(planDO.getFilter().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){
queryWrapperX queryWrapperX
.eqIfPresent(FIELD_OG_MATERIAL,material) .inIfPresent(FIELD_OG_MATERIAL,material)
.likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand()) .likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand())
.likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor()) .likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor())
.eqIfPresent(FIELD_OP_THICKNESS,thickness); .inIfPresent(FIELD_OP_THICKNESS,thickness);
} }
// 相同厚度 // 相同厚度
@@ -804,7 +798,7 @@ public class PlateServiceImpl implements PlateService {
.likeIfPresent(FIELD_OG_MATERIAL,pageReqVO.getMaterial()) .likeIfPresent(FIELD_OG_MATERIAL,pageReqVO.getMaterial())
.likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand()) .likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand())
.likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor()) .likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor())
.eqIfPresent(FIELD_OP_THICKNESS,thickness); .inIfPresent(FIELD_OP_THICKNESS,thickness);
} }
@@ -812,15 +806,12 @@ public class PlateServiceImpl implements PlateService {
} }
private void noMixedInsertQuery(NoPlanPlatePageReqVO pageReqVO, private void noMixedInsertQuery(NoPlanPlatePageReqVO pageReqVO,
PlanDO planDO, PlanDO planDO,
String material, List<String> material,
String brand, List<String> brand,
String color, List<String> color,
Double thickness, List<BigDecimal> thickness,
QueryWrapperX<OrderDO> queryWrapperX) { QueryWrapperX<OrderDO> queryWrapperX) {
// 是否开启混单 // 是否开启混单
@@ -833,10 +824,10 @@ public class PlateServiceImpl implements PlateService {
// 相同材质和厚度 混单 // 相同材质和厚度 混单
if(pageReqVO.getMixedType().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){ if(pageReqVO.getMixedType().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){
queryWrapperX queryWrapperX
.eqIfPresent(FIELD_OG_MATERIAL, material) .inIfPresent(FIELD_OG_MATERIAL, material)
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand()) .likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor()) .likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
.eqIfPresent(FIELD_OP_THICKNESS, thickness); .inIfPresent(FIELD_OP_THICKNESS, thickness);
} }
// 相同厚度 混单 // 相同厚度 混单
@@ -845,15 +836,15 @@ public class PlateServiceImpl implements PlateService {
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial()) .likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand()) .likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor()) .likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
.eqIfPresent(FIELD_OP_THICKNESS, thickness); .inIfPresent(FIELD_OP_THICKNESS, thickness);
} }
}else { }else {
queryWrapperX queryWrapperX
.eqIfPresent(FIELD_OG_MATERIAL, material) .inIfPresent(FIELD_OG_MATERIAL, material)
.eqIfPresent(FIELD_OG_BRAND, brand) .inIfPresent(FIELD_OG_BRAND, brand)
.eqIfPresent(FIELD_OG_COLOR, color) .inIfPresent(FIELD_OG_COLOR, color)
.eqIfPresent(FIELD_OP_THICKNESS, thickness); .inIfPresent(FIELD_OP_THICKNESS, thickness);
} }
@@ -37,11 +37,11 @@
og.remark, og.remark,
orp.id as remainId orp.id as remainId
from order_plan op from order_plate op
join order_goods og on op.organ_id = og.organ_id and op.goods_id = og.goods_id join order_goods og on op.organ_id = og.organ_id and op.goods_id = og.id
left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id
where op.organ_id = #{organId} and op.id = #{planId} where op.organ_id = #{organId} and op.plan_id = #{planId}
</select> </select>
@@ -41,7 +41,7 @@
FROM order_item i FROM order_item i
RIGHT JOIN `order_parts` p ON i.organ_id = p.organ_id AND i.order_id = p.order_id AND i.parts_id = p.id RIGHT JOIN `order_parts` p ON i.organ_id = p.organ_id AND i.order_id = p.order_id AND i.parts_id = p.id
RIGHT JOIN `order_body` ob ON i.organ_id = ob.organ_id AND i.order_id = ob.order_id AND i.body_id = ob.id RIGHT JOIN `order_body` ob ON i.organ_id = ob.organ_id AND i.order_id = ob.order_id AND i.body_id = ob.id
WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND ob.deleted = #{deleted} AND i.group_id = 0 WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND ob.deleted = #{deleted} AND (i.group_id is null or i.group_id = 0)
<if test="roomId != null and roomId.size() > 0"> <if test="roomId != null and roomId.size() > 0">
AND i.room_id IN AND i.room_id IN
<foreach item="roomIdItem" collection="roomId" open="(" separator="," close=")"> <foreach item="roomIdItem" collection="roomId" open="(" separator="," close=")">
@@ -98,7 +98,7 @@
FROM `order_item` i FROM `order_item` i
RIGHT JOIN `order_parts` p ON i.organ_id = p.organ_id AND i.order_id = p.order_id AND i.parts_id = p.id RIGHT JOIN `order_parts` p ON i.organ_id = p.organ_id AND i.order_id = p.order_id AND i.parts_id = p.id
RIGHT JOIN `order_body` ob ON i.organ_id = ob.organ_id AND i.order_id = ob.order_id AND i.body_id = ob.id RIGHT JOIN `order_body` ob ON i.organ_id = ob.organ_id AND i.order_id = ob.order_id AND i.body_id = ob.id
WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND ob.deleted = #{deleted} AND i.group_id is null AND p.category in WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND ob.deleted = #{deleted} AND (i.group_id is null or i.group_id = 0) AND p.category in
<foreach item="type" collection="types" open="(" separator="," close=")"> <foreach item="type" collection="types" open="(" separator="," close=")">
#{type} #{type}
</foreach> </foreach>
@@ -260,6 +260,18 @@
</select> </select>
<select id="selectPlanGoodsList"
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp">
select distinct og.thickness as thickness,
og.material as material,
og.color as color,
og.brand as brand
from order_plate op
left join order_goods og on op.organ_id = og.organ_id and opi.goods_id = og.id
where op.organ_id = #{organId}
and op.plan_id = #{planId};
</select>
<select id="countDeletePlanPlate" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanPlateStatisticsRespVO"> <select id="countDeletePlanPlate" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanPlateStatisticsRespVO">
select op.plan_id as planId, select op.plan_id as planId,
count(op.id) as count count(op.id) as count