联调同步。

master
Tom Li 2 weeks ago
parent f0be49f93a
commit 87ad513219
  1. 4
      src/main/java/org/springblade/modules/jinchao/constant/ContactConst.java
  2. 2
      src/main/java/org/springblade/modules/jinchao/constant/ProductConst.java
  3. 13
      src/main/java/org/springblade/modules/jinchao/controller/ContactController.java
  4. 3
      src/main/java/org/springblade/modules/jinchao/controller/CustomerController.java
  5. 75
      src/main/java/org/springblade/modules/jinchao/controller/ProductController.java
  6. 11
      src/main/java/org/springblade/modules/jinchao/controller/ProductObjController.java
  7. 16
      src/main/java/org/springblade/modules/jinchao/mapper/CustomerMapper.xml
  8. 3
      src/main/java/org/springblade/modules/jinchao/mapper/ProductMapper.java
  9. 5
      src/main/java/org/springblade/modules/jinchao/pojo/entity/ProductObjEntity.java
  10. 12
      src/main/java/org/springblade/modules/jinchao/pojo/vo/ProductVO.java
  11. 13
      src/main/java/org/springblade/modules/jinchao/service/IProductService.java
  12. 9
      src/main/java/org/springblade/modules/jinchao/service/impl/CustomerServiceImpl.java
  13. 61
      src/main/java/org/springblade/modules/jinchao/service/impl/ProductServiceImpl.java
  14. 8
      src/main/java/org/springblade/modules/jinchao/wrapper/ProductWrapper.java

@ -12,7 +12,7 @@ public interface ContactConst {
*/ */
Integer TYPE_SECONDARY = 2; Integer TYPE_SECONDARY = 2;
String DICT_1 = "dict_1"; String DICT_CUSTOMER_COUNTRY = "customer_country";
String DICT_2 = "dict_2"; String DICT_CUSTOMER_FROM_TYPE = "customer_from_type";
} }

@ -10,5 +10,5 @@ public interface ProductConst {
/** /**
* 特定价格 * 特定价格
*/ */
Integer TYPE_PRICE_CUS = 2; Integer TYPE_PRICE_CUSTOM = 2;
} }

@ -41,6 +41,7 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.modules.jinchao.constant.ContactConst;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -55,6 +56,7 @@ import org.springblade.core.excel.util.ExcelUtil;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
import java.util.Objects;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -146,10 +148,16 @@ public class ContactController extends BladeController {
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids") @Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(ids))); List<Long> listIds = Func.toLongList(ids);
listIds.forEach(id -> {
ContactEntity c = service.getById(id);
if (Objects.equals(ContactConst.TYPE_MAIN, c.getContactType())) {
R.fail("客户的第一个联系人不允许删除.");
}
});
return R.status(service.deleteLogic(listIds));
} }
/** /**
* 导出数据 * 导出数据
*/ */
@ -166,5 +174,4 @@ public class ContactController extends BladeController {
List<ContactExcel> list = service.exportContact(queryWrapper); List<ContactExcel> list = service.exportContact(queryWrapper);
ExcelUtil.export(response, "[客户联系人]数据" + DateUtil.time(), "[客户联系人]数据表", list, ContactExcel.class); ExcelUtil.export(response, "[客户联系人]数据" + DateUtil.time(), "[客户联系人]数据表", list, ContactExcel.class);
} }
} }

@ -115,7 +115,6 @@ public class CustomerController extends BladeController {
return R.data(pages); return R.data(pages);
} }
/** /**
* [客户] 新增 * [客户] 新增
*/ */
@ -156,11 +155,9 @@ public class CustomerController extends BladeController {
return R.status(service.deleteLogic(Func.toLongList(ids))); return R.status(service.deleteLogic(Func.toLongList(ids)));
} }
/** /**
* 导出数据 * 导出数据
*/ */
@IsAdmin
@GetMapping("/export-customer") @GetMapping("/export-customer")
@ApiOperationSupport(order = 9) @ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入customer") @Operation(summary = "导出数据", description = "传入customer")

@ -37,7 +37,6 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; 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.constant.ProductConst;
import org.springblade.modules.jinchao.pojo.vo.ProductVO; import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -53,7 +52,7 @@ import org.springblade.core.excel.util.ExcelUtil;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.Objects;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -79,7 +78,8 @@ public class ProductController extends BladeController {
@Operation(summary = "详情", description = "传入product") @Operation(summary = "详情", description = "传入product")
public R<ProductVO> detail(ProductEntity product) { public R<ProductVO> detail(ProductEntity product) {
ProductEntity detail = service.getOne(Condition.getQueryWrapper(product)); ProductEntity detail = service.getOne(Condition.getQueryWrapper(product));
return R.data(ProductWrapper.build().entityVO(detail)); ProductVO vo = ProductWrapper.build().entityVO(detail);
return R.data(vo);
} }
/** /**
@ -90,7 +90,7 @@ public class ProductController extends BladeController {
@Operation(summary = "list分页", description = "传入product") @Operation(summary = "list分页", description = "传入product")
public R<IPage<ProductVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> product, public R<IPage<ProductVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> product,
Query query) { Query query) {
return service.list(product,query); return service.list(product, query);
} }
/** /**
@ -100,7 +100,7 @@ public class ProductController extends BladeController {
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@Operation(summary = "page分页", description = "传入product") @Operation(summary = "page分页", description = "传入product")
public R<IPage<ProductVO>> page(ProductVO product, Query query) { public R<IPage<ProductVO>> page(ProductVO product, Query query) {
IPage<ProductVO> pages = service.selectProductPage(Condition.getPage(query), product); IPage<org.springblade.modules.jinchao.pojo.vo.ProductVO> pages = service.selectProductPage(Condition.getPage(query), product);
return R.data(pages); return R.data(pages);
} }
@ -110,9 +110,15 @@ public class ProductController extends BladeController {
@PostMapping("/save") @PostMapping("/save")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入product") @Operation(summary = "新增", description = "传入product")
public R save(@Valid @RequestBody ProductEntity product) { public R save(@Valid @RequestBody ProductVO vo) {
product.setId(null); vo.setId(null);
return R.status(service.save(product)); if (service.existsCode(vo.getCode())) {
return R.fail("已经存在此code");
}
if (service.existsNameCn(vo.getNameCn())) {
return R.fail("已经存在此nameCn");
}
return R.status(service.save(vo));
} }
/** /**
@ -126,20 +132,53 @@ public class ProductController extends BladeController {
} }
/** /**
* [产品] 新增或修改 * [产品] 单条新增或修改
*/ */
@PostMapping("/submit") @PostMapping("/submit")
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入product") @Operation(summary = "新增或修改", description = "传入product")
public R submit(@Valid @RequestBody ProductEntity product) { public R submit(@Valid @RequestBody ProductVO vo) {
return R.status(service.saveOrUpdate(product)); if (vo.getId() == null || vo.getId() == 0L) {
if (service.existsCode(vo.getCode())) {
return R.fail("已经存在此code");
}
if (service.existsNameCn(vo.getNameCn())) {
return R.fail("已经存在此nameCn");
}
}
if (Objects.equals(vo.getBizType(), ProductConst.TYPE_PRICE_CUSTOM)) {
// 跳过
return R.fail("bizType类型错误");
}
return R.status(service.saveOrUpdate(vo));
} }
@PostMapping("/submitBat") @PostMapping("/submitBat")
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@Operation(summary = "批量新增或修改", description = "ProductEntity List") @Operation(summary = "批量新增或修改", description = "ProductEntity List")
public R submit(@Valid @RequestBody List<ProductEntity> products) { public R submitBat(@Valid @RequestBody List<ProductVO> vos) {
return R.status(service.saveOrUpdateBatch(products)); if (vos != null && !vos.isEmpty()) {
for (ProductVO vo : vos) {
if (vo != null && Objects.equals(vo.getBizType(), ProductConst.TYPE_PRICE_CUSTOM)) {
// 跳过
continue;
}
if (Objects.requireNonNull(vo).getId() == null || vo.getId() == 0L) {
// 新增check
if (service.existsCode(vo.getCode())) {
return R.fail("已经存在此code");
}
if (service.existsNameCn(vo.getNameCn())) {
return R.fail("已经存在此nameCn");
}
// 新增
service.save(vo);
} else {
service.updateById(vo);
}
}
}
return R.success();
} }
/** /**
@ -158,7 +197,8 @@ public class ProductController extends BladeController {
@GetMapping("/export-product") @GetMapping("/export-product")
@ApiOperationSupport(order = 9) @ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入product") @Operation(summary = "导出数据", description = "传入product")
public void exportProduct(@Parameter(hidden = true) @RequestParam Map<String, Object> product, BladeUser bladeUser, HttpServletResponse response) { public void exportProduct(@Parameter(hidden = true) @RequestParam Map<String, Object> product,
BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<ProductEntity> queryWrapper = Condition.getQueryWrapper(product, ProductEntity.class); QueryWrapper<ProductEntity> queryWrapper = Condition.getQueryWrapper(product, ProductEntity.class);
//if (!AuthUtil.isAdministrator()) { //if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(Product::getTenantId, bladeUser.getTenantId()); // queryWrapper.lambda().eq(Product::getTenantId, bladeUser.getTenantId());
@ -167,4 +207,11 @@ public class ProductController extends BladeController {
List<ProductExcel> list = service.exportProduct(queryWrapper); List<ProductExcel> list = service.exportProduct(queryWrapper);
ExcelUtil.export(response, "[产品]数据" + DateUtil.time(), "[产品]数据表", list, ProductExcel.class); ExcelUtil.export(response, "[产品]数据" + DateUtil.time(), "[产品]数据表", list, ProductExcel.class);
} }
@PostMapping("/oneKeyMatch")
@ApiOperationSupport(order = 10)
@Operation(summary = "一键匹配", description = "")
public R oneKeyMatch(@Parameter(description = "一键匹配", required = true) @Valid @RequestBody List<ProductVO> list) {
return service.oneKeyMatch(list);
}
} }

@ -140,6 +140,16 @@ public class ProductObjController extends BladeController {
return R.status(productObjService.saveOrUpdate(productObj)); return R.status(productObjService.saveOrUpdate(productObj));
} }
/**
* [产品实物] 批量新增或修改
*/
@PostMapping("/submitBat")
@ApiOperationSupport(order = 6)
@Operation(summary = "批量新增或修改", description = "传入productObj")
public R submitBat(@Valid @RequestBody List<ProductObjEntity> productObjs) {
return R.status(productObjService.saveOrUpdateBatch(productObjs));
}
/** /**
* [产品实物] 删除 * [产品实物] 删除
*/ */
@ -150,7 +160,6 @@ public class ProductObjController extends BladeController {
return R.status(productObjService.deleteLogic(Func.toLongList(ids))); return R.status(productObjService.deleteLogic(Func.toLongList(ids)));
} }
/** /**
* 导出数据 * 导出数据
*/ */

@ -45,8 +45,8 @@
c.company_name AS company_name, c.company_name AS company_name,
c.country AS country, c.country AS country,
c.from_type AS from_type, c.from_type AS from_type,
c.address_1 AS address_1, c.address1 AS address1,
c.address_2 AS address_2, c.address2 AS address2,
c.create_user AS create_user, c.create_user AS create_user,
c.create_time AS create_time, c.create_time AS create_time,
c.create_dept AS create_dept, c.create_dept AS create_dept,
@ -59,22 +59,22 @@
AND u.is_deleted = 0 AND u.is_deleted = 0
WHERE c.is_deleted = 0 WHERE c.is_deleted = 0
<if test="q.companyName != null and q.companyName != ''"> <if test="q.companyName != null and q.companyName != ''">
AND (c.company_name LIKE CONCAT('%', ${q.companyName}, '%')) AND (c.company_name LIKE CONCAT('%', #{q.companyName}, '%'))
</if> </if>
<if test="q.country != null and q.country != ''"> <if test="q.country != null and q.country != ''">
AND (c.country = ${q.country}) AND (c.country = #{q.country})
</if> </if>
<if test="q.contactName != null and q.contactName != ''"> <if test="q.contactName != null and q.contactName != ''">
AND (ct.name LIKE CONCAT('%', ${q.contactName}, '%')) AND (ct.name LIKE CONCAT('%', #{q.contactName}, '%'))
</if> </if>
<if test="q.createUserName != null and q.createUserName != ''"> <if test="q.createUserName != null and q.createUserName != ''">
AND (u.real_name LIKE CONCAT('%', ${q.createUserName}, '%')) AND (u.real_name LIKE CONCAT('%', #{q.createUserName}, '%'))
</if> </if>
GROUP BY c.id, GROUP BY c.id,
c.company_name, c.company_name,
c.country, c.country,
c.address_1, c.address1,
c.address_2, c.address2,
c.status, c.status,
c.create_time, c.create_time,
u.real_name, u.real_name,

@ -26,7 +26,6 @@
package org.springblade.modules.jinchao.mapper; package org.springblade.modules.jinchao.mapper;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity; 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.excel.ProductExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -49,7 +48,7 @@ public interface ProductMapper extends BaseMapper<ProductEntity> {
* @param product 查询参数 * @param product 查询参数
* @return List<ProductVO> * @return List<ProductVO>
*/ */
List<ProductVO> selectProductPage(IPage page, ProductVO product); List<org.springblade.modules.jinchao.pojo.vo.ProductVO> selectProductPage(IPage page, org.springblade.modules.jinchao.pojo.vo.ProductVO product);
/** /**

@ -58,9 +58,9 @@ public class ProductObjEntity extends TenantEntity {
@Schema(description = "[产品]id") @Schema(description = "[产品]id")
private Long productId; private Long productId;
/** /**
* 中文名称 * 产品实物名称
*/ */
@Schema(description = "中文名称") @Schema(description = "产品实物名称")
private String name; private String name;
/** /**
* 规格 * 规格
@ -77,5 +77,4 @@ public class ProductObjEntity extends TenantEntity {
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
} }

@ -28,9 +28,7 @@ package org.springblade.modules.jinchao.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; 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.ProductEntity;
import org.springblade.modules.jinchao.pojo.entity.ProductObjEntity;
import java.io.Serial; import java.io.Serial;
@ -61,11 +59,21 @@ public class ProductVO extends ProductEntity {
*/ */
@Schema(description = "业务员[用户]id") @Schema(description = "业务员[用户]id")
private Long saleUserId; private Long saleUserId;
/**
* 业务员[用户]名称
*/
@Schema(description = "业务员[用户]名称")
private String saleUserRealName;
/** /**
* [客户]id * [客户]id
*/ */
@Schema(description = "[客户]id") @Schema(description = "[客户]id")
private Long customerId; private Long customerId;
/**
* [客户]公司名称
*/
@Schema(description = "[客户]公司名称")
private String customerCompanyName;
/** /**
* 特定用户价格 * 特定用户价格
*/ */

@ -26,16 +26,13 @@
package org.springblade.modules.jinchao.service; package org.springblade.modules.jinchao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity; 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 org.springblade.modules.jinchao.excel.ProductExcel;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springframework.web.bind.annotation.RequestParam; import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -54,7 +51,7 @@ public interface IProductService extends BaseService<ProductEntity> {
* @param product 查询参数 * @param product 查询参数
* @return IPage<ProductVO> * @return IPage<ProductVO>
*/ */
IPage<ProductVO> selectProductPage(IPage<ProductVO> page, ProductVO product); IPage<org.springblade.modules.jinchao.pojo.vo.ProductVO> selectProductPage(IPage<org.springblade.modules.jinchao.pojo.vo.ProductVO> page, org.springblade.modules.jinchao.pojo.vo.ProductVO product);
/** /**
@ -67,5 +64,11 @@ public interface IProductService extends BaseService<ProductEntity> {
R<IPage<ProductVO>> list(Map<String, Object> product, Query query); R<IPage<ProductVO>> list(Map<String, Object> product, Query query);
Boolean existsCode(String code);
Boolean existsNameCn(String nameCn);
void setVoValue(ProductVO vo); void setVoValue(ProductVO vo);
R<List<ProductVO>> oneKeyMatch(List<ProductVO> list);
} }

@ -50,6 +50,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* [客户] 服务实现类 * [客户] 服务实现类
@ -132,7 +133,9 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerMapper, Custome
@Override @Override
public IPage<CustomerVO> search(IPage<CustomerVO> page, CustomerSearch search) { public IPage<CustomerVO> search(IPage<CustomerVO> page, CustomerSearch search) {
return null; IPage<CustomerVO> pagesVo = page.setRecords(baseMapper.searchPage(page, search));
pagesVo.getRecords().stream().peek(this::setVoValue).collect(Collectors.toList());
return pagesVo;
} }
@Override @Override
@ -145,8 +148,8 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerMapper, Custome
@Override @Override
public void setVoValue(CustomerVO vo) { public void setVoValue(CustomerVO vo) {
vo.setCountryValue(dictService.getValue(ContactConst.DICT_1, vo.getCountry())); vo.setCountryValue(dictService.getValue(ContactConst.DICT_CUSTOMER_COUNTRY, vo.getCountry()));
vo.setFromTypeValue(dictService.getValue(ContactConst.DICT_2, vo.getFromType())); vo.setFromTypeValue(dictService.getValue(ContactConst.DICT_CUSTOMER_FROM_TYPE, vo.getFromType()));
{ {
ContactEntity contactF = contactService.getOne( ContactEntity contactF = contactService.getOne(
new QueryWrapper<ContactEntity>() new QueryWrapper<ContactEntity>()

@ -35,26 +35,28 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.modules.jinchao.constant.BaseCol; import org.springblade.modules.jinchao.constant.BaseCol;
import org.springblade.modules.jinchao.constant.ProductConst; 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.BizPriceEntity;
import org.springblade.modules.jinchao.pojo.entity.CustomerEntity;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity; 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.excel.ProductExcel;
import org.springblade.modules.jinchao.mapper.ProductMapper; import org.springblade.modules.jinchao.mapper.ProductMapper;
import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import org.springblade.modules.jinchao.service.IBizPriceService; import org.springblade.modules.jinchao.service.IBizPriceService;
import org.springblade.modules.jinchao.service.ICustomerService; import org.springblade.modules.jinchao.service.ICustomerService;
import org.springblade.modules.jinchao.service.IProductService; import org.springblade.modules.jinchao.service.IProductService;
import org.springblade.modules.jinchao.wrapper.ProductWrapper; import org.springblade.modules.jinchao.wrapper.ProductWrapper;
import org.springblade.modules.system.pojo.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.ListIterator; import java.util.ListIterator;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -69,13 +71,15 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEntity> implements IProductService { public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEntity> implements IProductService {
@Resource
private IUserService userService;
@Resource @Resource
private IBizPriceService bizPriceService; private IBizPriceService bizPriceService;
@Resource @Resource
private ICustomerService customerService; private ICustomerService customerService;
@Override @Override
public IPage<ProductVO> selectProductPage(IPage<ProductVO> page, ProductVO product) { public IPage<org.springblade.modules.jinchao.pojo.vo.ProductVO> selectProductPage(IPage<org.springblade.modules.jinchao.pojo.vo.ProductVO> page, org.springblade.modules.jinchao.pojo.vo.ProductVO product) {
return page.setRecords(baseMapper.selectProductPage(page, product)); return page.setRecords(baseMapper.selectProductPage(page, product));
} }
@ -99,18 +103,27 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
while (it.hasNext()) { while (it.hasNext()) {
ProductVO vo = it.next(); ProductVO vo = it.next();
vo.setBizType(ProductConst.TYPE_PRICE_STANDARD); vo.setBizType(ProductConst.TYPE_PRICE_STANDARD);
// TYPE_PRICE_CUSTOM 数据是拼接上的
long count = bizPriceService.count( long count = bizPriceService.count(
new QueryWrapper<BizPriceEntity>().eq("product_id", vo.getId()) new QueryWrapper<BizPriceEntity>().eq("product_id", vo.getId())
); );
if (count != 0L) { if (count != 0L) {
List<BizPriceEntity> listBP = bizPriceService.listByProductId(vo.getId()); List<BizPriceEntity> listBP = bizPriceService.listByProductId(vo.getId());
listBP.forEach(bp -> { listBP.forEach(bp -> {
log.info("bp = {}",bp); log.info("bp = {}", bp);
ProductVO vo2 = new ProductVO(); ProductVO vo2 = new ProductVO();
BeanUtils.copyProperties(vo, vo2); BeanUtils.copyProperties(vo, vo2);
vo2.setBizType(ProductConst.TYPE_PRICE_CUS); vo2.setBizType(ProductConst.TYPE_PRICE_CUSTOM);
vo2.setBizPriceId(bp.getId()); vo2.setBizPriceId(bp.getId());
BeanUtils.copyProperties(bp, vo2); BeanUtils.copyProperties(bp, vo2);
User u = userService.getById(vo2.getSaleUserId());
if (u != null) {
vo2.setSaleUserRealName(u.getRealName());
}
CustomerEntity c = customerService.getById(vo2.getCustomerId());
if (c != null) {
vo2.setCustomerCompanyName(c.getCompanyName());
}
vo2.setBizRemark("客户:" + customerService.getById(bp.getCustomerId()).getCompanyName()); vo2.setBizRemark("客户:" + customerService.getById(bp.getCustomerId()).getCompanyName());
it.add(vo2); it.add(vo2);
}); });
@ -121,8 +134,44 @@ public class ProductServiceImpl extends BaseServiceImpl<ProductMapper, ProductEn
return R.data(pagesVo); return R.data(pagesVo);
} }
@Override
public Boolean existsCode(String code) {
return baseMapper.exists(new QueryWrapper<ProductEntity>().eq("code", code));
}
@Override
public Boolean existsNameCn(String nameCn) {
return baseMapper.exists(new QueryWrapper<ProductEntity>().eq("name_cn", nameCn));
}
/**
* 不带biz价格
*
* @param vo 传入的对象已经BizType赋值了.
*/
@Override @Override
public void setVoValue(ProductVO vo) { public void setVoValue(ProductVO vo) {
if (vo != null) {
if (Objects.equals(ProductConst.TYPE_PRICE_CUSTOM, vo.getBizType())) {
}
}
}
@Override
public R<List<ProductVO>> oneKeyMatch(List<ProductVO> list) {
List<ProductVO> listNew = list.stream()
.map(vo -> {
ProductEntity pFind = getOne(new QueryWrapper<ProductEntity>().eq("name_cn", vo.getNameCn()));
if (pFind != null) {
ProductVO voNew = new ProductVO();
BeanUtils.copyProperties(pFind, voNew);
voNew.setBizType(ProductConst.TYPE_PRICE_STANDARD);
return voNew;
}
vo.setBizType(ProductConst.TYPE_PRICE_STANDARD);
return vo;
}).collect(Collectors.toList());
return R.data(listNew);
} }
} }

@ -28,7 +28,7 @@ package org.springblade.modules.jinchao.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.jinchao.pojo.entity.ProductEntity; import org.springblade.modules.jinchao.pojo.entity.ProductEntity;
import org.springblade.modules.jinchao.pojo.vo.ProductVO;
import java.util.Objects; import java.util.Objects;
/** /**
@ -37,15 +37,15 @@ import java.util.Objects;
* @author BladeX * @author BladeX
* @since 2025-12-01 * @since 2025-12-01
*/ */
public class ProductWrapper extends BaseEntityWrapper<ProductEntity, ProductVO> { public class ProductWrapper extends BaseEntityWrapper<ProductEntity, org.springblade.modules.jinchao.pojo.vo.ProductVO> {
public static ProductWrapper build() { public static ProductWrapper build() {
return new ProductWrapper(); return new ProductWrapper();
} }
@Override @Override
public ProductVO entityVO(ProductEntity product) { public org.springblade.modules.jinchao.pojo.vo.ProductVO entityVO(ProductEntity product) {
ProductVO productVO = Objects.requireNonNull(BeanUtil.copyProperties(product, ProductVO.class)); org.springblade.modules.jinchao.pojo.vo.ProductVO productVO = Objects.requireNonNull(BeanUtil.copyProperties(product, org.springblade.modules.jinchao.pojo.vo.ProductVO.class));
//User createUser = UserCache.getUser(product.getCreateUser()); //User createUser = UserCache.getUser(product.getCreateUser());
//User updateUser = UserCache.getUser(product.getUpdateUser()); //User updateUser = UserCache.getUser(product.getUpdateUser());

Loading…
Cancel
Save