diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java index 8f434ad..34dfaba 100644 --- a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java +++ b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java @@ -6,6 +6,7 @@ import lombok.experimental.SuperBuilder; import java.io.Serializable; import java.util.List; +import java.util.Set; /** * 订单基础信息表(OrderBaseInfo)实体类 @@ -24,85 +25,115 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { private List<Long> ids; + private Set<Long> orderIds; + private Long id; + /** - * 客户编码 + * 生成开始时间 */ - private String customerCode; + private String createStartTime; + /** - * 项目号 + * 生成结束时间 */ - private String projectNo; + private String createEndTime; + /** - * 生产科 + * 单据状态 */ - private String productionDepartment; + private String orderStatus; + /** - * 内部编号 + * 提交人名称 */ - private String innerNo; + private String commitUserName; + /** - * 客户po号 + * 提交人手机号码 */ - private String customerPo; + private String commitUserPhone; + /** - * 客户STYLE# + * 客户编码 */ - private String customerStyle; + private String customerCode; + /** - * Modelo(REFERENCE) + * 项目号 */ - private String modeleLo; + private String projectNo; + /** - * COLLECTION (style description) + * 生产科 */ - private String collection; + private String productionDepartment; + /** - * PO COLOR + * 生成科拖货开始时间 */ - private String poColor; + private String productionDepartmentConsignStartTime; + /** - * 颜色中文 + * 生成科拖货结束时间 */ - private String cnColor; + private String productionDepartmentConsignEndTime; + /** - * pic图片地址 + * 订单上HOD开始时间 */ - private String picUrl; + private String orderHodStartTime; + + /** + * 订单上HOD结束时间 + */ + private String orderHodEndTime; + /** - * 生产要求 + * 最小利润率 */ - private String productionComment; + private Double profitRateLqt; + /** - * 数量 + * 最大利润率 */ - private Integer orderCount; + private Double profitRateGqt; + /** - * 订单成分 + * 想法来源 */ - private String orderComposition; + private String ideaSource; + /** - * 款式类型 + * 手工初型 */ - private String productStyle; + private String manualPreform; + /** - * 生成科拖货时间 + * pp样品确认意见 */ - private String productionDepartmentConsignTime; + private String ppConfirmResult; + /** - * 订单上HOD时间 + * 自测通过开始时间 */ - private String orderHodTime; + private String selfTestPassStartTime; + /** - * 出库类型 + * 自测通过结束时间 */ - private String outboundType; + private String selfTestPassEndTime; + /** - * 包装类型 + * 中期验货结果PASS / FAIL */ - private String packetType; + private String midCheckResult; + /** + * 尾期验货结果PASS / FAIL + */ + private String endCheckResult; } diff --git a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java index 63198ce..98620ba 100644 --- a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java @@ -2,6 +2,7 @@ package com.order.erp.service.order.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -22,10 +23,12 @@ import com.order.erp.common.utils.ProfitUtils; import com.order.erp.config.DataScope; import com.order.erp.domain.*; import com.order.erp.domain.dto.BaseDO; +import com.order.erp.domain.dto.admin.AdminUserDO; import com.order.erp.domain.dto.order.*; import com.order.erp.domain.excel.OrderExcelVO; import com.order.erp.domain.vo.order.*; import com.order.erp.mapper.order.OrderBaseInfoMapper; +import com.order.erp.service.admin.AdminUserService; import com.order.erp.service.order.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; @@ -38,10 +41,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.math.BigDecimal; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -97,6 +97,9 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O @Resource private DataScope dataScope; + @Resource + private AdminUserService userService; + /** * 通过ID查询单条数据 * <p> @@ -749,21 +752,111 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O * @return */ private LambdaQueryWrapper<OrderBaseInfoDO> buildQueryByParam(OrderBaseInfoQueryVO queryVO) { + if (StringUtils.isNotBlank(queryVO.getCommitUserPhone())) { + AdminUserDO userDO = userService.getOne(new LambdaQueryWrapper<AdminUserDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(AdminUserDO::getPhone, queryVO.getCommitUserPhone()).last("limit 1")); + queryVO.setCommitUserName(userDO.getUserName()); + } + Set<Long> orderIds = new HashSet<>(); + if (Objects.nonNull(queryVO.getProfitRateGqt()) || Objects.nonNull(queryVO.getProfitRateLqt())) { + List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .ge(Objects.nonNull(queryVO.getProfitRateLqt()), OrderProfitAnalysisDO::getProfitRate, queryVO.getProfitRateLqt()) + .le(Objects.nonNull(queryVO.getProfitRateGqt()), OrderProfitAnalysisDO::getProfitRate, queryVO.getProfitRateGqt())); + if (CollectionUtils.isNotEmpty(profitAnalysisDOS)) { + orderIds.addAll(profitAnalysisDOS.stream().map(OrderProfitAnalysisDO::getOrderId).collect(Collectors.toSet())); + } else { + orderIds.add(-1L); + } + } + + if (StringUtils.isNotBlank(queryVO.getIdeaSource()) || StringUtils.isNotBlank(queryVO.getManualPreform())) { + List<OrderCompletionReportDO> reportDOS = reportService.list(new LambdaQueryWrapper<OrderCompletionReportDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(StringUtils.isNotBlank(queryVO.getIdeaSource()), OrderCompletionReportDO::getIdeaSource, queryVO.getIdeaSource()) + .eq(StringUtils.isNotBlank(queryVO.getManualPreform()), OrderCompletionReportDO::getManualPreform, queryVO.getManualPreform())); + if (CollectionUtils.isNotEmpty(reportDOS)) { + Set<Long> reportOrderIds = reportDOS.stream().map(OrderCompletionReportDO::getOrderId).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(orderIds)) { + Collection<Long> set = CollectionUtil.intersection(orderIds, reportOrderIds); + if (CollectionUtils.isEmpty(set)) { + orderIds.add(-1L); + } else { + orderIds.addAll(set); + } + } else { + orderIds.addAll(reportOrderIds); + } + } else { + orderIds.add(-1L); + } + } + + if (StringUtils.isNotBlank(queryVO.getPpConfirmResult()) || StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()) || StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime())) { + List<OrderTrackStageDO> trackStageDOS = trackStageService.list(new LambdaQueryWrapper<OrderTrackStageDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(StringUtils.isNotBlank(queryVO.getPpConfirmResult()), OrderTrackStageDO::getPpConfirmResult, queryVO.getPpConfirmResult()) + .eq(StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassStartTime()) + .eq(StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassEndTime()) + ); + if (CollectionUtils.isNotEmpty(trackStageDOS)) { + Set<Long> trackOrderIds = trackStageDOS.stream().map(OrderTrackStageDO::getOrderId).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(orderIds)) { + Collection<Long> set = CollectionUtil.intersection(orderIds, trackOrderIds); + if (CollectionUtils.isEmpty(set)) { + orderIds.add(-1L); + } else { + orderIds.addAll(set); + } + } else { + orderIds.addAll(trackOrderIds); + } + } else { + orderIds.add(-1L); + } + } + + if (StringUtils.isNotBlank(queryVO.getMidCheckResult()) || StringUtils.isNotBlank(queryVO.getEndCheckResult())) { + List<OrderInspectionStageDO> inspectionStageDOS = inspectionStageService.list(new LambdaQueryWrapper<OrderInspectionStageDO>() + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(StringUtils.isNotBlank(queryVO.getMidCheckResult()), OrderInspectionStageDO::getMidCheckResult, queryVO.getMidCheckResult()) + .eq(StringUtils.isNotBlank(queryVO.getEndCheckResult()), OrderInspectionStageDO::getEndCheckResult, queryVO.getEndCheckResult()) + ); + if (CollectionUtils.isNotEmpty(inspectionStageDOS)) { + Set<Long> inspectOrderIds = inspectionStageDOS.stream().map(OrderInspectionStageDO::getOrderId).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(orderIds)) { + Collection<Long> set = CollectionUtil.intersection(orderIds, inspectOrderIds); + if (CollectionUtils.isEmpty(set)) { + orderIds.add(-1L); + } else { + orderIds.addAll(set); + } + } else { + orderIds.addAll(inspectOrderIds); + } + } else { + orderIds.add(-1L); + } + } + if (CollectionUtils.isNotEmpty(orderIds)) { + queryVO.setOrderIds(orderIds); + } return new LambdaQueryWrapper<OrderBaseInfoDO>() .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) + .eq(StringUtils.isNotBlank(queryVO.getCommitUserName()), OrderBaseInfoDO::getCreateBy, queryVO.getCommitUserName()) + .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime()) + .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime()) + .eq(StringUtils.isNotBlank(queryVO.getOrderStatus()), OrderBaseInfoDO::getOrderStatus, queryVO.getOrderStatus()) + .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo()) .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment()) - .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo()) - .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo()) - .eq(StringUtils.isNotBlank(queryVO.getCustomerStyle()), OrderBaseInfoDO::getCustomerStyle, queryVO.getCustomerStyle()) - .eq(StringUtils.isNotBlank(queryVO.getModeleLo()), OrderBaseInfoDO::getModeleLo, queryVO.getModeleLo()) - .eq(StringUtils.isNotBlank(queryVO.getCollection()), OrderBaseInfoDO::getCollection, queryVO.getCollection()) - .eq(StringUtils.isNotBlank(queryVO.getPoColor()), OrderBaseInfoDO::getPoColor, queryVO.getPoColor()) - .eq(StringUtils.isNotBlank(queryVO.getCnColor()), OrderBaseInfoDO::getCnColor, queryVO.getCnColor()) - .eq(StringUtils.isNotBlank(queryVO.getProductStyle()), OrderBaseInfoDO::getProductStyle, queryVO.getProductStyle()) - .eq(StringUtils.isNotBlank(queryVO.getOutboundType()), OrderBaseInfoDO::getOutboundType, queryVO.getOutboundType()) - .eq(StringUtils.isNotBlank(queryVO.getPacketType()), OrderBaseInfoDO::getPacketType, queryVO.getPacketType()) + .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime()) + .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime()) + .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime()) + .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime()) + .in(CollectionUtils.isNotEmpty(queryVO.getOrderIds()), OrderBaseInfoDO::getId, queryVO.getOrderIds()) .orderByDesc(OrderBaseInfoDO::getId) ; }