feat(quotation): 新增禁售配置功能并优化价格和折扣配置
- 新增 ForbidConfigController 实现禁售配置的搜索和保存功能 - 添加 QuotationModelForbid 相关的实体、服务接口和服务实现 - 在 DiscountConfigController 中修改数据类型从 Long 到 String 并优化数值处理 - 在 PriceConfigController 中统一使用 String 类型参数并改进数值转换逻辑 - 优化 Mapper XML 文件中的条件查询语句结构 - 为 ProductModelSimpleVO 添加 batchNumber 字段支持 - 修复价格配置中区域价格过滤的逻辑错误
This commit is contained in:
parent
48e3bdb11c
commit
6b4ce63ff4
|
|
@ -28,4 +28,6 @@ public class ProductModelSimpleVO {
|
|||
* 机型型号
|
||||
*/
|
||||
private String no;
|
||||
|
||||
private Long batchNumber;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.nflg.mobilebroken.quotation.controller.admin;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
@ -108,7 +109,7 @@ public class DiscountConfigController extends ControllerBase {
|
|||
.filter(price -> price.getAreaId().equals(area.getId()))
|
||||
.findFirst()
|
||||
.get();
|
||||
map.put(area.getCode() + "_price", modelPrice.getAmount());
|
||||
map.put(area.getCode() + "_price", NumberUtil.format(modelPrice.getAmount()));
|
||||
QuotationModelDiscountArea discountArea = discountAreas.stream()
|
||||
.filter(price -> price.getAreaId().equals(area.getId()))
|
||||
.findFirst()
|
||||
|
|
@ -129,13 +130,13 @@ public class DiscountConfigController extends ControllerBase {
|
|||
*/
|
||||
@Transactional
|
||||
@PostMapping("/save")
|
||||
public ApiResult<Void> save(@RequestBody @NotEmpty List<Map<String, Object>> datas) {
|
||||
List<Long> modelIds = datas.stream().map(data -> (Long) data.get("modelId")).collect(Collectors.toList());
|
||||
public ApiResult<Void> save(@RequestBody @NotEmpty List<Map<String, String>> datas) {
|
||||
List<Long> modelIds = datas.stream().map(data -> Long.parseLong(data.get("modelId"))).collect(Collectors.toList());
|
||||
List<QuotationModelDiscount> discounts = new ArrayList<>();
|
||||
List<QuotationModelDiscountArea> discountAreas = new ArrayList<>();
|
||||
List<QuotationModelDiscountApply> discountApplies = new ArrayList<>();
|
||||
datas.forEach(data -> {
|
||||
Long modelId = (Long) data.get("modelId");
|
||||
Long modelId = Long.parseLong(data.get("modelId"));
|
||||
QuotationModelDiscount discount = new QuotationModelDiscount()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setModelId(modelId)
|
||||
|
|
@ -149,13 +150,13 @@ public class DiscountConfigController extends ControllerBase {
|
|||
QuotationModelDiscountArea discountArea = new QuotationModelDiscountArea()
|
||||
.setDiscountId(discount.getId())
|
||||
.setAreaId(area.getId())
|
||||
.setRatio(new BigDecimal(data.get(area.getCode() + "_ratio").toString()))
|
||||
.setDiscountStartDate(DateTimeUtil.parse(data.get(area.getCode() + "_start").toString(), "yyyy-MM-dd"))
|
||||
.setDiscountEndDate(DateTimeUtil.parse(data.get(area.getCode() + "_end").toString(), "yyyy-MM-dd"));
|
||||
.setRatio(new BigDecimal(data.get(area.getCode() + "_ratio")))
|
||||
.setDiscountStartDate(DateTimeUtil.parse(data.get(area.getCode() + "_start"), "yyyy-MM-dd"))
|
||||
.setDiscountEndDate(DateTimeUtil.parse(data.get(area.getCode() + "_end"), "yyyy-MM-dd"));
|
||||
discountAreas.add(discountArea);
|
||||
}
|
||||
}
|
||||
Integer[] userIds = (Integer[]) data.get("apply");
|
||||
int[] userIds = StrUtil.splitToInt(data.get("apply"), ',');
|
||||
for (Integer userId : userIds) {
|
||||
discountApplies.add(new QuotationModelDiscountApply()
|
||||
.setDiscountId(discount.getId())
|
||||
|
|
|
|||
|
|
@ -1,21 +1,34 @@
|
|||
package com.nflg.mobilebroken.quotation.controller.admin;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.nflg.mobilebroken.common.constant.Constant;
|
||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.DynamicHeaderVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.ProductModelSimpleVO;
|
||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||
import com.nflg.mobilebroken.common.util.NumberUtil;
|
||||
import com.nflg.mobilebroken.common.util.VUtils;
|
||||
import com.nflg.mobilebroken.quotation.controller.ControllerBase;
|
||||
import com.nflg.mobilebroken.repository.entity.DictionaryItem;
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||
import com.nflg.mobilebroken.repository.service.IDictionaryItemService;
|
||||
import com.nflg.mobilebroken.repository.service.IQuotationModelForbidService;
|
||||
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 禁售配置
|
||||
|
|
@ -33,20 +46,25 @@ public class ForbidConfigController extends ControllerBase {
|
|||
@Resource
|
||||
private ITBaseCustomerService customerService;
|
||||
|
||||
@Resource
|
||||
private IQuotationModelForbidService forbidService;
|
||||
|
||||
/**
|
||||
* 获取动态表头
|
||||
*/
|
||||
@GetMapping("/headers")
|
||||
public ApiResult<List<DynamicHeaderVO>> getHeaders() {
|
||||
List<DynamicHeaderVO> vos = new ArrayList<>();
|
||||
// vos.add(new DynamicHeaderVO().setProp("modelId").setLabel("modelId").setKey(true).setShow(false));
|
||||
vos.add(new DynamicHeaderVO().setProp("modelNo").setLabel("产品机型"));
|
||||
List<DictionaryItem> categories = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DIRECT_SALES_CATEGORY);
|
||||
List<TBaseCustomer> customers = customerService.lambdaQuery()
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.isNotNull(TBaseCustomer::getCategoryId)
|
||||
.orderByAsc(TBaseCustomer::getId)
|
||||
.list();
|
||||
categories.forEach(category -> {
|
||||
DynamicHeaderVO avo=new DynamicHeaderVO()
|
||||
DynamicHeaderVO avo = new DynamicHeaderVO()
|
||||
.setProp(category.getCode())
|
||||
.setLabel(category.getName())
|
||||
.setChildren(new ArrayList<>());
|
||||
|
|
@ -54,8 +72,109 @@ public class ForbidConfigController extends ControllerBase {
|
|||
.forEach(customer -> {
|
||||
avo.getChildren().add(new DynamicHeaderVO().setProp(customer.getAgencyCompanyCode()).setLabel(customer.getAgencyCompanyName()));
|
||||
});
|
||||
vos.add(avo);
|
||||
});
|
||||
return ApiResult.success(vos);
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
*/
|
||||
@PostMapping("/search")
|
||||
public ApiResult<PageData<Map<String, Object>>> search(@Valid @RequestBody ModelConfigSearchRequest request) {
|
||||
IPage<ProductModelSimpleVO> pdatas = forbidService.search(request);
|
||||
if (CollectionUtil.isEmpty(pdatas.getRecords())) {
|
||||
return ApiResult.success(PageData.empty());
|
||||
}
|
||||
List<QuotationModelForbid> forbids = forbidService.lambdaQuery()
|
||||
.eq(QuotationModelForbid::getSourceType, 1)
|
||||
.in(QuotationModelForbid::getModelId, pdatas.getRecords().stream().map(ProductModelSimpleVO::getBatchNumber).collect(Collectors.toList()))
|
||||
.list();
|
||||
List<TBaseCustomer> customers = customerService.lambdaQuery()
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.isNotNull(TBaseCustomer::getCategoryId)
|
||||
.list();
|
||||
return ApiResult.success(pdatas, data -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("modelId", data.getBatchNumber());
|
||||
map.put("modelNo", data.getNo());
|
||||
customers.forEach(customer -> {
|
||||
map.put(customer.getAgencyCompanyCode(), forbids.stream()
|
||||
.filter(forbid -> forbid.getModelId().equals(data.getBatchNumber())
|
||||
&& forbid.getSourceType().equals(1)
|
||||
&& forbid.getSourceId().equals(customer.getId()))
|
||||
.map(QuotationModelForbid::getIsForbid)
|
||||
.findFirst()
|
||||
.orElse(false)
|
||||
);
|
||||
});
|
||||
return map;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("/save")
|
||||
public ApiResult<Void> save(@RequestBody @NotEmpty List<Map<String, Object>> datas) {
|
||||
VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("请选择要保存的数据!");
|
||||
List<Long> modelIds = datas.stream().map(data -> Long.parseLong(data.get("modelId").toString())).collect(Collectors.toList());
|
||||
List<QuotationModelForbid> forbids = forbidService.lambdaQuery()
|
||||
.eq(QuotationModelForbid::getSourceType, 1)
|
||||
.in(QuotationModelForbid::getModelId, modelIds)
|
||||
.list();
|
||||
List<TBaseCustomer> customers = customerService.lambdaQuery()
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.isNotNull(TBaseCustomer::getCategoryId)
|
||||
.list();
|
||||
List<QuotationModelForbid> forbidForAdd = new ArrayList<>();
|
||||
List<QuotationModelForbid> forbidForUpdate = new ArrayList<>();
|
||||
datas.forEach(data -> {
|
||||
Long modelId = Long.parseLong(data.get("modelId").toString());
|
||||
data.remove("modelId");
|
||||
data.remove("modelNo");
|
||||
data.forEach((key, value) -> {
|
||||
TBaseCustomer customer = customers.stream()
|
||||
.filter(c -> c.getAgencyCompanyCode().equals(key))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(customer)) {
|
||||
Boolean isForbid = (Boolean) value;
|
||||
QuotationModelForbid forbid = forbids.stream()
|
||||
.filter(f -> f.getModelId().equals(modelId) && f.getSourceType() == 1 && f.getSourceId().equals(customer.getId()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(forbid)) {
|
||||
forbidForAdd.add(new QuotationModelForbid()
|
||||
.setModelId(modelId)
|
||||
.setSourceId(customer.getId())
|
||||
.setSourceType(1)
|
||||
.setIsForbid(isForbid)
|
||||
.setCreateById(AdminUserUtil.getUserId())
|
||||
.setCreateBy(AdminUserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
);
|
||||
} else if (forbid.getIsForbid() != isForbid) {
|
||||
forbidForUpdate.add(
|
||||
forbid.setIsForbid(isForbid)
|
||||
.setUpdateById(AdminUserUtil.getUserId())
|
||||
.setUpdateBy(AdminUserUtil.getUserName())
|
||||
.setUpdateTime(LocalDateTime.now())
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
if (CollectionUtil.isNotEmpty(forbidForAdd)) {
|
||||
forbidService.saveOrUpdateBatch(forbidForAdd);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(forbidForUpdate)) {
|
||||
forbidService.updateBatchById(forbidForUpdate);
|
||||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,9 +130,9 @@ public class PriceConfigController extends ControllerBase {
|
|||
*/
|
||||
@Transactional
|
||||
@PostMapping("/save")
|
||||
public ApiResult<Void> save(@Valid @RequestBody List<Map<String, Object>> datas) {
|
||||
public ApiResult<Void> save(@Valid @RequestBody List<Map<String, String>> datas) {
|
||||
List<DictionaryItem> categories = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DIRECT_SALES_CATEGORY);
|
||||
Map<Long, List<Map<String, Object>>> group = datas.stream().collect(Collectors.groupingBy(map -> (Long) map.get("modelId")));
|
||||
Map<Long, List<Map<String, String>>> group = datas.stream().collect(Collectors.groupingBy(map -> Long.parseLong(map.get("modelId"))));
|
||||
group.forEach((modelId, itemList) -> {
|
||||
QuotationModelPrice price = priceService.lambdaQuery()
|
||||
.eq(QuotationModelPrice::getModelId, modelId)
|
||||
|
|
@ -153,8 +153,8 @@ public class PriceConfigController extends ControllerBase {
|
|||
priceService.save(price);
|
||||
List<QuotationModelPriceItem> items = new ArrayList<>();
|
||||
List<QuotationModelPriceItemArea> areas = new ArrayList<>();
|
||||
for (Map<String, Object> map : itemList) {
|
||||
Long itemId = 0L, configItemUniqueId = (Long) map.get("configItemUniqueId");
|
||||
for (Map<String, String> map : itemList) {
|
||||
Long itemId = 0L, configItemUniqueId = Long.parseLong(map.get("configItemUniqueId"));
|
||||
if (configItemUniqueId > 0) {
|
||||
QuotationModelPriceItem item = new QuotationModelPriceItem()
|
||||
.setPriceId(price.getId())
|
||||
|
|
@ -172,7 +172,7 @@ public class PriceConfigController extends ControllerBase {
|
|||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(itemId)
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areas.add(area);
|
||||
}
|
||||
}
|
||||
|
|
@ -184,14 +184,14 @@ public class PriceConfigController extends ControllerBase {
|
|||
List<QuotationModelPriceItem> items = priceItemService.lambdaQuery()
|
||||
.eq(QuotationModelPriceItem::getPriceId, price.getId())
|
||||
.in(QuotationModelPriceItem::getConfigItemUniqueId, itemList.stream()
|
||||
.map(a -> (Long) a.get("configItemUniqueId"))
|
||||
.map(a -> Long.parseLong(a.get("configItemUniqueId")))
|
||||
.collect(Collectors.toList())
|
||||
)
|
||||
.list();
|
||||
List<QuotationModelPriceItemArea> areas = priceItemAreaService.lambdaQuery()
|
||||
.eq(QuotationModelPriceItemArea::getPriceId, price.getId())
|
||||
.and(or -> or.eq(QuotationModelPriceItemArea::getPriceItemId, 0)
|
||||
.in(QuotationModelPriceItemArea::getPriceItemId, items.stream()
|
||||
.and(wrapper -> wrapper.eq(QuotationModelPriceItemArea::getPriceItemId, 0).or()
|
||||
.in(CollectionUtil.isNotEmpty(items),QuotationModelPriceItemArea::getPriceItemId, items.stream()
|
||||
.map(QuotationModelPriceItem::getId)
|
||||
.collect(Collectors.toList())
|
||||
)
|
||||
|
|
@ -201,8 +201,8 @@ public class PriceConfigController extends ControllerBase {
|
|||
List<QuotationModelPriceItem> itemsForUpdate = new ArrayList<>();
|
||||
List<QuotationModelPriceItemArea> areasForAdd = new ArrayList<>();
|
||||
List<QuotationModelPriceItemArea> areasForUpdate = new ArrayList<>();
|
||||
for (Map<String, Object> map : itemList) {
|
||||
Long configItemUniqueId = (Long) map.get("configItemUniqueId");
|
||||
for (Map<String, String> map : itemList) {
|
||||
Long configItemUniqueId = Long.parseLong(map.get("configItemUniqueId"));
|
||||
if (configItemUniqueId > 0) {
|
||||
QuotationModelPriceItem item = items.stream()
|
||||
.filter(it -> configItemUniqueId.equals(it.getConfigItemUniqueId()))
|
||||
|
|
@ -223,7 +223,7 @@ public class PriceConfigController extends ControllerBase {
|
|||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(item.getId())
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areas.add(area);
|
||||
}
|
||||
}
|
||||
|
|
@ -246,9 +246,9 @@ public class PriceConfigController extends ControllerBase {
|
|||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(item.getId())
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()).toString())));
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()))));
|
||||
} else {
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areasForUpdate.add(area);
|
||||
}
|
||||
}
|
||||
|
|
@ -264,8 +264,14 @@ public class PriceConfigController extends ControllerBase {
|
|||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(area)) {
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areasForUpdate.add(area);
|
||||
}else {
|
||||
areasForAdd.add(new QuotationModelPriceItemArea()
|
||||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(0L)
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -301,8 +307,8 @@ public class PriceConfigController extends ControllerBase {
|
|||
price.setUpdateById(AdminUserUtil.getUserId());
|
||||
price.setUpdateBy(AdminUserUtil.getUserName());
|
||||
price.setUpdateTime(LocalDateTime.now());
|
||||
for (Map<String, Object> map : itemList) {
|
||||
Long configItemUniqueId = (Long) map.get("configItemUniqueId");
|
||||
for (Map<String, String> map : itemList) {
|
||||
Long configItemUniqueId = Long.parseLong(map.get("configItemUniqueId"));
|
||||
if (configItemUniqueId > 0) {
|
||||
QuotationModelPriceItem dbItem = dbItems.stream()
|
||||
.filter(ait -> ait.getConfigItemUniqueId().equals(configItemUniqueId))
|
||||
|
|
@ -321,14 +327,14 @@ public class PriceConfigController extends ControllerBase {
|
|||
if (Objects.nonNull(area)) {
|
||||
area.setId(IdUtil.getSnowflakeNextId());
|
||||
area.setPriceId(price.getId());
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areasForAdd.add(area);
|
||||
} else {
|
||||
areasForAdd.add(new QuotationModelPriceItemArea()
|
||||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(dbItem.getId())
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()).toString()))
|
||||
.setAmount(new BigDecimal(map.get(category.getCode())))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -348,7 +354,7 @@ public class PriceConfigController extends ControllerBase {
|
|||
.setAreaId(category.getId())
|
||||
.setPriceId(price.getId())
|
||||
.setPriceItemId(item.getId())
|
||||
.setAmount(new BigDecimal(map.get(category.getCode()).toString()))
|
||||
.setAmount(new BigDecimal(map.get(category.getCode())))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -363,7 +369,7 @@ public class PriceConfigController extends ControllerBase {
|
|||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(area)) {
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode()).toString()));
|
||||
area.setAmount(new BigDecimal(map.get(category.getCode())));
|
||||
areasForAdd.add(area);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package com.nflg.mobilebroken.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.ProductModelSimpleVO;
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
|
@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||
*/
|
||||
public interface QuotationModelForbidMapper extends BaseMapper<QuotationModelForbid> {
|
||||
|
||||
IPage<ProductModelSimpleVO> search(ModelConfigSearchRequest request, Page<?> page);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
package com.nflg.mobilebroken.repository.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.ProductModelSimpleVO;
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 报价-机型禁售 服务类
|
||||
|
|
@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
*/
|
||||
public interface IQuotationModelForbidService extends IService<QuotationModelForbid> {
|
||||
|
||||
IPage<ProductModelSimpleVO> search(ModelConfigSearchRequest request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.mobilebroken.common.pojo.request.ModelConfigSearchRequest;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.ProductModelSimpleVO;
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.nflg.mobilebroken.repository.mapper.QuotationModelForbidMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IQuotationModelForbidService;
|
||||
|
|
@ -17,4 +21,8 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class QuotationModelForbidServiceImpl extends ServiceImpl<QuotationModelForbidMapper, QuotationModelForbid> implements IQuotationModelForbidService {
|
||||
|
||||
@Override
|
||||
public IPage<ProductModelSimpleVO> search(ModelConfigSearchRequest request) {
|
||||
return baseMapper.search(request,new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,8 @@ public class QuotationModelPriceServiceImpl extends ServiceImpl<QuotationModelPr
|
|||
.map(area -> new ModelPriceConfigAreaVO()
|
||||
.setCode(area.getCode())
|
||||
.setAmount(areaPrices.stream()
|
||||
.filter(pit -> pit.getPriceItemId().equals(0L))
|
||||
.filter(pit -> pit.getPriceItemId().equals(0L)
|
||||
&& pit.getAreaId().equals(area.getId()))
|
||||
.map(QuotationModelPriceItemArea::getAmount)
|
||||
.findFirst()
|
||||
.orElse(null)
|
||||
|
|
|
|||
|
|
@ -12,20 +12,18 @@
|
|||
LEFT JOIN dictionary_item di ON di.id=pm.module_id
|
||||
LEFT JOIN v_quotation_model_config qmc ON pm.batch_number=qmc.model_id
|
||||
WHERE pm.state=1
|
||||
<where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
</where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
order by qmc.update_time desc,qmc.create_time desc,pm.id
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -11,20 +11,18 @@
|
|||
LEFT JOIN product_series ps ON pm.series_number=ps.batch_number AND ps.state=1
|
||||
LEFT JOIN dictionary_item di ON di.id=pm.module_id
|
||||
WHERE pm.state=1 and qmd.discount_status=1
|
||||
<where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
</where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
order by qmd.update_time desc,qmd.id desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -2,4 +2,25 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.QuotationModelForbidMapper">
|
||||
|
||||
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductModelSimpleVO">
|
||||
SELECT pm.batch_number,pm.no
|
||||
FROM product_model pm
|
||||
LEFT JOIN product_type pt on pm.type_number=pt.batch_number AND pt.state=1
|
||||
LEFT JOIN product_series ps ON pm.series_number=ps.batch_number AND ps.state=1
|
||||
LEFT JOIN dictionary_item di ON di.id=pm.module_id
|
||||
WHERE pm.state=1
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
order by pm.id
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -15,20 +15,18 @@
|
|||
LEFT JOIN v_quotation_model_price qmp ON pm.batch_number=qmp.model_id
|
||||
LEFT JOIN quotation_model_config qmc2 ON qmc2.id=qmp.config_id
|
||||
WHERE pm.state=1 AND qmc1.config_status=1
|
||||
<where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
</where>
|
||||
<if test="request.moduleId!=null">
|
||||
AND pm.module_id=#{request.moduleId}
|
||||
</if>
|
||||
<if test="request.seriesNumber!=null">
|
||||
AND pm.series_number=#{request.seriesNumber}
|
||||
</if>
|
||||
<if test="request.typeNumber!=null">
|
||||
AND pm.type_number=#{request.typeNumber}
|
||||
</if>
|
||||
<if test="request.no!=null and request.no!=''">
|
||||
AND pm.`no` like concat('%', #{request.no}, '%')
|
||||
</if>
|
||||
order by qmp.price_status,qmp.update_time desc,pm.id
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue