联调部分。

master
Tom Li 2 weeks ago
parent ad2f15b114
commit f0be49f93a
  1. 1
      src/main/java/org/springblade/Application.java
  2. 27
      src/main/java/org/springblade/modules/jinchao/constant/BaseCol.java
  3. 18
      src/main/java/org/springblade/modules/jinchao/constant/ContactConst.java
  4. 4
      src/main/java/org/springblade/modules/jinchao/controller/BizPriceController.java
  5. 31
      src/main/java/org/springblade/modules/jinchao/controller/ContactController.java
  6. 67
      src/main/java/org/springblade/modules/jinchao/controller/CustomerController.java
  7. 39
      src/main/java/org/springblade/modules/jinchao/controller/ProductController.java
  8. 14
      src/main/java/org/springblade/modules/jinchao/controller/ProductObjController.java
  9. 82
      src/main/java/org/springblade/modules/jinchao/controller/UserExController.java
  10. 3
      src/main/java/org/springblade/modules/jinchao/mapper/ContactMapper.xml
  11. 13
      src/main/java/org/springblade/modules/jinchao/mapper/CustomerMapper.java
  12. 52
      src/main/java/org/springblade/modules/jinchao/mapper/CustomerMapper.xml
  13. 2
      src/main/java/org/springblade/modules/jinchao/package-info.java
  14. 2
      src/main/java/org/springblade/modules/jinchao/pojo/dto/ProductObjDTO.java
  15. 6
      src/main/java/org/springblade/modules/jinchao/pojo/entity/ContactEntity.java
  16. 1
      src/main/java/org/springblade/modules/jinchao/pojo/entity/CustomerEntity.java
  17. 42
      src/main/java/org/springblade/modules/jinchao/pojo/entity/ProductObjEntity.java
  18. 34
      src/main/java/org/springblade/modules/jinchao/pojo/request/CustomerSearch.java
  19. 15
      src/main/java/org/springblade/modules/jinchao/pojo/request/CustomerSubmit.java
  20. 22
      src/main/java/org/springblade/modules/jinchao/pojo/vo/CustomerVO.java
  21. 2
      src/main/java/org/springblade/modules/jinchao/pojo/vo/ProductObjVO.java
  22. 14
      src/main/java/org/springblade/modules/jinchao/pojo/vo/ProductVO.java
  23. 4
      src/main/java/org/springblade/modules/jinchao/service/IBizPriceService.java
  24. 1
      src/main/java/org/springblade/modules/jinchao/service/ICatalogService.java
  25. 1
      src/main/java/org/springblade/modules/jinchao/service/IContactService.java
  26. 16
      src/main/java/org/springblade/modules/jinchao/service/ICustomerService.java
  27. 2
      src/main/java/org/springblade/modules/jinchao/service/IProductObjService.java
  28. 12
      src/main/java/org/springblade/modules/jinchao/service/IProductService.java
  29. 9
      src/main/java/org/springblade/modules/jinchao/service/impl/BizPriceServiceImpl.java
  30. 100
      src/main/java/org/springblade/modules/jinchao/service/impl/CustomerServiceImpl.java
  31. 67
      src/main/java/org/springblade/modules/jinchao/service/impl/ProductServiceImpl.java
  32. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/BizPriceWrapper.java
  33. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/CatalogWrapper.java
  34. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/ContactWrapper.java
  35. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/CustomerWrapper.java
  36. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/ProductObjWrapper.java
  37. 2
      src/main/java/org/springblade/modules/jinchao/wrapper/ProductWrapper.java

@ -44,6 +44,5 @@ public class Application {
public static void main(String[] args) {
BladeApplication.run(CommonConstant.APPLICATION_NAME, Application.class, args);
}
}

@ -0,0 +1,27 @@
package org.springblade.modules.jinchao.constant;
/**
* 通用字段字段名
*/
public interface BaseCol {
String ID = "id";
String CREATE_USER = "create_user";
String CREATE_TIME = "create_time";
String CREATE_DEPT = "create_dept";
String UPDATE_USER = "update_user";
String UPDATE_TIME = "update_time";
String STATUS = "status";
String IS_DELETE = "is_delete";
String SORT = "sort";
String TENANT_ID = "tenant_id";
}

@ -0,0 +1,18 @@
package org.springblade.modules.jinchao.constant;
public interface ContactConst {
/**
* 主要
*/
Integer TYPE_MAIN = 1;
/**
* 次要
*/
Integer TYPE_SECONDARY = 2;
String DICT_1 = "dict_1";
String DICT_2 = "dict_2";
}

@ -86,7 +86,7 @@ public class BizPriceController extends BladeController {
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入bizPrice")
@Operation(summary = "list分页", description = "传入bizPrice")
public R<IPage<BizPriceVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> bizPrice, Query query) {
IPage<BizPriceEntity> pages = bizPriceService.page(Condition.getPage(query), Condition.getQueryWrapper(bizPrice, BizPriceEntity.class));
return R.data(BizPriceWrapper.build().pageVO(pages));
@ -97,7 +97,7 @@ public class BizPriceController extends BladeController {
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入bizPrice")
@Operation(summary = "page分页", description = "传入bizPrice")
public R<IPage<BizPriceVO>> page(BizPriceVO bizPrice, Query query) {
IPage<BizPriceVO> pages = bizPriceService.selectBizPricePage(Condition.getPage(query), bizPrice);
return R.data(pages);

@ -29,9 +29,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
@ -49,7 +52,6 @@ import org.springblade.modules.jinchao.service.IContactService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import java.util.Map;
import java.util.List;
@ -63,12 +65,15 @@ import jakarta.servlet.http.HttpServletResponse;
* @since 2025-12-01
*/
@RestController
@AllArgsConstructor
@RequestMapping("jinchao/contact")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Tag(name = "[客户联系人]", description = "[客户联系人]接口")
public class ContactController extends BladeController {
private final IContactService contactService;
@Resource
private IContactService service;
/**
* [客户联系人] 详情
@ -77,7 +82,7 @@ public class ContactController extends BladeController {
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入contact")
public R<ContactVO> detail(ContactEntity contact) {
ContactEntity detail = contactService.getOne(Condition.getQueryWrapper(contact));
ContactEntity detail = service.getOne(Condition.getQueryWrapper(contact));
return R.data(ContactWrapper.build().entityVO(detail));
}
@ -86,9 +91,9 @@ public class ContactController extends BladeController {
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入contact")
@Operation(summary = "list分页", description = "传入contact")
public R<IPage<ContactVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> contact, Query query) {
IPage<ContactEntity> pages = contactService.page(Condition.getPage(query), Condition.getQueryWrapper(contact, ContactEntity.class));
IPage<ContactEntity> pages = service.page(Condition.getPage(query), Condition.getQueryWrapper(contact, ContactEntity.class));
return R.data(ContactWrapper.build().pageVO(pages));
}
@ -97,9 +102,9 @@ public class ContactController extends BladeController {
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入contact")
@Operation(summary = "page分页", description = "传入contact")
public R<IPage<ContactVO>> page(ContactVO contact, Query query) {
IPage<ContactVO> pages = contactService.selectContactPage(Condition.getPage(query), contact);
IPage<ContactVO> pages = service.selectContactPage(Condition.getPage(query), contact);
return R.data(pages);
}
@ -111,7 +116,7 @@ public class ContactController extends BladeController {
@Operation(summary = "新增", description = "传入contact")
public R save(@Valid @RequestBody ContactEntity contact) {
contact.setId(null);
return R.status(contactService.save(contact));
return R.status(service.save(contact));
}
/**
@ -121,7 +126,7 @@ public class ContactController extends BladeController {
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入contact")
public R update(@Valid @RequestBody ContactEntity contact) {
return R.status(contactService.updateById(contact));
return R.status(service.updateById(contact));
}
/**
@ -131,7 +136,7 @@ public class ContactController extends BladeController {
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入contact")
public R submit(@Valid @RequestBody ContactEntity contact) {
return R.status(contactService.saveOrUpdate(contact));
return R.status(service.saveOrUpdate(contact));
}
/**
@ -141,7 +146,7 @@ public class ContactController extends BladeController {
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(contactService.deleteLogic(Func.toLongList(ids)));
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
@ -158,7 +163,7 @@ public class ContactController extends BladeController {
// queryWrapper.lambda().eq(Contact::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(ContactEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<ContactExcel> list = contactService.exportContact(queryWrapper);
List<ContactExcel> list = service.exportContact(queryWrapper);
ExcelUtil.export(response, "[客户联系人]数据" + DateUtil.time(), "[客户联系人]数据表", list, ContactExcel.class);
}

@ -37,7 +37,11 @@ import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.jinchao.constant.BaseCol;
import org.springblade.modules.jinchao.pojo.request.CustomerSearch;
import org.springblade.modules.jinchao.pojo.request.CustomerSubmit;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -49,10 +53,10 @@ import org.springblade.modules.jinchao.service.ICustomerService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import java.util.Map;
import java.util.List;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
@ -68,7 +72,7 @@ import jakarta.servlet.http.HttpServletResponse;
@Tag(name = "[客户]", description = "[客户]接口")
public class CustomerController extends BladeController {
private final ICustomerService customerService;
private final ICustomerService service;
/**
* [客户] 详情
@ -77,7 +81,7 @@ public class CustomerController extends BladeController {
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入customer")
public R<CustomerVO> detail(CustomerEntity customer) {
CustomerEntity detail = customerService.getOne(Condition.getQueryWrapper(customer));
CustomerEntity detail = service.getOne(Condition.getQueryWrapper(customer));
return R.data(CustomerWrapper.build().entityVO(detail));
}
@ -86,10 +90,18 @@ public class CustomerController extends BladeController {
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入customer")
public R<IPage<CustomerVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> customer, Query query) {
IPage<CustomerEntity> pages = customerService.page(Condition.getPage(query), Condition.getQueryWrapper(customer, CustomerEntity.class));
return R.data(CustomerWrapper.build().pageVO(pages));
@Operation(summary = "list分页", description = "传入customer")
public R<IPage<CustomerVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> customer
, Query query) {
IPage<CustomerEntity> pages = service.page(
Condition.getPage(query),
Condition.getQueryWrapper(customer, CustomerEntity.class)
.orderByDesc(BaseCol.UPDATE_TIME)
.orderByDesc(BaseCol.CREATE_TIME)
);
IPage<CustomerVO> pagesVo = CustomerWrapper.build().pageVO(pages);
pagesVo.getRecords().stream().peek(service::setVoValue).collect(Collectors.toList());
return R.data(pagesVo);
}
/**
@ -97,21 +109,21 @@ public class CustomerController extends BladeController {
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入customer")
@Operation(summary = "page分页", description = "传入customer")
public R<IPage<CustomerVO>> page(CustomerVO customer, Query query) {
IPage<CustomerVO> pages = customerService.selectCustomerPage(Condition.getPage(query), customer);
IPage<CustomerVO> pages = service.selectCustomerPage(Condition.getPage(query), customer);
return R.data(pages);
}
/**
* [客户] 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入customer")
public R save(@Valid @RequestBody CustomerEntity customer) {
customer.setId(null);
return R.status(customerService.save(customer));
@Operation(summary = "新增", description = "")
public R save(@Valid @RequestBody CustomerSubmit submit) {
return service.save(submit);
}
/**
@ -119,9 +131,9 @@ public class CustomerController extends BladeController {
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入customer")
public R update(@Valid @RequestBody CustomerEntity customer) {
return R.status(customerService.updateById(customer));
@Operation(summary = "修改", description = "")
public R update(@Valid @RequestBody CustomerSubmit submit) {
return service.update(submit);
}
/**
@ -131,7 +143,7 @@ public class CustomerController extends BladeController {
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入customer")
public R submit(@Valid @RequestBody CustomerEntity customer) {
return R.status(customerService.saveOrUpdate(customer));
return R.status(service.saveOrUpdate(customer));
}
/**
@ -141,7 +153,7 @@ public class CustomerController extends BladeController {
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(customerService.deleteLogic(Func.toLongList(ids)));
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
@ -158,8 +170,25 @@ public class CustomerController extends BladeController {
// queryWrapper.lambda().eq(Customer::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(CustomerEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<CustomerExcel> list = customerService.exportCustomer(queryWrapper);
List<CustomerExcel> list = service.exportCustomer(queryWrapper);
ExcelUtil.export(response, "[客户]数据" + DateUtil.time(), "[客户]数据表", list, CustomerExcel.class);
}
/**
* [客户] search分页
*/
@GetMapping("/search")
@ApiOperationSupport(order = 10)
@Operation(summary = "search分页", description = "")
public R<IPage<CustomerVO>> page(CustomerSearch search, Query query) {
IPage<CustomerVO> pages = service.search(Condition.getPage(query), search);
return R.data(pages);
}
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 11)
@Operation(summary = "[客户]选择", description = "")
public R<List<CustomerEntity>> listForSelect() {
return service.listForSelect();
}
}

@ -33,11 +33,12 @@ import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.jinchao.constant.BaseCol;
import org.springblade.modules.jinchao.constant.ProductConst;
import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -52,6 +53,7 @@ import org.springblade.core.excel.util.ExcelUtil;
import java.util.Map;
import java.util.List;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
@ -67,7 +69,7 @@ import jakarta.servlet.http.HttpServletResponse;
@Tag(name = "[产品]", description = "[产品]接口")
public class ProductController extends BladeController {
private final IProductService productService;
private final IProductService service;
/**
* [产品] 详情
@ -76,7 +78,7 @@ public class ProductController extends BladeController {
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入product")
public R<ProductVO> detail(ProductEntity product) {
ProductEntity detail = productService.getOne(Condition.getQueryWrapper(product));
ProductEntity detail = service.getOne(Condition.getQueryWrapper(product));
return R.data(ProductWrapper.build().entityVO(detail));
}
@ -85,10 +87,10 @@ public class ProductController extends BladeController {
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入product")
public R<IPage<ProductVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> product, Query query) {
IPage<ProductEntity> pages = productService.page(Condition.getPage(query), Condition.getQueryWrapper(product, ProductEntity.class));
return R.data(ProductWrapper.build().pageVO(pages));
@Operation(summary = "list分页", description = "传入product")
public R<IPage<ProductVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> product,
Query query) {
return service.list(product,query);
}
/**
@ -96,9 +98,9 @@ public class ProductController extends BladeController {
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入product")
@Operation(summary = "page分页", description = "传入product")
public R<IPage<ProductVO>> page(ProductVO product, Query query) {
IPage<ProductVO> pages = productService.selectProductPage(Condition.getPage(query), product);
IPage<ProductVO> pages = service.selectProductPage(Condition.getPage(query), product);
return R.data(pages);
}
@ -110,7 +112,7 @@ public class ProductController extends BladeController {
@Operation(summary = "新增", description = "传入product")
public R save(@Valid @RequestBody ProductEntity product) {
product.setId(null);
return R.status(productService.save(product));
return R.status(service.save(product));
}
/**
@ -120,7 +122,7 @@ public class ProductController extends BladeController {
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入product")
public R update(@Valid @RequestBody ProductEntity product) {
return R.status(productService.updateById(product));
return R.status(service.updateById(product));
}
/**
@ -130,7 +132,14 @@ public class ProductController extends BladeController {
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入product")
public R submit(@Valid @RequestBody ProductEntity product) {
return R.status(productService.saveOrUpdate(product));
return R.status(service.saveOrUpdate(product));
}
@PostMapping("/submitBat")
@ApiOperationSupport(order = 6)
@Operation(summary = "批量新增或修改", description = "ProductEntity List")
public R submit(@Valid @RequestBody List<ProductEntity> products) {
return R.status(service.saveOrUpdateBatch(products));
}
/**
@ -140,14 +149,12 @@ public class ProductController extends BladeController {
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(productService.deleteLogic(Func.toLongList(ids)));
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export-product")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入product")
@ -157,7 +164,7 @@ public class ProductController extends BladeController {
// queryWrapper.lambda().eq(Product::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(ProductEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<ProductExcel> list = productService.exportProduct(queryWrapper);
List<ProductExcel> list = service.exportProduct(queryWrapper);
ExcelUtil.export(response, "[产品]数据" + DateUtil.time(), "[产品]数据表", list, ProductExcel.class);
}
}

@ -29,9 +29,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
@ -63,12 +66,15 @@ import jakarta.servlet.http.HttpServletResponse;
* @since 2025-12-01
*/
@RestController
@AllArgsConstructor
@RequestMapping("jinchao/productObj")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Tag(name = "[产品实物]", description = "[产品实物]接口")
public class ProductObjController extends BladeController {
private final IProductObjService productObjService;
@Resource
private IProductObjService productObjService;
/**
* [产品实物] 详情
@ -86,7 +92,7 @@ public class ProductObjController extends BladeController {
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入productObj")
@Operation(summary = "list分页", description = "传入productObj")
public R<IPage<ProductObjVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> productObj, Query query) {
IPage<ProductObjEntity> pages = productObjService.page(Condition.getPage(query), Condition.getQueryWrapper(productObj, ProductObjEntity.class));
return R.data(ProductObjWrapper.build().pageVO(pages));
@ -97,7 +103,7 @@ public class ProductObjController extends BladeController {
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入productObj")
@Operation(summary = "page分页", description = "传入productObj")
public R<IPage<ProductObjVO>> page(ProductObjVO productObj, Query query) {
IPage<ProductObjVO> pages = productObjService.selectProductObjPage(Condition.getPage(query), productObj);
return R.data(pages);

@ -0,0 +1,82 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.modules.jinchao.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IUserSearchService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* [产品] 控制器
*
* @author BladeX
* @since 2025-12-01
*/
@RestController
@RequestMapping("jinchao/userEx")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Tag(name = "[User扩展]", description = "[User扩展]接口")
public class UserExController extends BladeController {
@Resource
private IUserSearchService userSearchService;
/**
* 业务员id
*/
public static final Long SALE_ROLE_ID = 1995340821473792002L;
@GetMapping("/listByRole")
@ApiOperationSupport(order = 1)
@Operation(summary = "listByRole", description = "listByRole")
public R<List<User>> listByRole(@RequestParam Long roleId) {
List<User> list = userSearchService.listByRole(List.of(roleId));
list.forEach(user -> {
user.setPassword("");
});
return R.data(list);
}
@GetMapping("/listBySaleRole")
@ApiOperationSupport(order = 1)
@Operation(summary = "listBySaleRole", description = "listBySaleRole")
public R<List<User>> listBySaleRole() {
return listByRole(SALE_ROLE_ID);
}
}

@ -8,6 +8,7 @@
type="org.springblade.modules.jinchao.pojo.entity.ContactEntity">
<result column="id" property="id"/>
<result column="tenant_id" property="tenantId"/>
<result column="customer_id" property="customerId"/>
<result column="contact_type" property="contactType"/>
<result column="name" property="name"/>
<result column="create_user" property="createUser"/>
@ -23,14 +24,12 @@
<result column="sort" property="sort"/>
</resultMap>
<select id="selectContactPage" resultMap="contactResultMap">
select *
from jc_contact
where is_deleted = 0
</select>
<select id="exportContact" resultType="org.springblade.modules.jinchao.excel.ContactExcel">
SELECT *
FROM jc_contact ${ew.customSqlSegment}

@ -26,12 +26,14 @@
package org.springblade.modules.jinchao.mapper;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import org.springblade.modules.jinchao.pojo.request.CustomerSearch;
import org.springblade.modules.jinchao.pojo.vo.CustomerVO;
import org.springblade.modules.jinchao.excel.CustomerExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -46,10 +48,10 @@ public interface CustomerMapper extends BaseMapper<CustomerEntity> {
* 自定义分页
*
* @param page 分页参数
* @param customer 查询参数
* @param q 查询参数
* @return List<CustomerVO>
*/
List<CustomerVO> selectCustomerPage(IPage page, CustomerVO customer);
List<CustomerVO> selectCustomerPage(IPage page, CustomerVO q);
/**
@ -60,4 +62,11 @@ public interface CustomerMapper extends BaseMapper<CustomerEntity> {
*/
List<CustomerExcel> exportCustomer(@Param("ew") Wrapper<CustomerEntity> queryWrapper);
/**
*
* @param page
* @param search
* @return
*/
List<CustomerVO> searchPage(IPage page, @Param("q") CustomerSearch search);
}

@ -19,23 +19,67 @@
<result column="status" property="status"/>
<result column="is_deleted" property="isDeleted"/>
<result column="country" property="country"/>
<result column="address_1" property="address1"/>
<result column="address_2" property="address2"/>
<result column="address1" property="address1"/>
<result column="address2" property="address2"/>
<result column="remark" property="remark"/>
<result column="from_type" property="fromType"/>
<result column="last_order_id" property="lastOrderId"/>
</resultMap>
<select id="selectCustomerPage" resultMap="customerResultMap">
select *
from jc_customer
where is_deleted = 0
</select>
<select id="exportCustomer" resultType="org.springblade.modules.jinchao.excel.CustomerExcel">
SELECT *
FROM jc_customer ${ew.customSqlSegment}
</select>
<select id="searchPage"
resultType="org.springblade.modules.jinchao.pojo.vo.CustomerVO">
SELECT DISTINCT c.id AS id,
c.code AS code,
c.tenant_id AS tenant_id,
c.company_name AS company_name,
c.country AS country,
c.from_type AS from_type,
c.address_1 AS address_1,
c.address_2 AS address_2,
c.create_user AS create_user,
c.create_time AS create_time,
c.create_dept AS create_dept,
c.update_user AS update_user,
c.update_time AS update_time
FROM jc_customer c
LEFT JOIN jc_contact ct ON c.id = ct.customer_id
AND ct.is_deleted = 0
LEFT JOIN blade_user u ON c.create_user = u.id
AND u.is_deleted = 0
WHERE c.is_deleted = 0
<if test="q.companyName != null and q.companyName != ''">
AND (c.company_name LIKE CONCAT('%', ${q.companyName}, '%'))
</if>
<if test="q.country != null and q.country != ''">
AND (c.country = ${q.country})
</if>
<if test="q.contactName != null and q.contactName != ''">
AND (ct.name LIKE CONCAT('%', ${q.contactName}, '%'))
</if>
<if test="q.createUserName != null and q.createUserName != ''">
AND (u.real_name LIKE CONCAT('%', ${q.createUserName}, '%'))
</if>
GROUP BY c.id,
c.company_name,
c.country,
c.address_1,
c.address_2,
c.status,
c.create_time,
u.real_name,
u.dept_id
ORDER BY c.id ASC,
c.update_time DESC
</select>
</mapper>

@ -1,4 +1,4 @@
/**
* 金巢添加部分
* 金巢模块添加部分
*/
package org.springblade.modules.jinchao;

@ -34,7 +34,7 @@ import java.io.Serial;
* [产品实物] 数据传输对象实体类
*
* @author BladeX
* @since 2025-12-01
* @since 2025-12-02
*/
@Data
@EqualsAndHashCode(callSuper = true)

@ -47,6 +47,11 @@ public class ContactEntity extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* [客户]id
*/
@Schema(description = "[客户]id")
private Long customerId;
/**
* [客户联系人]类型-[1]:主要;[2]次要;
*/
@ -77,5 +82,4 @@ public class ContactEntity extends TenantEntity {
*/
@Schema(description = "排序")
private Integer sort;
}

@ -92,5 +92,4 @@ public class CustomerEntity extends TenantEntity {
*/
@Schema(description = "最后一个[订单]id")
private Long lastOrderId;
}

@ -36,7 +36,7 @@ import java.io.Serial;
* [产品实物] 实体类
*
* @author BladeX
* @since 2025-12-01
* @since 2025-12-02
*/
@Data
@TableName("jc_product_obj")
@ -61,41 +61,21 @@ public class ProductObjEntity extends TenantEntity {
* 中文名称
*/
@Schema(description = "中文名称")
private String nameCn;
private String name;
/**
* 英文名称
* 规格
*/
@Schema(description = "英文名称")
private String nameEn;
@Schema(description = "规格")
private String spec;
/**
* 中文规格
* 单位
*/
@Schema(description = "中文规格")
private String specCn;
@Schema(description = "单位")
private String unit;
/**
* 英文规格
* 备注
*/
@Schema(description = "英文规格")
private String specEn;
/**
* 中文单位
*/
@Schema(description = "中文单位")
private String unitCn;
/**
* 英文单位
*/
@Schema(description = "英文单位")
private String unitEn;
/**
* 中文备注
*/
@Schema(description = "中文备注")
private String remarkCn;
/**
* 英文备注
*/
@Schema(description = "英文备注")
private String remarkEn;
@Schema(description = "备注")
private String remark;
}

@ -0,0 +1,34 @@
package org.springblade.modules.jinchao.pojo.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode()
public class CustomerSearch {
/**
* 客户公司名称
*/
@Schema(description = "客户公司名称")
private String companyName;
/**
* 所属国家
*/
@Schema(description = "所属国家")
private String country;
/**
* 联系人名称
*/
@Schema(description = "联系人名称")
private String contactName;
/**
* 创建[用户]用户名
*/
@Schema(description = "创建[用户]用户名")
private String createUserName;
}

@ -0,0 +1,15 @@
package org.springblade.modules.jinchao.pojo.request;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.jinchao.pojo.entity.ContactEntity;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
public class CustomerSubmit extends CustomerEntity {
private List<ContactEntity> contacts;
}

@ -25,9 +25,12 @@
*/
package org.springblade.modules.jinchao.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.modules.jinchao.pojo.entity.ContactEntity;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
@ -39,7 +42,26 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class CustomerVO extends CustomerEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 所属国家dict
*/
@Schema(description = "所属国家dict")
private String countryValue;
/**
* 客户来源dict
*/
@Schema(description = "客户来源dict")
private String fromTypeValue;
/**
* 主要[客户联系人]
*/
@Schema(description = "主要[客户联系人]")
private ContactEntity contactMain;
}

@ -34,7 +34,7 @@ import java.io.Serial;
* [产品实物] 视图实体类
*
* @author BladeX
* @since 2025-12-01
* @since 2025-12-02
*/
@Data
@EqualsAndHashCode(callSuper = true)

@ -28,6 +28,7 @@ package org.springblade.modules.jinchao.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.jinchao.constant.ProductConst;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity;
import org.springblade.modules.jinchao.pojo.entity.ProductObjEntity;
@ -49,12 +50,12 @@ public class ProductVO extends ProductEntity {
* [1]标准;[2]客户特定价
*/
@Schema(description = "[1]标准;[2]客户特定价")
private Integer type;
private Integer bizType;
/**
* [产品]id
* [业务价格]id
*/
@Schema(description = "[产品]id")
private Long productId;
@Schema(description = "[业务价格]id")
private Long bizPriceId;
/**
* 业务员[用户]id
*/
@ -70,4 +71,9 @@ public class ProductVO extends ProductEntity {
*/
@Schema(description = "特定用户价格")
private Double bizPrice;
/**
* 特定价备注
*/
@Schema(description = "特定价备注")
private String bizRemark;
}

@ -31,6 +31,7 @@ import org.springblade.modules.jinchao.pojo.vo.BizPriceVO;
import org.springblade.modules.jinchao.excel.BizPriceExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
@ -43,7 +44,7 @@ public interface IBizPriceService extends BaseService<BizPriceEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param page 分页参数
* @param bizPrice 查询参数
* @return IPage<BizPriceVO>
*/
@ -58,4 +59,5 @@ public interface IBizPriceService extends BaseService<BizPriceEntity> {
*/
List<BizPriceExcel> exportBizPrice(Wrapper<BizPriceEntity> queryWrapper);
List<BizPriceEntity> listByProductId(Long productId);
}

@ -57,5 +57,4 @@ public interface ICatalogService extends BaseService<CatalogEntity> {
* @return List<CatalogExcel>
*/
List<CatalogExcel> exportCatalog(Wrapper<CatalogEntity> queryWrapper);
}

@ -57,5 +57,4 @@ public interface IContactService extends BaseService<ContactEntity> {
* @return List<ContactExcel>
*/
List<ContactExcel> exportContact(Wrapper<ContactEntity> queryWrapper);
}

@ -26,11 +26,15 @@
package org.springblade.modules.jinchao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import org.springblade.modules.jinchao.pojo.request.CustomerSearch;
import org.springblade.modules.jinchao.pojo.request.CustomerSubmit;
import org.springblade.modules.jinchao.pojo.vo.CustomerVO;
import org.springblade.modules.jinchao.excel.CustomerExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
@ -43,13 +47,12 @@ public interface ICustomerService extends BaseService<CustomerEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param page 分页参数
* @param customer 查询参数
* @return IPage<CustomerVO>
*/
IPage<CustomerVO> selectCustomerPage(IPage<CustomerVO> page, CustomerVO customer);
/**
* 导出数据
*
@ -58,4 +61,13 @@ public interface ICustomerService extends BaseService<CustomerEntity> {
*/
List<CustomerExcel> exportCustomer(Wrapper<CustomerEntity> queryWrapper);
R save(CustomerSubmit submit);
R update(CustomerSubmit submit);
IPage<CustomerVO> search(IPage<CustomerVO> page, CustomerSearch search);
R<List<CustomerEntity>> listForSelect();
void setVoValue(CustomerVO vo);
}

@ -27,6 +27,7 @@ package org.springblade.modules.jinchao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.modules.jinchao.pojo.entity.ProductObjEntity;
import org.springblade.modules.jinchao.pojo.vo.CustomerVO;
import org.springblade.modules.jinchao.pojo.vo.ProductObjVO;
import org.springblade.modules.jinchao.excel.ProductObjExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -57,5 +58,4 @@ public interface IProductObjService extends BaseService<ProductObjEntity> {
* @return List<ProductObjExcel>
*/
List<ProductObjExcel> exportProductObj(Wrapper<ProductObjEntity> queryWrapper);
}

@ -26,12 +26,19 @@
package org.springblade.modules.jinchao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import io.swagger.v3.oas.annotations.Parameter;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity;
import org.springblade.modules.jinchao.pojo.vo.CustomerVO;
import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import org.springblade.modules.jinchao.excel.ProductExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
/**
* [产品] 服务类
@ -43,7 +50,7 @@ public interface IProductService extends BaseService<ProductEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param page 分页参数
* @param product 查询参数
* @return IPage<ProductVO>
*/
@ -58,4 +65,7 @@ public interface IProductService extends BaseService<ProductEntity> {
*/
List<ProductExcel> exportProduct(Wrapper<ProductEntity> queryWrapper);
R<IPage<ProductVO>> list(Map<String, Object> product, Query query);
void setVoValue(ProductVO vo);
}

@ -25,6 +25,7 @@
*/
package org.springblade.modules.jinchao.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springblade.modules.jinchao.pojo.entity.BizPriceEntity;
import org.springblade.modules.jinchao.pojo.vo.BizPriceVO;
import org.springblade.modules.jinchao.excel.BizPriceExcel;
@ -34,6 +35,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
@ -60,4 +62,11 @@ public class BizPriceServiceImpl extends BaseServiceImpl<BizPriceMapper, BizPric
return bizPriceList;
}
@Override
public List<BizPriceEntity> listByProductId(Long productId) {
return baseMapper.selectList(
new QueryWrapper<BizPriceEntity>()
.eq("product_id", productId)
);
}
}

@ -25,16 +25,31 @@
*/
package org.springblade.modules.jinchao.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.constant.BaseCol;
import org.springblade.modules.jinchao.constant.ContactConst;
import org.springblade.modules.jinchao.pojo.entity.ContactEntity;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import org.springblade.modules.jinchao.pojo.request.CustomerSearch;
import org.springblade.modules.jinchao.pojo.request.CustomerSubmit;
import org.springblade.modules.jinchao.pojo.vo.CustomerVO;
import org.springblade.modules.jinchao.excel.CustomerExcel;
import org.springblade.modules.jinchao.mapper.CustomerMapper;
import org.springblade.modules.jinchao.service.IContactService;
import org.springblade.modules.jinchao.service.ICustomerService;
import org.springblade.modules.system.service.IDictService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
import java.util.Objects;
/**
* [客户] 服务实现类
@ -43,14 +58,23 @@ import java.util.List;
* @since 2025-12-01
*/
@Service
@Data
@EqualsAndHashCode(callSuper = true)
public class CustomerServiceImpl extends BaseServiceImpl<CustomerMapper, CustomerEntity> implements ICustomerService {
@Resource
private CustomerMapper mapper;
@Resource
private IContactService contactService;
@Resource
private IDictService dictService;
@Override
public IPage<CustomerVO> selectCustomerPage(IPage<CustomerVO> page, CustomerVO customer) {
return page.setRecords(baseMapper.selectCustomerPage(page, customer));
}
@Override
public List<CustomerExcel> exportCustomer(Wrapper<CustomerEntity> queryWrapper) {
List<CustomerExcel> customerList = baseMapper.exportCustomer(queryWrapper);
@ -60,4 +84,78 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerMapper, Custome
return customerList;
}
@Override
public R save(CustomerSubmit submit) {
submit.setId(null);
if (submit.getContacts() == null || submit.getContacts().isEmpty()) {
return R.fail("contacts为空");
}
CustomerEntity cu = new CustomerEntity();
BeanUtils.copyProperties(submit, cu);
boolean save = save(cu);
for (int i = 0; i < submit.getContacts().size(); i++) {
ContactEntity co = submit.getContacts().get(i);
co.setId(null);
if (i == 1) {
co.setContactType(ContactConst.TYPE_MAIN);
} else {
co.setContactType(ContactConst.TYPE_SECONDARY);
}
co.setSort(i);
co.setCustomerId(cu.getId());
}
contactService.saveBatch(submit.getContacts());
return R.status(save);
}
@Override
public R update(CustomerSubmit submit) {
if (submit.getContacts() == null || submit.getContacts().isEmpty()) {
return R.fail("contacts为空");
}
CustomerEntity cu = new CustomerEntity();
BeanUtils.copyProperties(submit, cu);
boolean save = updateById(cu);
for (int i = 0; i < submit.getContacts().size(); i++) {
ContactEntity co = submit.getContacts().get(i);
co.setCustomerId(cu.getId());
if (co.getSort() == null || co.getSort() == 0L) {
co.setSort(i);
}
if (co.getContactType() == null || co.getContactType() == 0L) {
co.setContactType(ContactConst.TYPE_SECONDARY);
}
}
contactService.saveOrUpdateBatch(submit.getContacts());
return R.status(save);
}
@Override
public IPage<CustomerVO> search(IPage<CustomerVO> page, CustomerSearch search) {
return null;
}
@Override
public R<List<CustomerEntity>> listForSelect() {
return R.data(mapper.selectList(
new QueryWrapper<CustomerEntity>()
.orderByAsc(BaseCol.ID)
));
}
@Override
public void setVoValue(CustomerVO vo) {
vo.setCountryValue(dictService.getValue(ContactConst.DICT_1, vo.getCountry()));
vo.setFromTypeValue(dictService.getValue(ContactConst.DICT_2, vo.getFromType()));
{
ContactEntity contactF = contactService.getOne(
new QueryWrapper<ContactEntity>()
.eq("customer_id", vo.getId())
.eq("contact_type", ContactConst.TYPE_MAIN)
);
if (!Objects.isNull(contactF)) {
vo.setContactMain(contactF);
}
}
}
}

@ -25,16 +25,37 @@
*/
package org.springblade.modules.jinchao.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.constant.BaseCol;
import org.springblade.modules.jinchao.constant.ProductConst;
import org.springblade.modules.jinchao.mapper.BizPriceMapper;
import org.springblade.modules.jinchao.pojo.entity.BizPriceEntity;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity;
import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import org.springblade.modules.jinchao.excel.ProductExcel;
import org.springblade.modules.jinchao.mapper.ProductMapper;
import org.springblade.modules.jinchao.service.IBizPriceService;
import org.springblade.modules.jinchao.service.ICustomerService;
import org.springblade.modules.jinchao.service.IProductService;
import org.springblade.modules.jinchao.wrapper.ProductWrapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.stream.Collectors;
/**
* [产品] 服务实现类
@ -43,14 +64,21 @@ import java.util.List;
* @since 2025-12-01
*/
@Service
@Data
@EqualsAndHashCode(callSuper = true)
@Slf4j
public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEntity> implements IProductService {
@Resource
private IBizPriceService bizPriceService;
@Resource
private ICustomerService customerService;
@Override
public IPage<ProductVO> selectProductPage(IPage<ProductVO> page, ProductVO product) {
return page.setRecords(baseMapper.selectProductPage(page, product));
}
@Override
public List<ProductExcel> exportProduct(Wrapper<ProductEntity> queryWrapper) {
List<ProductExcel> productList = baseMapper.exportProduct(queryWrapper);
@ -60,4 +88,41 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
return productList;
}
@Override
public R<IPage<ProductVO>> list(Map<String, Object> product, Query query) {
IPage<ProductEntity> pages = page(
Condition.getPage(query),
Condition.getQueryWrapper(product, ProductEntity.class).orderByAsc(BaseCol.ID)
);
IPage<ProductVO> pagesVo = ProductWrapper.build().pageVO(pages);
ListIterator<ProductVO> it = pagesVo.getRecords().listIterator();
while (it.hasNext()) {
ProductVO vo = it.next();
vo.setBizType(ProductConst.TYPE_PRICE_STANDARD);
long count = bizPriceService.count(
new QueryWrapper<BizPriceEntity>().eq("product_id", vo.getId())
);
if (count != 0L) {
List<BizPriceEntity> listBP = bizPriceService.listByProductId(vo.getId());
listBP.forEach(bp -> {
log.info("bp = {}",bp);
ProductVO vo2 = new ProductVO();
BeanUtils.copyProperties(vo, vo2);
vo2.setBizType(ProductConst.TYPE_PRICE_CUS);
vo2.setBizPriceId(bp.getId());
BeanUtils.copyProperties(bp, vo2);
vo2.setBizRemark("客户:" + customerService.getById(bp.getCustomerId()).getCompanyName());
it.add(vo2);
});
} else {
log.info("not contain.");
}
}
return R.data(pagesVo);
}
@Override
public void setVoValue(ProductVO vo) {
}
}

@ -54,6 +54,4 @@ public class BizPriceWrapper extends BaseEntityWrapper<BizPriceEntity, BizPriceV
return bizPriceVO;
}
}

@ -54,6 +54,4 @@ public class CatalogWrapper extends BaseEntityWrapper<CatalogEntity, CatalogVO>
return catalogVO;
}
}

@ -54,6 +54,4 @@ public class ContactWrapper extends BaseEntityWrapper<ContactEntity, ContactVO>
return contactVO;
}
}

@ -54,6 +54,4 @@ public class CustomerWrapper extends BaseEntityWrapper<CustomerEntity, CustomerV
return customerVO;
}
}

@ -54,6 +54,4 @@ public class ProductObjWrapper extends BaseEntityWrapper<ProductObjEntity, Produ
return productObjVO;
}
}

@ -54,6 +54,4 @@ public class ProductWrapper extends BaseEntityWrapper<ProductEntity, ProductVO>
return productVO;
}
}

Loading…
Cancel
Save