diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationAdminSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationAdminSearchRequest.java new file mode 100644 index 00000000..74dde254 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationAdminSearchRequest.java @@ -0,0 +1,74 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class QuotationAdminSearchRequest extends PageRequest{ + + /** + * 型号 + */ + private String no; + + /** + * 模块ID + */ + private Integer moduleId; + + /** + * 系列批次号 + */ + private Long seriesNumber; + + /** + * 类型批次号 + */ + private Long typeNumber; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 报价对象 + */ + private Long targetId; + + /** + * 报价人代码 + */ + private String quotationCode; + + /** + * 配置ID + */ + private Long configId; + + /** + * 价格ID + */ + private Long priceId; + + /** + * 是否特价产品 + */ + private Boolean hasDiscount; + + /** + * 是否新品 + */ + private Boolean recommend; + + /** + * 报价时间-开始 + */ + private LocalDate createTimeStart; + + /** + * 报价时间-结束 + */ + private LocalDate createTimeEnd; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationSearchRequest.java new file mode 100644 index 00000000..0c134d5f --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/QuotationSearchRequest.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.nflg.mobilebroken.common.util.AppUserUtil; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class QuotationSearchRequest extends ModelConfigSearchRequest { + + /** + * 报价时间-开始 + */ + private LocalDate createTimeStart; + + /** + * 报价时间-结束 + */ + private LocalDate createTimeEnd; + + @JsonIgnore + private List modelIds; + + @JsonIgnore + private Integer userType = AppUserUtil.isAgent() ? 1 : 0; + + @JsonIgnore + private Integer userId = AppUserUtil.getUserId(); +} + diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationSearchVO.java new file mode 100644 index 00000000..b21b315b --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationSearchVO.java @@ -0,0 +1,114 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import cn.hutool.core.util.StrUtil; +import com.nflg.mobilebroken.common.util.DateTimeUtil; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class QuotationSearchVO { + + private Long id; + + /** + * 报价编号 + */ + private String no; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 报价人代码 + */ + private String quotationCode; + + /** + * 报价对象 + */ + private Integer targetId; + + /** + * 报价对象 + */ + private String targetName; + + /** + * 优惠金额 + */ + private BigDecimal discount; + + /** + * 总价 + */ + private BigDecimal totalFee; + + /** + * 实际总价 + */ + private BigDecimal actualFee; + + /** + * 报价总价,汇率计算后的价格,可能为空 + */ + private BigDecimal exchangeFee; + + /** + * 报价生效时间 + */ + private String effectiveStartTime; + + /** + * 报价失效时间 + */ + private String effectiveEndTime; + + /** + * 状态,0:失效;1:有效 + */ + private Integer status; + + public Integer getStatus() { + String date = DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"); + if (StrUtil.isNotBlank(effectiveStartTime)) { + if (StrUtil.isNotBlank(effectiveEndTime)) { + return effectiveStartTime.compareTo(date) <= 0 && effectiveEndTime.compareTo(date) >= 0 ? 1 : 0; + } else { + return effectiveStartTime.compareTo(date) <= 0 ? 1 : 0; + } + } else if (StrUtil.isNotBlank(effectiveEndTime)) { + return effectiveEndTime.compareTo(date) >= 0 ? 1 : 0; + } + return null; + } + + /** + * 创建人类型,0:内部人员;1:代理商 + */ + private Integer createByType; + + /** + * 创建人id + */ + private Integer createById; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后修改时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/AdminShoppingController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/AdminShoppingController.java new file mode 100644 index 00000000..19599ad1 --- /dev/null +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/AdminShoppingController.java @@ -0,0 +1,70 @@ +package com.nflg.mobilebroken.quotation.controller.admin; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.QuotationAdminSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.QuotationSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.QuotationSearchVO; +import com.nflg.mobilebroken.common.util.AppUserUtil; +import com.nflg.mobilebroken.quotation.controller.ControllerBase; +import com.nflg.mobilebroken.repository.entity.ProductModel; +import com.nflg.mobilebroken.repository.entity.TBaseCustomer; +import com.nflg.mobilebroken.repository.service.IQuotationShoppingOrderService; +import com.nflg.mobilebroken.repository.service.ITBaseCustomerService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; +import java.util.stream.Collectors; + +/** + * (管理端)客户报价单 + */ +@RestController +@RequestMapping("/shopping") +public class AdminShoppingController extends ControllerBase { + + @Resource + private IQuotationShoppingOrderService shoppingOrderService; + + @Resource + private ITBaseCustomerService customerService; + + /** + * 查询报价单 + */ + @PostMapping("/search") + public ApiResult> searchQuotation(@Valid @RequestBody QuotationAdminSearchRequest request) { + IPage datas = shoppingOrderService.searchFromAdmin(request); + boolean isAgent = AppUserUtil.isAgent(); + List customers; + if (isAgent) { + customers = customerService.lambdaQuery() + .in(TBaseCustomer::getId, datas.getRecords().stream().map(QuotationSearchVO::getTargetId).collect(Collectors.toList())) + .list(); + } else { + customers = null; + } + return ApiResult.success(datas, data -> { + if (isAgent) { + data.setTargetName( + customers.stream() + .filter(item -> item.getId().equals(data.getTargetId())) + .map(TBaseCustomer::getAgencyCompanyName) + .findFirst() + .orElse("") + ); + } else { + data.setTargetName(AppUserUtil.getUserName()); + } + //TODO 设置汇率价格 + return data; + }); + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ForbidConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ForbidConfigController.java index 7e2aef27..043e9b07 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ForbidConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/ForbidConfigController.java @@ -37,9 +37,6 @@ import java.util.stream.Collectors; @RequestMapping("/forbid/config") public class ForbidConfigController extends ControllerBase { - @Resource - private ObjectMapper objectMapper; - @Resource private IDictionaryItemService dictionaryItemService; @@ -60,6 +57,7 @@ public class ForbidConfigController extends ControllerBase { List customers = customerService.lambdaQuery() .eq(TBaseCustomer::getDelIs, 0) .eq(TBaseCustomer::getEnableState, 1) + .eq(TBaseCustomer::getQuotationUse, true) .isNotNull(TBaseCustomer::getCategoryId) .orderByAsc(TBaseCustomer::getId) .list(); @@ -93,6 +91,7 @@ public class ForbidConfigController extends ControllerBase { List customers = customerService.lambdaQuery() .eq(TBaseCustomer::getDelIs, 0) .eq(TBaseCustomer::getEnableState, 1) + .eq(TBaseCustomer::getQuotationUse, true) .isNotNull(TBaseCustomer::getCategoryId) .list(); return ApiResult.success(pdatas, data -> { @@ -128,6 +127,7 @@ public class ForbidConfigController extends ControllerBase { List customers = customerService.lambdaQuery() .eq(TBaseCustomer::getDelIs, 0) .eq(TBaseCustomer::getEnableState, 1) + .eq(TBaseCustomer::getQuotationUse, true) .isNotNull(TBaseCustomer::getCategoryId) .list(); List forbidForAdd = new ArrayList<>(); diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/PriceConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/PriceConfigController.java index c67f9533..26662406 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/PriceConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/PriceConfigController.java @@ -99,6 +99,7 @@ public class PriceConfigController extends ControllerBase { return ApiResult.success(priceService.search(request), data -> { Map map = objectMapper.convertValue(data, new TypeReference<>() { }); + map.put("key", IdUtil.getSnowflakeNextIdStr()); if (CollectionUtil.isNotEmpty(data.getAreas())) { data.getAreas().forEach(area -> { map.put(area.getCode(), NumberUtil.format(area.getAmount())); @@ -113,6 +114,7 @@ public class PriceConfigController extends ControllerBase { public void convert(Map map, ModelPriceConfigVO vo) { Map md = objectMapper.convertValue(vo, new TypeReference<>() { }); + md.put("key", IdUtil.getSnowflakeNextIdStr()); if (CollectionUtil.isNotEmpty(vo.getAreas())) { vo.getAreas().forEach(area -> { md.put(area.getCode(), NumberUtil.format(area.getAmount())); diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioAgentConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioAgentConfigController.java index 4ba10c87..82859afa 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioAgentConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioAgentConfigController.java @@ -72,6 +72,7 @@ public class RatioAgentConfigController extends ControllerBase { .select(TBaseCustomer::getId, TBaseCustomer::getCategoryId) .eq(TBaseCustomer::getDelIs, 0) .eq(TBaseCustomer::getEnableState, 1) + .eq(TBaseCustomer::getQuotationUse, true) .list(); List categories = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DIRECT_SALES_CATEGORY); List users = appUserService.lambdaQuery() @@ -132,6 +133,7 @@ public class RatioAgentConfigController extends ControllerBase { .select(TBaseCustomer::getId, TBaseCustomer::getCategoryId) .eq(TBaseCustomer::getDelIs, 0) .eq(TBaseCustomer::getEnableState, 1) + .eq(TBaseCustomer::getQuotationUse, true) .list(); List categories = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DIRECT_SALES_CATEGORY); List users = appUserService.lambdaQuery() diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioConfigController.java index d57c4f20..f8d65924 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/admin/RatioConfigController.java @@ -126,7 +126,6 @@ public class RatioConfigController extends ControllerBase { List agentItems = ratioAgentItemService.getEffectives(); if (CollectionUtil.isNotEmpty(agentItems)) { List users = appUserService.listByIds(agentItems.stream().map(QuotationModelRatioAgentItemDTO::getUserId).collect(Collectors.toList())); - vo.getChildren().add(voc1); agentItems.stream() .filter(QuotationModelRatioAgentItemDTO::getIsPrimary) .forEach(ai -> { diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/AppRatioAgentConfigController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/AppRatioAgentConfigController.java index 01aa2085..48d299f0 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/AppRatioAgentConfigController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/AppRatioAgentConfigController.java @@ -33,7 +33,7 @@ import java.util.stream.Collectors; * (用户端)定价系数 */ @RestController -@RequestMapping("app/ratio/agent") +@RequestMapping("/app/ratio/agent") public class AppRatioAgentConfigController extends ControllerBase { @Resource diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/PlanController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/PlanController.java index 7adb8b6f..ea179238 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/PlanController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/PlanController.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; * (用户端)报价项目管理 */ @RestController -@RequestMapping("/plan") +@RequestMapping("/app/plan") public class PlanController extends ControllerBase { @Resource diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/ShoppingController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/ShoppingController.java index 5d8ecd31..d90c665d 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/ShoppingController.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/app/ShoppingController.java @@ -2,19 +2,27 @@ package com.nflg.mobilebroken.quotation.controller.app; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.dto.ModelConfigEffectiveDTO; import com.nflg.mobilebroken.common.pojo.dto.QuotationDiscountDTO; import com.nflg.mobilebroken.common.pojo.dto.QuotationModelRatioDirectItemDTO; +import com.nflg.mobilebroken.common.pojo.request.QuotationSearchRequest; import com.nflg.mobilebroken.common.pojo.request.ShoppingSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.ModelPrice1VO; +import com.nflg.mobilebroken.common.pojo.vo.QuotationSearchVO; import com.nflg.mobilebroken.common.pojo.vo.ShoppingSearchVO; import com.nflg.mobilebroken.common.pojo.vo.SimpleUserVO; import com.nflg.mobilebroken.common.util.*; import com.nflg.mobilebroken.quotation.controller.ControllerBase; +import com.nflg.mobilebroken.quotation.pojo.request.QuotationInfoUpdateRequest; +import com.nflg.mobilebroken.quotation.pojo.request.QuotationPriceUpdateRequest; import com.nflg.mobilebroken.quotation.pojo.request.ShoppingInitRequest; import com.nflg.mobilebroken.quotation.pojo.request.ShoppingSaveRequest; +import com.nflg.mobilebroken.quotation.pojo.vo.QuotationOrderInfoVO; import com.nflg.mobilebroken.quotation.pojo.vo.ShoppingCartPartVO; import com.nflg.mobilebroken.quotation.pojo.vo.ShoppingCartVO; import com.nflg.mobilebroken.repository.entity.*; @@ -28,11 +36,9 @@ import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -40,7 +46,7 @@ import java.util.stream.Collectors; */ @Slf4j @RestController -@RequestMapping("/shopping") +@RequestMapping("/app/shopping") public class ShoppingController extends ControllerBase { @Resource @@ -64,6 +70,12 @@ public class ShoppingController extends ControllerBase { @Resource private IQuotationModelRatioDirectItemService ratioDirectItemService; + @Resource + private IQuotationUserPlanModelItemService userPlanModelItemService; + + @Resource + private IQuotationUserPlanDefaultService userPlanDefaultService; + @Resource private IQuotationShoppingCartService shoppingCartService; @@ -76,8 +88,23 @@ public class ShoppingController extends ControllerBase { @Resource private IQuotationShoppingCartServiceService shoppingCartServiceService; + @Resource + private IQuotationShoppingOrderService shoppingOrderService; + + @Resource + private IQuotationShoppingOrderAdjustService shoppingOrderAdjustService; + + @Resource + private IQuotationShoppingOrderItemService shoppingOrderItemService; + + @Resource + private IProductModelService productModelService; + + @Resource + private ITBaseCustomerService customerService; + /** - * 获取报价对象 + * 购物车-获取报价对象 */ @GetMapping("/cart/getTargets") public ApiResult> getTargets() { @@ -101,7 +128,7 @@ public class ShoppingController extends ControllerBase { } /** - * 根据机型查询售价 + * 购物车-根据机型查询售价 */ @PostMapping("/cart/init") public ApiResult init(@Valid @RequestBody ShoppingInitRequest request) { @@ -131,7 +158,22 @@ public class ShoppingController extends ControllerBase { Pair pair = getRatio(request.getModelId()); BigDecimal standardRatio = pair.getLeft(), optionalRatio = pair.getRight(); log.debug("机型【{}】标准配件系数为{},可选配件系数为{}", request.getModelNo(), standardRatio, optionalRatio); - vo.setActualFee(vo.getActualFee().multiply(standardRatio)); + //方案 + QuotationUserPlanModelItem planModelItem = userPlanModelItemService.getEffectiveForUser(request.getModelId(), AppUserUtil.isAgent() ? 1 : 0, AppUserUtil.getUserId()); + if (Objects.nonNull(planModelItem)) { + log.debug("机型【{}】方案为{},系数:{}", request.getModelNo(), planModelItem.getName(), planModelItem.getRatio()); + standardRatio = NumberUtil.multiply(standardRatio, planModelItem.getRatio()); + log.debug("机型【{}】标准配件系数为{},可选配件系数为{}", request.getModelNo(), standardRatio, optionalRatio); + vo.setPlanItemId(planModelItem.getId()); + } else { + QuotationUserPlanDefault userPlanDefault = userPlanDefaultService.getEffectiveForUser(AppUserUtil.isAgent() ? 1 : 0, AppUserUtil.getUserId()); + if (Objects.nonNull(userPlanDefault)) { + log.debug("用户方案默认系数为{}", userPlanDefault.getRatio()); + standardRatio = NumberUtil.multiply(standardRatio, userPlanDefault.getRatio()); + log.debug("机型【{}】标准配件系数为{},可选配件系数为{}", request.getModelNo(), standardRatio, optionalRatio); + } + } + vo.setActualFee(vo.getTotalFee().subtract(vo.getDiscount()).multiply(standardRatio)); log.debug("机型【{}】价格为{},优惠{}", request.getModelNo(), vo.getActualFee(), vo.getDiscount()); //获取部件配置 List parts = modelConfigService.getEffectives(modelPrice.getPriceId(), categoryId, MultilingualUtil.getLanguage()); @@ -169,7 +211,7 @@ public class ShoppingController extends ControllerBase { } /** - * 保存购物车 + * 购物车-保存购物车 */ @Transactional @PostMapping("/cart/save") @@ -236,7 +278,7 @@ public class ShoppingController extends ControllerBase { } /** - * 查询购物车 + * 购物车-查询购物车 */ @PostMapping("/cart/search") public ApiResult> search(@Valid @RequestBody ShoppingSearchRequest request) { @@ -244,7 +286,7 @@ public class ShoppingController extends ControllerBase { } /** - * 删除购物车 + * 购物车-删除购物车 */ @Transactional @PostMapping("/cart/delete") @@ -266,10 +308,11 @@ public class ShoppingController extends ControllerBase { } /** - * 生成报价单 + * 报价单-生成报价单 */ + @Transactional @PostMapping("/quotation/generate") - private ApiResult generate(@RequestBody @NotEmpty List cartIds) { + public ApiResult generateQuotation(@RequestBody @NotEmpty List cartIds) { List carts = shoppingCartService.lambdaQuery() .eq(QuotationShoppingCart::getStatus, 0) .eq(QuotationShoppingCart::getCreateByType, AppUserUtil.isAgent() ? 1 : 0) @@ -281,7 +324,193 @@ public class ShoppingController extends ControllerBase { .throwMessage("客户名称不一致"); VUtils.trueThrowBusinessError(carts.stream().map(QuotationShoppingCart::getTargetId).collect(Collectors.toSet()).size() > 1) .throwMessage("报价对象不一致"); - //TODO + QuotationShoppingOrder order = new QuotationShoppingOrder() + .setCreateByType(AppUserUtil.isAgent() ? 1 : 0) + .setCreateBy(AppUserUtil.getUserName()) + .setCreateById(AppUserUtil.getUserId()) + .setCreateTime(LocalDateTime.now()) + .setId(IdUtil.getId()) + .setCustomerName(carts.get(0).getCustomerName()) + .setTargetId(carts.get(0).getTargetId()) + .setTotalFee(carts.stream().map(QuotationShoppingCart::getActualFee).reduce(BigDecimal::add).get()); + order.setActualFee(order.getTotalFee()); + shoppingOrderItemService.saveBatch( + carts.stream() + .map(cart -> new QuotationShoppingOrderItem() + .setOrderId(order.getId()) + .setCartId(cart.getId())) + .collect(Collectors.toList()) + ); + QuotationShoppingOrder last = CollectionUtil.get(shoppingOrderService.lambdaQuery().orderByDesc(QuotationShoppingOrder::getId).list(), 0); + if (Objects.isNull(last)) { + order.setNo("QO" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "001"); + } else { + String date = StrUtil.subWithLength(last.getNo(), 2, 8); + if (date.equals(DateTimeUtil.format(LocalDate.now(), "yyyyMMdd"))) { + order.setNo("QO" + date + StrUtil.padPre(String.valueOf(last.getId() + 1), 3, '0')); + } else { + order.setNo("QO" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "001"); + } + } + shoppingOrderService.save(order); + return ApiResult.success(); + } + + /** + * 报价单-查询报价单 + */ + @PostMapping("/quotation/search") + public ApiResult> searchQuotation(@Valid @RequestBody QuotationSearchRequest request) { + Integer page = request.getPage(), pageSize = request.getPageSize(); + request.setPage(1); + request.setPageSize(Integer.MAX_VALUE); + Page models = productModelService.searchForQuotation(request); + request.setModelIds( + models.getRecords().stream() + .map(ProductModel::getBatchNumber) + .collect(Collectors.toList()) + ); + request.setPage(page); + request.setPageSize(pageSize); + IPage datas = shoppingOrderService.search(request); + boolean isAgent = AppUserUtil.isAgent(); + List customers; + if (isAgent) { + customers = customerService.lambdaQuery() + .in(TBaseCustomer::getId, datas.getRecords().stream().map(QuotationSearchVO::getTargetId).collect(Collectors.toList())) + .list(); + } else { + customers = null; + } + return ApiResult.success(datas, data -> { + if (isAgent) { + data.setTargetName( + customers.stream() + .filter(item -> item.getId().equals(data.getTargetId())) + .map(TBaseCustomer::getAgencyCompanyName) + .findFirst() + .orElse("") + ); + } else { + data.setTargetName(AppUserUtil.getUserName()); + } + //TODO 设置汇率价格 + return data; + }); + } + + /** + * 报价单-获取报价单详情 + */ + @GetMapping("/quotation/getInfo") + public ApiResult getQuotationInfo(@RequestParam Long id) { + QuotationShoppingOrder order = shoppingOrderService.getById(id); + VUtils.trueThrowBusinessError(Objects.isNull(order)).throwMessage("未找到报价单"); + QuotationOrderInfoVO vo = Convert.convert(QuotationOrderInfoVO.class, order); + List orderItems = shoppingOrderItemService.lambdaQuery() + .eq(QuotationShoppingOrderItem::getOrderId, id) + .list(); + List carts = shoppingCartService.lambdaQuery() + .in(QuotationShoppingCart::getId, orderItems.stream().map(QuotationShoppingOrderItem::getCartId).collect(Collectors.toList())) + .list(); + carts.forEach(cart -> { + ShoppingCartVO cartVO = Convert.convert(ShoppingCartVO.class, cart); + QuotationShoppingOrderItem orderItem = orderItems.stream() + .filter(item -> item.getCartId().equals(cart.getId())) + .findFirst() + .orElse(null); + if (Objects.nonNull(orderItem)) { + cartVO.setStandardFee(orderItem.getStandardFee()); + } + //获取部件配置 + List parts = shoppingCartItemService.getSelectedParts(cart.getId(), MultilingualUtil.getLanguage()); + cartVO.setStandardParts(parts.stream() + .filter(part -> part.getParentId() == 0L && part.getType() == 1) + .map(part -> { + ShoppingCartPartVO vi = Convert.convert(ShoppingCartPartVO.class, part); + vi.setAmount( + vi.getAmount().add( + parts.stream() + .filter(pi -> pi.getParentId().equals(part.getId()) && pi.getType() == 0) + .map(ModelConfigEffectiveDTO::getAmount) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO) + ) + ); + return vi; + } + ).collect(Collectors.toList()) + ); + cartVO.setOptionalParts(parts.stream() + .filter(part -> part.getParentId() == 0L && part.getType() == 0) + .map(part -> { + ShoppingCartPartVO vi = Convert.convert(ShoppingCartPartVO.class, part); + vi.setAmount( + vi.getAmount().add( + parts.stream() + .filter(pi -> pi.getParentId().equals(part.getId()) && pi.getType() == 0) + .map(ModelConfigEffectiveDTO::getAmount) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO) + ) + ); + return vi; + } + ).collect(Collectors.toList()) + ); + vo.getItems().add(cartVO); + }); + return ApiResult.success(vo); + } + + /** + * 报价单-设置报价有效期 + */ + @PostMapping("/quotation/update") + public ApiResult updateQuotationInfo(@Valid @RequestBody QuotationInfoUpdateRequest request) { + QuotationShoppingOrder order = shoppingOrderService.getById(request.getId()); + VUtils.trueThrowBusinessError(Objects.isNull(order)).throwMessage("未找到报价单"); + shoppingOrderService.lambdaUpdate() + .set(QuotationShoppingOrder::getEffectiveStartTime, request.getEffectiveStartTime()) + .set(QuotationShoppingOrder::getEffectiveEndTime, request.getEffectiveEndTime()) + .set(QuotationShoppingOrder::getUpdateTime, LocalDateTime.now()) + .eq(QuotationShoppingOrder::getId, request.getId()) + .update(); + return ApiResult.success(); + } + + /** + * 报价单-调价 + */ + @Transactional + @PostMapping("/quotation/updatePrice") + public ApiResult updateQuotationPrice(@Valid @RequestBody QuotationPriceUpdateRequest request) { + QuotationShoppingOrder order = shoppingOrderService.getById(request.getId()); + VUtils.trueThrowBusinessError(Objects.isNull(order)).throwMessage("未找到报价单"); + request.getItems().forEach(item -> { + shoppingOrderItemService.lambdaUpdate() + .set(QuotationShoppingOrderItem::getStandardFee, item.getNewStandardFee()) + .eq(QuotationShoppingOrderItem::getCartId, item.getCartId()) + .eq(QuotationShoppingOrderItem::getOrderId, request.getId()) + .update(); + }); + shoppingOrderAdjustService.save(new QuotationShoppingOrderAdjust() + .setOrderId(request.getId()) + .setDiscount(request.getItems() + .stream() + .map(it -> it.getOldStandardFee().subtract(it.getNewStandardFee())) + .reduce(BigDecimal::add) + .get() + ) + .setActualFee(request.getActualFee()) + .setCreateTime(LocalDateTime.now()) + ); + shoppingOrderService.lambdaUpdate() + .set(QuotationShoppingOrder::getActualFee, request.getActualFee()) + .set(QuotationShoppingOrder::getDiscount, order.getTotalFee().subtract(request.getActualFee())) + .set(QuotationShoppingOrder::getUpdateTime, LocalDateTime.now()) + .eq(QuotationShoppingOrder::getId, request.getId()) + .update(); return ApiResult.success(); } diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationInfoUpdateRequest.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationInfoUpdateRequest.java new file mode 100644 index 00000000..a4ba31e1 --- /dev/null +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationInfoUpdateRequest.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.quotation.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class QuotationInfoUpdateRequest { + + @NotNull + private Long id; + + /** + * 报价生效时间 + */ + @NotBlank + private String effectiveStartTime; + + /** + * 报价失效时间 + */ + @NotBlank + private String effectiveEndTime; +} diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateItemRequest.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateItemRequest.java new file mode 100644 index 00000000..244a130a --- /dev/null +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateItemRequest.java @@ -0,0 +1,28 @@ +package com.nflg.mobilebroken.quotation.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +public class QuotationPriceUpdateItemRequest { + + /** + * 购物车id + */ + @NotNull + private Long cartId; + + /** + * 调价前价格 + */ + @NotNull + private BigDecimal oldStandardFee; + + /** + * 调价后价格 + */ + @NotNull + private BigDecimal newStandardFee; +} diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateRequest.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateRequest.java new file mode 100644 index 00000000..c3ef7365 --- /dev/null +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/request/QuotationPriceUpdateRequest.java @@ -0,0 +1,23 @@ +package com.nflg.mobilebroken.quotation.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class QuotationPriceUpdateRequest { + + @NotNull + private Long id; + + /** + * 调价后实际总价 + */ + private BigDecimal actualFee; + + @NotEmpty + private List items; +} diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/QuotationOrderInfoVO.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/QuotationOrderInfoVO.java new file mode 100644 index 00000000..38ddfaf6 --- /dev/null +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/QuotationOrderInfoVO.java @@ -0,0 +1,84 @@ +package com.nflg.mobilebroken.quotation.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Data +public class QuotationOrderInfoVO { + + private Long id; + + /** + * 报价编号 + */ + private String no; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 报价对象 + */ + private Integer targetId; + + /** + * 优惠金额 + */ + private BigDecimal discount; + + /** + * 总价 + */ + private BigDecimal totalFee; + + /** + * 实际总价 + */ + private BigDecimal actualFee; + + /** + * 报价生效时间 + */ + private String effectiveStartTime; + + /** + * 报价失效时间 + */ + private String effectiveEndTime; + + /** + * 创建人类型,0:内部人员;1:代理商 + */ + private Integer createByType; + + /** + * 创建人id + */ + private Integer createById; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最后修改时间 + */ + private LocalDateTime updateTime; + + /** + * 购物车列表 + */ + private List items=new ArrayList<>(); +} diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartPartVO.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartPartVO.java index 5f96740a..41b2dc85 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartPartVO.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartPartVO.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.quotation.pojo.vo; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.experimental.Accessors; @@ -42,5 +43,11 @@ public class ShoppingCartPartVO { */ private Integer optionalType; + /** + * 是否已选择 + */ + @JsonProperty("hasSelect") + private Boolean hasSelect; + private List children; } diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartVO.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartVO.java index 768bcf47..87345d4e 100644 --- a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartVO.java +++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/pojo/vo/ShoppingCartVO.java @@ -166,7 +166,7 @@ public class ShoppingCartVO { /** * 优惠金额 */ - private BigDecimal discount; + private BigDecimal discount = BigDecimal.ZERO; /** * 状态,0:未生成报价单;1:已生成报价单; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationShoppingOrderItem.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationShoppingOrderItem.java index 750cd2f4..f14300ed 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationShoppingOrderItem.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationShoppingOrderItem.java @@ -25,6 +25,11 @@ public class QuotationShoppingOrderItem implements Serializable { private Long id; + /** + * 报价单id + */ + private Long orderId; + /** * 购物车id */ diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingCartItemMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingCartItemMapper.java index 4a9a260a..971d8ef0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingCartItemMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingCartItemMapper.java @@ -1,8 +1,11 @@ package com.nflg.mobilebroken.repository.mapper; +import com.nflg.mobilebroken.common.pojo.dto.ModelConfigEffectiveDTO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingCartItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** *

* 报价-购物车-子项 Mapper 接口 @@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface QuotationShoppingCartItemMapper extends BaseMapper { + List getSelectedParts(Long id,String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingOrderMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingOrderMapper.java index fbd9979f..a4e18fd5 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingOrderMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationShoppingOrderMapper.java @@ -1,5 +1,10 @@ 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.QuotationAdminSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.QuotationSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.QuotationSearchVO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -13,4 +18,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface QuotationShoppingOrderMapper extends BaseMapper { + IPage search(QuotationSearchRequest request, Page page); + + IPage searchFromAdmin(QuotationAdminSearchRequest request, Page page); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationUserPlanModelItemMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationUserPlanModelItemMapper.java index b7efbf92..2c2c857f 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationUserPlanModelItemMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationUserPlanModelItemMapper.java @@ -21,4 +21,6 @@ public interface QuotationUserPlanModelItemMapper extends BaseMapper getEffectivesForAgent(); List search(Long id, ModelConfigSearchRequest request); + + QuotationUserPlanModelItem getEffectiveForUser(Long modelId,Integer userType, Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingCartItemService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingCartItemService.java index da9c03e4..2f2c3b40 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingCartItemService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingCartItemService.java @@ -1,8 +1,11 @@ package com.nflg.mobilebroken.repository.service; +import com.nflg.mobilebroken.common.pojo.dto.ModelConfigEffectiveDTO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingCartItem; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 报价-购物车-子项 服务类 @@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IQuotationShoppingCartItemService extends IService { + List getSelectedParts(Long id,String language); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingOrderService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingOrderService.java index 4ee61823..4cdfb4b3 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingOrderService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationShoppingOrderService.java @@ -1,8 +1,14 @@ package com.nflg.mobilebroken.repository.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.mobilebroken.common.pojo.request.QuotationAdminSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.QuotationSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.QuotationSearchVO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingOrder; import com.baomidou.mybatisplus.extension.service.IService; +import javax.validation.Valid; + /** *

* 报价-报价单 服务类 @@ -13,4 +19,7 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IQuotationShoppingOrderService extends IService { + IPage search(QuotationSearchRequest request); + + IPage searchFromAdmin(QuotationAdminSearchRequest request); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanDefaultService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanDefaultService.java index 8ca69fca..e1c503ee 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanDefaultService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanDefaultService.java @@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IQuotationUserPlanDefaultService extends IService { + QuotationUserPlanDefault getEffectiveForUser(int userType, Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanModelItemService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanModelItemService.java index 1f75bf49..eef20d6a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanModelItemService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationUserPlanModelItemService.java @@ -22,4 +22,6 @@ public interface IQuotationUserPlanModelItemService extends IService getEffectivesForAgent(); List search(Long id,ModelConfigSearchRequest request); + + QuotationUserPlanModelItem getEffectiveForUser(Long modelId,Integer userType, Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingCartItemServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingCartItemServiceImpl.java index 93f08420..9d257d33 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingCartItemServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingCartItemServiceImpl.java @@ -1,11 +1,14 @@ package com.nflg.mobilebroken.repository.service.impl; +import com.nflg.mobilebroken.common.pojo.dto.ModelConfigEffectiveDTO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingCartItem; import com.nflg.mobilebroken.repository.mapper.QuotationShoppingCartItemMapper; import com.nflg.mobilebroken.repository.service.IQuotationShoppingCartItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 报价-购物车-子项 服务实现类 @@ -17,4 +20,8 @@ import org.springframework.stereotype.Service; @Service public class QuotationShoppingCartItemServiceImpl extends ServiceImpl implements IQuotationShoppingCartItemService { + @Override + public List getSelectedParts(Long id,String language) { + return baseMapper.getSelectedParts(id,language); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingOrderServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingOrderServiceImpl.java index b6a83286..6576185c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingOrderServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationShoppingOrderServiceImpl.java @@ -1,5 +1,10 @@ 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.QuotationAdminSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.QuotationSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.QuotationSearchVO; import com.nflg.mobilebroken.repository.entity.QuotationShoppingOrder; import com.nflg.mobilebroken.repository.mapper.QuotationShoppingOrderMapper; import com.nflg.mobilebroken.repository.service.IQuotationShoppingOrderService; @@ -17,4 +22,13 @@ import org.springframework.stereotype.Service; @Service public class QuotationShoppingOrderServiceImpl extends ServiceImpl implements IQuotationShoppingOrderService { + @Override + public IPage search(QuotationSearchRequest request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public IPage searchFromAdmin(QuotationAdminSearchRequest request) { + return baseMapper.searchFromAdmin(request, new Page<>(request.getPage(), request.getPageSize())); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanDefaultServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanDefaultServiceImpl.java index fd4f940b..d04cd601 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanDefaultServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanDefaultServiceImpl.java @@ -17,4 +17,11 @@ import org.springframework.stereotype.Service; @Service public class QuotationUserPlanDefaultServiceImpl extends ServiceImpl implements IQuotationUserPlanDefaultService { + @Override + public QuotationUserPlanDefault getEffectiveForUser(int userType, Integer userId) { + return lambdaQuery() + .eq(QuotationUserPlanDefault::getCreateByType, userType) + .eq(QuotationUserPlanDefault::getCreateById, userId) + .one(); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanModelItemServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanModelItemServiceImpl.java index aa896b77..41e4ae61 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanModelItemServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationUserPlanModelItemServiceImpl.java @@ -31,4 +31,9 @@ public class QuotationUserPlanModelItemServiceImpl extends ServiceImpl search(Long id, ModelConfigSearchRequest request) { return baseMapper.search(id, request); } + + @Override + public QuotationUserPlanModelItem getEffectiveForUser(Long modelId,Integer userType, Integer userId) { + return baseMapper.getEffectiveForUser(modelId,userType, userId); + } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingCartItemMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingCartItemMapper.xml index e8715c24..441c7504 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingCartItemMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingCartItemMapper.xml @@ -2,4 +2,12 @@ + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingOrderMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingOrderMapper.xml index c43c961a..a8c23045 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingOrderMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationShoppingOrderMapper.xml @@ -2,4 +2,28 @@ - + + + + \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationUserPlanModelItemMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationUserPlanModelItemMapper.xml index b9f26bb9..2737bfc6 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationUserPlanModelItemMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationUserPlanModelItemMapper.xml @@ -18,4 +18,12 @@ and pm.no like CONCAT('%', #{request.no}, '%') + +