|
|
@@ -5,24 +5,30 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.main.domain.MainBackOrder;
|
|
|
import org.dromara.main.domain.MainBackRecord;
|
|
|
+import org.dromara.main.domain.MainOrder;
|
|
|
import org.dromara.main.domain.bo.MainBackOrderBo;
|
|
|
import org.dromara.main.domain.vo.MainBackOrderVo;
|
|
|
import org.dromara.main.mapper.MainBackOrderMapper;
|
|
|
import org.dromara.main.mapper.MainBackRecordMapper;
|
|
|
+import org.dromara.main.mapper.MainOrderMapper;
|
|
|
import org.dromara.main.service.IMainBackOrderService;
|
|
|
import org.dromara.system.domain.bo.SysTenantBo;
|
|
|
import org.dromara.system.domain.vo.SysTenantVo;
|
|
|
import org.dromara.system.service.ISysTenantService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
|
-import java.math.BigDecimal;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
@Service
|
|
|
@@ -30,6 +36,7 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
|
|
|
|
|
|
private final MainBackOrderMapper baseMapper;
|
|
|
private final MainBackRecordMapper recordMapper;
|
|
|
+ private final MainOrderMapper mainOrderMapper;
|
|
|
private final ISysTenantService tenantService;
|
|
|
|
|
|
@Override
|
|
|
@@ -83,30 +90,55 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
|
|
|
|
|
|
@Override
|
|
|
public List<MainBackOrderVo> queryPortalListByTenantId(String tenantId) {
|
|
|
- LambdaQueryWrapper<MainBackOrder> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.eq(StrUtil.isNotBlank(tenantId), MainBackOrder::getTenantId, tenantId)
|
|
|
- .orderByDesc(MainBackOrder::getCreateTime);
|
|
|
+ LambdaQueryWrapper<MainOrder> orderLqw = Wrappers.lambdaQuery();
|
|
|
+ orderLqw.eq(StrUtil.isNotBlank(tenantId), MainOrder::getTenantId, tenantId)
|
|
|
+ .in(MainOrder::getOrderType, List.of(3, 4))
|
|
|
+ .isNotNull(MainOrder::getBusinessId)
|
|
|
+ .orderByDesc(MainOrder::getCreateTime);
|
|
|
+
|
|
|
+ List<MainOrder> mainOrders = mainOrderMapper.selectList(orderLqw);
|
|
|
+ if (mainOrders.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> businessIds = mainOrders.stream()
|
|
|
+ .map(MainOrder::getBusinessId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- List<MainBackOrderVo> list = baseMapper.selectVoList(lqw);
|
|
|
- for (MainBackOrderVo vo : list) {
|
|
|
- fillPortalFields(vo);
|
|
|
+ Map<Long, MainBackOrder> backOrderMap = new LinkedHashMap<>();
|
|
|
+ for (MainBackOrder backOrder : baseMapper.selectBatchIds(businessIds)) {
|
|
|
+ backOrderMap.put(backOrder.getId(), backOrder);
|
|
|
}
|
|
|
- return list;
|
|
|
+
|
|
|
+ List<MainBackOrderVo> result = new ArrayList<>();
|
|
|
+ for (MainOrder mainOrder : mainOrders) {
|
|
|
+ MainBackOrder backOrder = backOrderMap.get(mainOrder.getBusinessId());
|
|
|
+ if (backOrder == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ MainBackOrderVo vo = MapstructUtils.convert(backOrder, MainBackOrderVo.class);
|
|
|
+ fillPortalFields(vo, mainOrder);
|
|
|
+ result.add(vo);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
- private void fillPortalFields(MainBackOrderVo vo) {
|
|
|
+ private void fillPortalFields(MainBackOrderVo vo, MainOrder mainOrder) {
|
|
|
Long count = recordMapper.selectCount(
|
|
|
new LambdaQueryWrapper<MainBackRecord>()
|
|
|
.eq(MainBackRecord::getOrderId, vo.getId())
|
|
|
);
|
|
|
vo.setCandidateCount(count);
|
|
|
- vo.setOrderId(vo.getId());
|
|
|
- vo.setCompanyId(parseLongOrNull(vo.getTenantId()));
|
|
|
+ vo.setOrderId(mainOrder.getId());
|
|
|
+ vo.setOrderNo(mainOrder.getOrderNo());
|
|
|
+ vo.setCompanyId(mainOrder.getBuyerId());
|
|
|
+ vo.setTenantId(mainOrder.getTenantId());
|
|
|
+ vo.setTotalAmount(mainOrder.getTotalAmount());
|
|
|
vo.setOrderType(vo.getCategoryId() != null ? 1 : 2);
|
|
|
|
|
|
- Integer status = parseIntOrDefault(vo.getStatus(), 0);
|
|
|
- vo.setOrderStatus(status);
|
|
|
- vo.setMainOrderStatus(status);
|
|
|
+ vo.setOrderStatus(parseIntOrDefault(vo.getStatus(), 0));
|
|
|
+ vo.setMainOrderStatus(mainOrder.getOrderStatus());
|
|
|
|
|
|
if (count != null && count > 0 && vo.getTotalAmount() != null) {
|
|
|
vo.setUnitPrice(vo.getTotalAmount().divide(BigDecimal.valueOf(count), 2, java.math.RoundingMode.HALF_UP));
|
|
|
@@ -115,17 +147,6 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private Long parseLongOrNull(String value) {
|
|
|
- if (StringUtils.isBlank(value)) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- try {
|
|
|
- return Long.parseLong(value);
|
|
|
- } catch (NumberFormatException ignored) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private Integer parseIntOrDefault(String value, int defaultValue) {
|
|
|
if (StringUtils.isBlank(value)) {
|
|
|
return defaultValue;
|