Browse Source

供应商接口调整

mssql
Yen 3 years ago
parent
commit
26c5562312
  1. 13
      src/main/java/com/qs/serve/common/util/AuthContextUtils.java
  2. 103
      src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java
  3. 44
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  4. 13
      src/main/java/com/qs/serve/modules/bms/controller/BmsSkuSupplierController.java
  5. 104
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  6. 103
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierUserController.java
  7. 44
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java
  8. 31
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java
  9. 77
      src/main/java/com/qs/serve/modules/bms/entity/BmsErpInfo.java
  10. 5
      src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java
  11. 19
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  12. 76
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierUser.java
  13. 3
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java
  14. 23
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java
  15. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsErpInfoMapper.java
  16. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierUserMapper.java
  17. 16
      src/main/java/com/qs/serve/modules/bms/service/BmsErpInfoService.java
  18. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java
  19. 64
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java
  20. 25
      src/main/java/com/qs/serve/modules/bms/service/BmsSupplierUserService.java
  21. 28
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsErpInfoServiceImpl.java
  22. 8
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java
  23. 49
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  24. 49
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierUserServiceImpl.java
  25. 14
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java
  26. 36
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java
  27. 2
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  28. 10
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuSpecController.java
  29. 3
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  30. 7
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  31. 7
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuTasteBo.java
  32. 25
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuBatchResult.java
  33. 3
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java
  34. 7
      src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java
  35. 139
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  36. 4
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  37. 70
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java
  38. 12
      src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java
  39. 3
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java
  40. 10
      src/main/java/com/qs/serve/modules/oms/entity/dto/OmsCalcAmount.java
  41. 3
      src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java
  42. 4
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  43. 60
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  44. 2
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  45. 3
      src/main/resources/mapper/goods/GoodsSkuMapper.xml

13
src/main/java/com/qs/serve/common/util/AuthContextUtils.java

@ -3,12 +3,11 @@ package com.qs.serve.common.util;
import com.qs.serve.common.framework.security.model.LoginUser;
import com.qs.serve.common.framework.security.model.LoginUserType;
import com.qs.serve.common.model.consts.GySysConst;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.HttpCode;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.experimental.UtilityClass;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
@ -98,12 +97,14 @@ public class AuthContextUtils {
public static BmsSupplier getCurrentSupplier(){
Long supplierId = AuthContextUtils.getSupplierId();
BmsSupplierUserService supplierUserService = SpringUtils.getBean(BmsSupplierUserService.class);
BmsSupplierService supplierService = SpringUtils.getBean(BmsSupplierService.class);
if(supplierUserService.checkWxUserSupplier(supplierId)){
WxUserService wxUserService = SpringUtils.getBean(WxUserService.class);
WxUser wxUser = wxUserService.getCurrentWxUser();
BmsSupplier supplier = supplierService.getById(supplierId);
if(!supplier.getUserId().equals(wxUser.getSysUserId())){
Assert.throwEx("供应商无效或未授权");
}
return supplierService.getById(supplierId);
return supplier;
}
public static Long getSupplierId(){return THREAD_SUPPLIER.get();}

103
src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java

@ -1,103 +0,0 @@
package com.qs.serve.modules.bms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsErpInfo;
import com.qs.serve.modules.bms.service.BmsErpInfoService;
import javax.validation.Valid;
import java.util.List;
/**
* 基础档案 ERP信息
* @author YenHex
* @since 2022-10-13
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/erpInfo")
public class BmsErpInfoController {
private BmsErpInfoService bmsErpInfoService;
/**
* 翻页查询
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:erpInfo:query')")
public R<PageVo<BmsErpInfo>> getPage(BmsErpInfo param){
PageUtil.startPage();
LambdaQueryWrapper<BmsErpInfo> erpInfoWrapper = new LambdaQueryWrapper<>(param);
List<BmsErpInfo> list = bmsErpInfoService.list(erpInfoWrapper);
return R.byPageHelperList(list);
}
/**
* 根据ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "ERP信息", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:erpInfo:query')")
public R<BmsErpInfo> getById(@PathVariable("id") String id){
BmsErpInfo bmsErpInfo = bmsErpInfoService.getById(id);
return R.ok(bmsErpInfo);
}
/**
* 根据ID更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "ERP信息", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:erpInfo:update')")
public R<?> updateById(@RequestBody @Valid BmsErpInfo param){
boolean result = bmsErpInfoService.updateById(param);
return R.isTrue(result);
}
/**
* 新增ERP信息
* @param param
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "ERP信息", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:erpInfo:insert')")
public R<?> save(@RequestBody @Valid BmsErpInfo param){
boolean result = bmsErpInfoService.save(param);
return R.isTrue(result);
}
/**
* 删除ERP信息
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "ERP信息", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:erpInfo:delete')")
public R<?> deleteById(@PathVariable("id") Long id){
boolean result = bmsErpInfoService.removeById(id);
return R.isTrue(result);
}
}

44
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -7,8 +7,10 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsFactory;
import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.service.BmsFactoryService;
import com.qs.serve.modules.bms.service.BmsRuleRegionService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import lombok.AllArgsConstructor;
@ -20,6 +22,7 @@ import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.service.BmsRegionService;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
@ -36,6 +39,20 @@ public class BmsRegionController {
private BmsRegionService bmsRegionService;
private BmsSupplierService bmsSupplierService;
private BmsRuleRegionService bmsRuleRegionService;
private BmsFactoryService bmsFactoryService;
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
@PreAuthorize("hasRole('bms:region:query')")
public R<List<BmsRegion>> getList(BmsRegion param){
LambdaQueryWrapper<BmsRegion> regionWrapper = new LambdaQueryWrapper<>(param);
List<BmsRegion> list = bmsRegionService.list(regionWrapper);
return R.ok(list);
}
/**
* 翻页查询
@ -72,6 +89,17 @@ public class BmsRegionController {
@PreAuthorize("hasRole('bms:region:query')")
public R<BmsRegion> getById(@PathVariable("id") String id){
BmsRegion bmsRegion = bmsRegionService.getById(id);
if(StringUtils.hasText(bmsRegion.getPid())&&bmsRegion.getPid().equals("0")){
bmsRegion.setPid(null);
}
List<BmsFactory> defaultFactories = bmsFactoryService.list();
if(CollectionUtil.isNotEmpty(bmsRegion.getFactoryIds())){
//todo 排序失效
List<BmsFactory> factories = bmsFactoryService.listByIds(Arrays.asList(bmsRegion.getFactoryIds()));
bmsRegion.setFactoryInfos(factories);
}else {
bmsRegion.setFactoryInfos(defaultFactories);
}
return R.ok(bmsRegion);
}
@ -91,6 +119,22 @@ public class BmsRegionController {
return R.isTrue(result);
}
/**
* 更新工厂
* @param regionBo
* @return
*/
@PostMapping("/updateFactory")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:region:update')")
public R<?> updateFactory(@RequestBody BmsRegion regionBo){
BmsRegion param = new BmsRegion();
param.setId(regionBo.getId());
param.setFactoryIds(regionBo.getFactoryIds());
boolean result = bmsRegionService.updateById(param);
return R.isTrue(result);
}
/**
* 新增区域档案
* @param regionBo

13
src/main/java/com/qs/serve/modules/bms/controller/BmsSkuSupplierController.java

@ -41,6 +41,7 @@ public class BmsSkuSupplierController {
/**
* 翻页查询
* @apiNote skuId=0 标识是商品规则
* @param param
* @return
*/
@ -102,5 +103,17 @@ public class BmsSkuSupplierController {
return R.ok();
}
/**
* 删除
* @return
*/
@PostMapping("/deleteById")
@SysLog(module = SystemModule.BASE, title = "sku供应商关联", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:skuSupplier:delete')")
public R<?> updateById(@PathVariable("id") Long id){
bmsSkuSupplierService.removeById(id);
return R.ok();
}
}

104
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java

@ -7,13 +7,13 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsErpInfo;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierParentBo;
import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo;
import com.qs.serve.modules.bms.service.BmsErpInfoService;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -39,7 +39,25 @@ public class BmsSupplierController {
private BmsSupplierService bmsSupplierService;
private BmsRegionService bmsRegionService;
private BmsErpInfoService bmsErpInfoService;
/**
* 翻页查询
* @param param
* @return
*/
@GetMapping("/list")
@PreAuthorize("hasRole('bms:supplier:query')")
public R<List<BmsSupplier>> getList(BmsSupplier param){
LambdaQueryWrapper<BmsSupplier> supplierWrapper = new LambdaQueryWrapper<>(param);
if(CollectionUtil.isNotEmpty(param.getRegionIds())){
supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds());
}
List<BmsSupplier> list = bmsSupplierService.list(supplierWrapper);
initSupplierList(list);
initParentList(list);
return R.ok(list);
}
/**
* 翻页查询
@ -49,25 +67,17 @@ public class BmsSupplierController {
@GetMapping("/page")
@PreAuthorize("hasRole('bms:supplier:query')")
public R<PageVo<BmsSupplier>> getPage(BmsSupplier param){
BmsRegion bmsRegion = bmsRegionService.getById(param.getRegionId());
if(bmsRegion.getLevel()==1){
param.setRegionFirst(param.getRegionId());
}
if(bmsRegion.getLevel()==2){
param.setRegionSecond(param.getRegionId());
}
if(bmsRegion.getLevel()==3){
param.setRegionThird(param.getRegionId());
}
PageUtil.startPage();
LambdaQueryWrapper<BmsSupplier> supplierWrapper = new LambdaQueryWrapper<>(param);
if(CollectionUtil.isNotEmpty(param.getRegionIds())){
supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds());
}
List<BmsSupplier> list = bmsSupplierService.list(supplierWrapper);
initSupplierList(list);
initParentList(list);
return R.byPageHelperList(list);
}
/**
* 树查询
* @param param
@ -77,23 +87,17 @@ public class BmsSupplierController {
@PreAuthorize("hasRole('bms:supplier:query')")
public R<List<BmsSupplierTreeVo>> getTree(BmsSupplier param){
LambdaQueryWrapper<BmsSupplier> supplierWrapper = new LambdaQueryWrapper<>(param);
if(CollectionUtil.isNotEmpty(param.getRegionIds())){
supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds());
}
List<BmsSupplier> list = bmsSupplierService.list(supplierWrapper);
initSupplierList(list);
List<BmsErpInfo> erpInfos = bmsErpInfoService.list();
for (BmsSupplier supplier : list) {
String regionId = supplier.getRegionLast();
if(regionId!=null&&!regionId.equals("0")){
BmsRegion bmsRegion2 = bmsRegionService.getById(regionId);
supplier.setRegionLabel(bmsRegion2.getName());
}
if(StringUtils.hasText(supplier.getBelong())){
for (BmsErpInfo erpInfo : erpInfos) {
if(supplier.getBelong().equals(erpInfo.getCode())){
supplier.setBelongLabel(erpInfo.getName());
break;
}
}
}
}
List<BmsSupplierTreeVo> list2 = list.stream().map(supplier->{
BmsSupplierTreeVo treeNode = CopierUtil.copy(supplier,new BmsSupplierTreeVo());
@ -116,6 +120,14 @@ public class BmsSupplierController {
@PreAuthorize("hasRole('bms:supplier:query')")
public R<BmsSupplier> getById(@PathVariable("id") String id){
BmsSupplier bmsSupplier = bmsSupplierService.getById(id);
if(StringUtils.hasText(bmsSupplier.getPid())&&!bmsSupplier.getPid().equals("0")){
BmsSupplier parentInfo = bmsSupplierService.getById(bmsSupplier.getPid());
bmsSupplier.setParentRegionInfo(parentInfo);
}else {
bmsSupplier.setPid(null);
}
BmsRegion region = bmsRegionService.getById(bmsSupplier.getRegionLast());
bmsSupplier.setRegionLabel(region.getName());
return R.ok(bmsSupplier);
}
@ -135,6 +147,29 @@ public class BmsSupplierController {
return R.ok();
}
/**
* 更新父级ID
* @param param
* @return
*/
@PostMapping("/updateParent")
@SysLog(module = SystemModule.BASE, title = "供应商", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:supplier:update')")
public R<?> updateParent(@RequestBody BmsSupplierParentBo param){
BmsSupplier supplier = new BmsSupplier();
supplier.setId(param.getId());
if(param.getPid()==null||param.getPid().equals(0L)){
supplier.setPid("0");
supplier.setParentCode("0");
}else {
BmsSupplier parentNode = bmsSupplierService.getById(param.getPid());
supplier.setPid(param.getPid()+"");
supplier.setParentCode(parentNode.getCode());
}
bmsSupplierService.updateById(supplier);
return R.ok();
}
/**
* 新增
* @param param
@ -189,9 +224,8 @@ public class BmsSupplierController {
if(CollectionUtil.isNotEmpty(regionIds)){
regionList = bmsRegionService.listByIds(regionIds);
}
List<BmsErpInfo> erpInfos = bmsErpInfoService.list();
for (BmsSupplier supplier : list) {
String regionId = supplier.getRegionLast();
String regionId = supplier.getRegionThird();
if(regionId!=null&&CollectionUtil.isNotEmpty(regionList)){
for (BmsRegion region : regionList) {
if(region.getId().equals(regionId)){
@ -200,13 +234,17 @@ public class BmsSupplierController {
}
}
}
if(StringUtils.hasText(supplier.getBelong())){
for (BmsErpInfo erpInfo : erpInfos) {
if(supplier.getBelong().equals(erpInfo.getCode())){
supplier.setBelongLabel(erpInfo.getName());
break;
}
}
}
}
private void initParentList(List<BmsSupplier> list){
for (BmsSupplier supplier : list) {
if(StringUtils.hasText(supplier.getPid())&&!supplier.getPid().equals("0")){
BmsSupplier parentInfo = bmsSupplierService.getById(supplier.getPid());
supplier.setParentRegionInfo(parentInfo);
}else {
supplier.setPid(null);
}
}
}

103
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierUserController.java

@ -1,103 +0,0 @@
package com.qs.serve.modules.bms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import javax.validation.Valid;
import java.util.List;
/**
* 基础档案 客户分配
* @author YenHex
* @since 2022-10-13
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/supplierUser")
public class BmsSupplierUserController {
private BmsSupplierUserService bmsSupplierUserService;
/**
* 翻页查询
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:supplierUser:query')")
public R<PageVo<BmsSupplierUser>> getPage(BmsSupplierUser param){
PageUtil.startPage();
LambdaQueryWrapper<BmsSupplierUser> supplierUserWrapper = new LambdaQueryWrapper<>(param);
List<BmsSupplierUser> list = bmsSupplierUserService.list(supplierUserWrapper);
return R.byPageHelperList(list);
}
/**
* 根据ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "供应商分配", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:supplierUser:query')")
public R<BmsSupplierUser> getById(@PathVariable("id") String id){
BmsSupplierUser bmsSupplierUser = bmsSupplierUserService.getById(id);
return R.ok(bmsSupplierUser);
}
/**
* 根据ID更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "供应商分配", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:supplierUser:update')")
public R<?> updateById(@RequestBody @Valid BmsSupplierUser param){
boolean result = bmsSupplierUserService.updateById(param);
return R.isTrue(result);
}
/**
* 新增供应商分配
* @param param
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "供应商分配", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:supplierUser:insert')")
public R<?> save(@RequestBody @Valid BmsSupplierUser param){
boolean result = bmsSupplierUserService.save(param);
return R.isTrue(result);
}
/**
* 删除供应商分配
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "供应商分配", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:supplierUser:delete')")
public R<?> deleteById(@PathVariable("id") Long id){
boolean result = bmsSupplierUserService.removeById(id);
return R.isTrue(result);
}
}

44
src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java

@ -1,18 +1,15 @@
package com.qs.serve.modules.bms.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@ -31,7 +28,6 @@ import java.util.List;
public class BmsSupplierAddressApi {
private BmsSupplierAddressService bmsSupplierAddressService;
private BmsSupplierUserService bmsSupplierUserService;
/**
* 翻页查询
@ -40,9 +36,8 @@ public class BmsSupplierAddressApi {
*/
@GetMapping("/page")
public R<PageVo<BmsSupplierAddress>> getPage(BmsSupplierAddress param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
PageUtil.startPage();
LambdaQueryWrapper<BmsSupplierAddress> supplierAddressWrapper = new LambdaQueryWrapper<>(param);
List<BmsSupplierAddress> list = bmsSupplierAddressService.list(supplierAddressWrapper);
@ -56,9 +51,8 @@ public class BmsSupplierAddressApi {
*/
@GetMapping("/list")
public R<List<BmsSupplierAddress>> getList(BmsSupplierAddress param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
LambdaQueryWrapper<BmsSupplierAddress> supplierAddressWrapper = new LambdaQueryWrapper<>(param);
List<BmsSupplierAddress> list = bmsSupplierAddressService.list(supplierAddressWrapper);
return R.ok(list);
@ -85,11 +79,12 @@ public class BmsSupplierAddressApi {
@PostMapping("/updateById")
public R<?> updateById(@RequestBody @Valid BmsSupplierAddress param){
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getId());
if(bmsSupplierUserService.checkWxUserSupplier(supplierAddress.getSupplierId())){
return R.error("未授权");
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
if(supplierAddress.getSupplierId().toString().equals(supplier.getId())){
boolean result = bmsSupplierAddressService.updateById(param);
return R.isTrue(result);
}
boolean result = bmsSupplierAddressService.updateById(param);
return R.isTrue(result);
return R.error("错误id");
}
/**
@ -99,10 +94,9 @@ public class BmsSupplierAddressApi {
*/
@PostMapping("/save")
public R<?> save(@RequestBody @Valid BmsSupplierAddress param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(param.getSupplierId());
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(param.getSupplierId());
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId()));
if(supplierAddress==null){
param.setDefaultFlag(1);
}else {
@ -120,9 +114,10 @@ public class BmsSupplierAddressApi {
@PostMapping("/setDefault")
@Transactional(rollbackFor = Exception.class)
public R<?> setDefault(@Valid Long id){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(supplierAddress.getSupplierId())){
return R.error("未授权");
if(!supplierAddress.getSupplierId().toString().equals(supplier.getId())){
return R.error("错误id");
}
List<BmsSupplierAddress> list = bmsSupplierAddressService.listBySupplierId(supplierAddress.getSupplierId());
//设置其它
@ -145,9 +140,10 @@ public class BmsSupplierAddressApi {
*/
@DeleteMapping("/deleteById/{id}")
public R<?> deleteById(@PathVariable("id") Long id){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(supplierAddress.getSupplierId())){
return R.error("未授权");
if(!supplierAddress.getSupplierId().toString().equals(supplier.getId())){
return R.error("错误id");
}
boolean result = bmsSupplierAddressService.removeById(id);
return R.isTrue(result);

31
src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java

@ -1,18 +1,15 @@
package com.qs.serve.modules.bms.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierBand;
import com.qs.serve.modules.bms.service.BmsSupplierBandService;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@ -30,7 +27,6 @@ import java.util.List;
public class BmsSupplierBandApi {
private BmsSupplierBandService bmsSupplierBandService;
private BmsSupplierUserService bmsSupplierUserService;
/**
* 翻页查询
@ -39,9 +35,8 @@ public class BmsSupplierBandApi {
*/
@GetMapping("/page")
public R<PageVo<BmsSupplierBand>> getPage(BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
PageUtil.startPage();
LambdaQueryWrapper<BmsSupplierBand> supplierBandWrapper = new LambdaQueryWrapper<>(param);
List<BmsSupplierBand> list = bmsSupplierBandService.list(supplierBandWrapper);
@ -55,9 +50,8 @@ public class BmsSupplierBandApi {
*/
@GetMapping("/list")
public R<List<BmsSupplierBand>> getList(BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
LambdaQueryWrapper<BmsSupplierBand> supplierBandWrapper = new LambdaQueryWrapper<>(param);
List<BmsSupplierBand> list = bmsSupplierBandService.list(supplierBandWrapper);
return R.ok(list);
@ -83,8 +77,10 @@ public class BmsSupplierBandApi {
*/
@PostMapping("/updateById")
public R<?> updateById(@RequestBody @Valid BmsSupplierBand param){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
BmsSupplierBand bmsSupplierBand = bmsSupplierBandService.getById(param.getId());
if(bmsSupplierUserService.checkWxUserSupplier(bmsSupplierBand.getSupplierId())){
if(!bmsSupplierBand.getSupplierId().toString().equals(supplier.getId())){
return R.error("未授权");
}
boolean result = bmsSupplierBandService.updateById(param);
@ -98,9 +94,8 @@ public class BmsSupplierBandApi {
*/
@PostMapping("/save")
public R<?> save(@RequestBody @Valid BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
param.setSupplierId(Long.parseLong(supplier.getId()));
boolean result = bmsSupplierBandService.save(param);
return R.isTrue(result);
}
@ -112,10 +107,6 @@ public class BmsSupplierBandApi {
*/
@DeleteMapping("/deleteById/{id}")
public R<?> deleteById(@PathVariable("id") Long id){
BmsSupplierBand bmsSupplierBand = bmsSupplierBandService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(bmsSupplierBand.getSupplierId())){
return R.error("未授权");
}
boolean result = bmsSupplierBandService.removeById(id);
return R.isTrue(result);
}

77
src/main/java/com/qs/serve/modules/bms/entity/BmsErpInfo.java

@ -1,77 +0,0 @@
package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* ERP信息 实体类
* @author YenHex
* @since 2022-10-13
*/
@Data
@TableName("bms_erp_info")
public class BmsErpInfo implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** ERP编码 */
@NotBlank(message = "ERP编码不能为空")
@Length(max = 20,message = "ERP编码长度不能超过20字")
private String code;
/** ERP名称 */
@NotBlank(message = "ERP名称不能为空")
@Length(max = 20,message = "ERP名称长度不能超过20字")
private String name;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
}

5
src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java

@ -15,6 +15,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 区域档案 实体类
@ -80,5 +81,9 @@ public class BmsRegion implements Serializable {
@JsonProperty
private Boolean delFlag;
/** 工厂列表 */
@TableField(exist = false)
private List<?> factoryInfos;
}

19
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -59,9 +59,14 @@ public class BmsSupplier implements Serializable {
private String parentCode;
/** 归属ERP编码,如JSL、JSB、KL 对应ERP信息表作显示 */
@NotBlank(message = "客户编码不能为空")
private String belong;
/** 负责人 */
private String userId;
/** 负责人 */
private String userCode;
/** 负责人 */
private String userName;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ -97,15 +102,15 @@ public class BmsSupplier implements Serializable {
@TableField(exist = false)
private String currUserId;
/** 区域ID */
/** 多选:区域ID */
@TableField(exist = false)
private String regionId;
private String[] regionIds;
@TableField(exist = false)
private String regionLabel;
/** 所属ERP信息 */
/** 父级ID信息 */
@TableField(exist = false)
private String belongLabel;
private Object parentRegionInfo;
}

76
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierUser.java

@ -1,76 +0,0 @@
package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 供应商分配 实体类
* @author YenHex
* @since 2022-10-13
*/
@Data
@TableName("bms_supplier_user")
public class BmsSupplierUser implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 供应商id */
@NotNull(message = "供应商id不能为空")
private Long supplierId;
/** 用户id */
@NotBlank(message = "用户id不能为空")
@Length(max = 32,message = "用户id长度不能超过32字")
private String userId;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
}

3
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java

@ -36,6 +36,7 @@ public class BmsSupplierBo {
/** 父级id,0表总公司无上级 */
private Long pid;
private String belong;
/** 负责人ID */
private String mgrId;
}

23
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java

@ -0,0 +1,23 @@
package com.qs.serve.modules.bms.entity.bo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/10/11
*/
@Data
public class BmsSupplierParentBo {
/** id */
@NotBlank
private String id;
/** 父级id,0表总公司无上级 */
private Long pid;
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsErpInfoMapper.java

@ -1,14 +0,0 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsErpInfo;
/**
* ERP信息 Mapper
* @author YenHex
* @date 2022-10-13
*/
public interface BmsErpInfoMapper extends BaseMapper<BmsErpInfo> {
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierUserMapper.java

@ -1,14 +0,0 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
/**
* 供应商分配 Mapper
* @author YenHex
* @date 2022-10-13
*/
public interface BmsSupplierUserMapper extends BaseMapper<BmsSupplierUser> {
}

16
src/main/java/com/qs/serve/modules/bms/service/BmsErpInfoService.java

@ -1,16 +0,0 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsErpInfo;
/**
* ERP信息 服务接口
* @author YenHex
* @date 2022-10-13
*/
public interface BmsErpInfoService extends IService<BmsErpInfo> {
BmsErpInfo getByCode(String code);
}

2
src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java

@ -10,5 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsFactory;
*/
public interface BmsFactoryService extends IService<BmsFactory> {
BmsFactory getByCode(String code);
}

64
src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java

@ -34,36 +34,57 @@ public class BmsRuleMainService {
private BmsRuleSkuService bmsRuleSkuService;
private BmsRuleRegionService bmsRuleRegionService;
public boolean check(BmsSupplier supplier,List<GoodsSku> goodsSkus){
/**
* 返回错误的规格id列表
* @param supplier
* @param goodsSkus
* @return
*/
public List<Long> checkErrSkuIds(BmsSupplier supplier,List<GoodsSku> goodsSkus){
//返回的错误sku
List<Long> errSkuIds = new ArrayList<>();
List<Long> skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList());
List<Long> spuIds = goodsSkus.stream().map(GoodsSku::getSpuId).collect(Collectors.toList());
List<BmsSkuSupplier> skuSupplierRules = this.getSkuSupplierRules(supplier.getId(),skuIds);
if(skuSupplierRules.size()>0){
boolean isBaned = skuSupplierRules.stream().anyMatch(skuSupplier -> skuSupplier.getBanStatus().equals(1));
if(isBaned){return false;}
//过来设置允许的sku
for (BmsSkuSupplier supplierRule : skuSupplierRules) {
if (supplierRule.getBanStatus().equals(1)){
errSkuIds.add(supplierRule.getSkuId());
}
}
//过滤已设置的sku
skuIds = skuIds.stream().filter(skuId->
skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId))
).collect(Collectors.toList());
}
List<BmsSkuSupplier> spuSupplierRules = this.getSpuSupplierRules(supplier.getId(),spuIds);
if(spuSupplierRules.size()>0){
boolean isBaned = spuSupplierRules.stream().anyMatch(spuSupplier -> spuSupplier.getBanStatus().equals(1));
if(isBaned){return false;}
//过来设置允许的sku
spuIds = skuIds.stream().filter(skuId->
skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId))
).collect(Collectors.toList());
//禁止的规格
final List<Long> banedSpuIds = spuSupplierRules.stream()
.filter(spuSupplier -> spuSupplier.getBanStatus().equals(1))
.map(skuSupplier -> skuSupplier.getSpuId())
.collect(Collectors.toList());
if(banedSpuIds.size()>0){
List<Long> invalidSkuIds = goodsSkus.stream().filter(sku->banedSpuIds.stream().anyMatch(spuId->sku.getSpuId().equals(spuId)))
.map(sku->sku.getId()).collect(Collectors.toList());
errSkuIds.addAll(invalidSkuIds);
}
//已通过的规格
List<Long> passSpuIds = spuSupplierRules.stream()
.filter(spuSupplier -> spuSupplier.getBanStatus().equals(0))
.map(skuSupplier -> skuSupplier.getSpuId())
.collect(Collectors.toList());
if(passSpuIds.size()>0){
List<Long> passSkuIds = goodsSkus.stream()
.filter(goodsSku->passSpuIds.contains(goodsSku.getSpuId()))
.map(GoodsSku::getId)
.collect(Collectors.toList());
if(passSkuIds.size()>0){
skuIds = skuIds.stream().filter(skuId->!passSkuIds.contains(skuId)).collect(Collectors.toList());
}
}
}
//过滤已通行spu的sku
final List<Long> spuIdsTemp = spuIds;
List<Long> passSkuIds = goodsSkus.stream()
.filter(goodsSku -> spuIdsTemp.stream().anyMatch(spuId->goodsSku.getSpuId().equals(spuId)))
.map(GoodsSku::getId)
.collect(Collectors.toList());
skuIds = skuIds.stream().filter(skuId->
passSkuIds.stream().noneMatch(passSkuId-> passSkuId.equals(skuId))
).collect(Collectors.toList());
if(CollectionUtil.isEmpty(skuIds)){
List<BmsRuleSku> enableRuleSkus = bmsRuleSkuService.listEnableRuleWithSkuIds(skuIds);
List<Long> ruleIds = enableRuleSkus.stream().map(BmsRuleSku::getRuleId).distinct().collect(Collectors.toList());
@ -84,12 +105,13 @@ public class BmsRuleMainService {
List<BmsRuleRegion> ruleRegions = bmsRuleRegionService.list(lqw);
for (BmsRuleRegion ruleRegion : ruleRegions) {
if(ruleRegion.getTypeFlag().equals(1)){
return false;
errSkuIds.addAll(skuIds);
return errSkuIds;
}
}
}
}
return true;
return errSkuIds;
}
public List<BmsSkuSupplier> getSkuSupplierRules(String supplierId, List<Long> skuIds) {

25
src/main/java/com/qs/serve/modules/bms/service/BmsSupplierUserService.java

@ -1,25 +0,0 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
import java.util.List;
/**
* 供应商分配 服务接口
* @author YenHex
* @date 2022-10-13
*/
public interface BmsSupplierUserService extends IService<BmsSupplierUser> {
/**
* 检查当前微信人员是否有操作供应商权限
* @param supplierId
* @return
*/
boolean checkWxUserSupplier(Long supplierId);
boolean checkWxUserSupplier(Long supplierId,String userId);
}

28
src/main/java/com/qs/serve/modules/bms/service/impl/BmsErpInfoServiceImpl.java

@ -1,28 +0,0 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.entity.BmsErpInfo;
import com.qs.serve.modules.bms.service.BmsErpInfoService;
import com.qs.serve.modules.bms.mapper.BmsErpInfoMapper;
/**
* ERP信息 服务实现类
* @author YenHex
* @since 2022-10-13
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsErpInfoServiceImpl extends ServiceImpl<BmsErpInfoMapper,BmsErpInfo> implements BmsErpInfoService {
@Override
public BmsErpInfo getByCode(String code) {
return null;
}
}

8
src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -18,5 +19,12 @@ import com.qs.serve.modules.bms.mapper.BmsFactoryMapper;
@AllArgsConstructor
public class BmsFactoryServiceImpl extends ServiceImpl<BmsFactoryMapper,BmsFactory> implements BmsFactoryService {
@Override
public BmsFactory getByCode(String code) {
LambdaQueryWrapper<BmsFactory> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsFactory::getCode,code);
return getOne(lqw,false);
}
}

49
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -2,11 +2,15 @@ package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -27,6 +31,7 @@ import java.util.List;
public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSupplier> implements BmsSupplierService {
private BmsRegionService regionService;
private SysUserService sysUserService;
@Override
public List<BmsSupplier> selectSupplierList(BmsSupplier bmsSupplier) {
@ -36,12 +41,23 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
@Override
public void edit(BmsSupplierBo param) {
BmsSupplier supplier = CopierUtil.copy(param,new BmsSupplier());
if(param.getPid()==null||param.getPid().equals(0L)){
supplier.setPid("0");
supplier.setParentCode("0");
if(StringUtils.hasText(param.getMgrId())){
SysUser sysUser = sysUserService.getById(param.getMgrId());
supplier.setUserId(sysUser.getId());
supplier.setUserName(sysUser.getName());
supplier.setUserCode(sysUser.getCode());
}
if(!StringUtils.hasText(supplier.getId())){
if(param.getPid()==null||param.getPid().equals(0L)){
supplier.setPid("0");
supplier.setParentCode("0");
}else {
BmsSupplier parentNode = this.getById(param.getPid());
supplier.setParentCode(parentNode.getCode());
}
}else {
BmsSupplier parentNode = this.getById(param.getPid());
supplier.setParentCode(parentNode.getCode());
supplier.setPid(null);
supplier.setParentCode(null);
}
if(param.getRegionId()!=null){
this.initRegion(supplier,param.getRegionId());
@ -125,23 +141,14 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
supplier.setRegionLast("0");
return;
}
supplier.setRegionLast(regionId+"");
if(!region1.getPid().equals("0")){
BmsRegion region2 = regionService.getById(region1.getPid());
if(!region2.getPid().equals("0")){
supplier.setRegionFirst(region2.getPid());
supplier.setRegionSecond(region2.getId());
supplier.setRegionThird(region1.getId());
}else {
supplier.setRegionFirst(region2.getId());
supplier.setRegionSecond(region1.getId());
supplier.setRegionThird("");
}
}else {
supplier.setRegionFirst(region1.getId());
supplier.setRegionSecond("");
supplier.setRegionThird("");
BmsRegion region2 = regionService.getById(region1.getPid());
if(region1.getLevel()!=3){
Assert.throwEx("供应商需选择第三级区域");
}
supplier.setRegionLast(regionId+"");
supplier.setRegionFirst(region2.getPid());
supplier.setRegionSecond(region2.getId());
supplier.setRegionThird(region1.getId());
}
}

49
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierUserServiceImpl.java

@ -1,49 +0,0 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import com.qs.serve.modules.bms.mapper.BmsSupplierUserMapper;
/**
* 供应商分配 服务实现类
* @author YenHex
* @since 2022-10-13
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsSupplierUserServiceImpl extends ServiceImpl<BmsSupplierUserMapper,BmsSupplierUser> implements BmsSupplierUserService {
private WxUserService wxUserService;
@Override
public boolean checkWxUserSupplier(Long supplierId) {
return checkWxUserSupplier(supplierId,null);
}
@Override
public boolean checkWxUserSupplier(Long supplierId, String userId) {
if(supplierId!=null){
WxUser wxUser = wxUserService.getCurrentWxUser(true);
if(wxUser!=null){
LambdaQueryWrapper<BmsSupplierUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplierUser::getUserId,wxUser.getSysUserId());
lqw.eq(BmsSupplierUser::getSupplierId,supplierId);
boolean exist = this.count(lqw) > 0L;
if(userId!=null){
return exist&&wxUser.getSysUserId().equals(userId);
}
return exist;
}
}
return false;
}
}

14
src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -23,10 +24,10 @@ import java.util.List;
* @author YenHex
* @since 2022-10-09
*/
//@Slf4j
//@AllArgsConstructor
//@RestController
//@RequestMapping("goods/sku")
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("goods/sku")
public class GoodsSkuController {
private GoodsSkuService goodsSkuService;
@ -38,10 +39,9 @@ public class GoodsSkuController {
*/
@GetMapping("/page")
@PreAuthorize("hasRole('goods:sku:query')")
public R<PageVo<GoodsSku>> getPage(GoodsSku param){
public R<PageVo<GoodSkuVo>> getPage(GoodsSku param){
PageUtil.startPage();
LambdaQueryWrapper<GoodsSku> skuWrapper = new LambdaQueryWrapper<>(param);
List<GoodsSku> list = goodsSkuService.list(skuWrapper);
List<GoodSkuVo> list = goodsSkuService.selectSkuVo(param);
return R.byPageHelperList(list);
}

36
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java

@ -7,6 +7,8 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.goods.entity.GoodsSpec;
import com.qs.serve.modules.goods.service.GoodsSpecService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -23,16 +25,30 @@ import java.util.List;
* @author YenHex
* @since 2022-10-09
*/
//@Slf4j
//@AllArgsConstructor
//@RestController
//@RequestMapping("goods/specValue")
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("goods/specValue")
public class GoodsSpecValueController {
private GoodsSpecValueService goodsSpecValueService;
private GoodsSpecService goodsSpecService;
/**
* 翻页查询
* 规格 列表
* @param param
* @return
*/
public R<List<GoodsSpec>> getPage(GoodsSpec param){
LambdaQueryWrapper<GoodsSpec> specWrapper = new LambdaQueryWrapper<>(param);
List<GoodsSpec> list = goodsSpecService.list(specWrapper);
return R.ok(list);
}
/**
* 规格值 翻页
* @param param
* @return
*/
@ -46,7 +62,7 @@ public class GoodsSpecValueController {
}
/**
* 根据ID查询
* 规格值 ID查询
* @param id
* @return
*/
@ -61,7 +77,7 @@ public class GoodsSpecValueController {
/**
* 根据ID更新
* 规格值 ID更新
* @param param
* @return
*/
@ -74,7 +90,7 @@ public class GoodsSpecValueController {
}
/**
* 新增规格值
* 新增 规格值
* @param param
* @return
*/
@ -87,7 +103,7 @@ public class GoodsSpecValueController {
}
/**
* 删除规格值
* 删除 规格值
* @param id
* @return
*/
@ -95,7 +111,9 @@ public class GoodsSpecValueController {
@SysLog(module = SystemModule.GOODS, title = "规格值", biz = BizType.DELETE)
@PreAuthorize("hasRole('goods:specValue:delete')")
public R<?> deleteById(@PathVariable("id") String id){
//todo 含有正在使用的商品无法删除
boolean result = goodsSpecValueService.removeById(id);
return R.isTrue(result);
}

2
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.ValidateTools;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import lombok.AllArgsConstructor;
@ -108,6 +109,7 @@ public class GoodsSpuController {
@SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.INSERT)
@PreAuthorize("hasRole('goods:spu:insert')")
public R<?> saveBatchTasteSpu(@RequestBody GoodsSpuBatchTasteBo param){
ValidateTools.valid(param.getTasteProducts());
goodsSpuService.saveBatchTasteSpu(param);
return R.ok();
}

10
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuSpecController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.goods.entity.GoodsSpec;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -23,14 +24,15 @@ import java.util.List;
* @author YenHex
* @since 2022-10-09
*/
//@Slf4j
//@AllArgsConstructor
//@RestController
//@RequestMapping("goods/spuSpec")
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("goods/spuSpec")
public class GoodsSpuSpecController {
private GoodsSpuSpecService goodsSpuSpecService;
/**
* 翻页查询
* @param param

3
src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java

@ -67,6 +67,9 @@ public class GoodsSku implements Serializable {
@NotNull(message = "体积(m³)不能为空")
private BigDecimal volume;
/** 最低起批数(0->不限制) */
private Integer minPurchase;
/** 是否启用1、是;0否 */
@NotBlank(message = "是否启用1、是;0否不能为空")
@Length(max = 2,message = "是否启用1、是;0否长度不能超过2字")

7
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -57,6 +57,9 @@ public class GoodsSpu implements Serializable {
/** 三级分类ID */
private String categoryThird;
/** 最后一级分类 */
private String categoryLast;
/** 商品图片 */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] picUrls;
@ -80,10 +83,6 @@ public class GoodsSpu implements Serializable {
/** 产品口味(非sku规格值) */
private String tasteValue;
/** 含归属ERP编码的客户不显示该商品。值如JSL、JSB、KL */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] notBelong;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

7
src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuTasteBo.java

@ -59,6 +59,10 @@ public class GoodsSpuTasteBo {
/** 产品口味 */
private String productTasteValue;
/** 产地编码 */
@NotNull(message = "产地编码不能为空")
private String factoryCode;
/** 销售价格 */
@NotNull(message = "销售价格不能为空")
private BigDecimal salesPrice;
@ -78,7 +82,4 @@ public class GoodsSpuTasteBo {
/** 产品单位 */
private String unit;
/** 含归属ERP编码的客户不显示该商品。值如JSL、JSB、KL */
private String[] notBelong;
}

25
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuBatchResult.java

@ -0,0 +1,25 @@
package com.qs.serve.modules.goods.entity.vo;
import lombok.Data;
/**
* @author YenHex
* @since 2022/10/24
*/
@Data
public class GoodSkuBatchResult {
/**
* 结果 0-正常 其它为失败
*/
private Integer errorCode;
private String message;
private String productCode;
private String invCode;
private String name;
}

3
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java

@ -14,4 +14,7 @@ public class GoodSkuVo extends GoodsSku {
private Long spuId;
/** 是否上架(1是 0否) */
private String shelf;
}

7
src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java

@ -1,11 +1,12 @@
package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodSkuBatchResult;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* spu 服务接口
@ -18,7 +19,7 @@ public interface GoodsSpuService extends IService<GoodsSpu> {
GoodsSpu getByCode(String code);
void saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo);
List<GoodSkuBatchResult> saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo);
}

139
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -4,14 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.ValidateTools;
import com.qs.serve.modules.bms.entity.BmsFactory;
import com.qs.serve.modules.bms.service.BmsFactoryService;
import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo;
import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo;
import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpecValueVo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuSpecVo;
import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo;
import com.qs.serve.modules.goods.entity.vo.*;
import com.qs.serve.modules.goods.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -39,6 +37,7 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
private GoodsSpecValueService goodsSpecValueService;
private GoodsSkuSpecValueService goodsSkuSpecValueService;
private GoodsCategoryService goodsCategoryService;
private BmsFactoryService bmsFactoryService;
@Override
public GoodsSpu getByCode(String code) {
@ -83,14 +82,27 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
}
@Override
public void saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo) {
public List<GoodSkuBatchResult> saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo) {
List<GoodSkuBatchResult> resultList = new ArrayList<>();
for (GoodsSpuTasteBo tasteProduct : batchTasteBo.getTasteProducts()) {
ValidateTools.valid(tasteProduct);
this.editTasteBo(tasteProduct);
GoodSkuBatchResult skuBatchResult = this.editTasteBo(tasteProduct);
resultList.add(skuBatchResult);
}
return resultList;
}
private void editTasteBo(GoodsSpuTasteBo tasteProduct){
/**
* 编辑美食商品
* @param tasteProduct
* @return
*/
private GoodSkuBatchResult editTasteBo(GoodsSpuTasteBo tasteProduct){
GoodSkuBatchResult skuBatchResult = new GoodSkuBatchResult();
skuBatchResult.setInvCode(tasteProduct.getInvCode());
skuBatchResult.setProductCode(tasteProduct.getProductCode());
skuBatchResult.setName(tasteProduct.getName());
skuBatchResult.setErrorCode(0);
skuBatchResult.setMessage("成功");
GoodsSpu spu = this.getByCode(tasteProduct.getProductCode());
if(spu==null){
spu = new GoodsSpu();
@ -98,23 +110,29 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
spu.setName(tasteProduct.getName());
spu.setSpuCode(tasteProduct.getProductCode());
spu.setPicUrls(tasteProduct.getPicUrls());
spu.setNotBelong(tasteProduct.getNotBelong());
//设置分类
GoodsCategory category = goodsCategoryService.getByCode(tasteProduct.getCategoryCode());
if(!category.getParentId().equals("0")){
GoodsCategory categorySecond = goodsCategoryService.getById(category.getParentId());
if(!categorySecond.getParentId().equals("0")){
spu.setCategoryFirst(categorySecond.getParentId());
spu.setCategorySecond(categorySecond.getId()+"");
spu.setCategoryThird(category.getId()+"");
try {
GoodsCategory category = goodsCategoryService.getByCode(tasteProduct.getCategoryCode());
spu.setCategoryLast(category.getId()+"");
if(!category.getParentId().equals("0")){
GoodsCategory categorySecond = goodsCategoryService.getById(category.getParentId());
if(!categorySecond.getParentId().equals("0")){
spu.setCategoryFirst(categorySecond.getParentId());
spu.setCategorySecond(categorySecond.getId()+"");
spu.setCategoryThird(category.getId()+"");
}else {
spu.setCategoryFirst(categorySecond.getId()+"");
spu.setCategorySecond(category.getId()+"");
}
}else {
spu.setCategoryFirst(categorySecond.getId()+"");
spu.setCategorySecond(category.getId()+"");
spu.setCategoryFirst(category.getId()+"");
spu.setCategorySecond("");
spu.setCategoryThird("");
}
}else {
spu.setCategoryFirst(category.getId()+"");
spu.setCategorySecond("");
spu.setCategoryThird("");
} catch (Exception e) {
skuBatchResult.setMessage("设置分类失败");
skuBatchResult.setErrorCode(1);
return skuBatchResult;
}
//设置品牌
GoodsBrand goodsBrand = goodsBrandService.getByCode(tasteProduct.getBrandCode());
@ -135,13 +153,18 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
GoodsSpuSpec spuSpec = new GoodsSpuSpec();
spuSpec.setSpuId(spu.getId());
spuSpec.setSpecId(1L);
spuSpec.setSort(1);
spuSpec.setSort(2);
spuSpecList.add(spuSpec);
GoodsSpuSpec spuSpec2 = new GoodsSpuSpec();
spuSpec2.setSpuId(spu.getId());
spuSpec2.setSpecId(2L);
spuSpec2.setSort(0);
spuSpec2.setSort(1);
spuSpecList.add(spuSpec2);
GoodsSpuSpec spuSpec3 = new GoodsSpuSpec();
spuSpec3.setSpuId(spu.getId());
spuSpec3.setSpecId(3L);
spuSpec3.setSort(1);
spuSpecList.add(spuSpec3);
goodsSpuSpecService.saveBatch(spuSpecList);
}else {
this.updateById(spu);
@ -152,35 +175,49 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
goodsSku = CopierUtil.copy(tasteProduct,new GoodsSku());
}
if(!goodsSku.getSpuId().equals(spu.getId())){
log.error("新增sku失败:sku编码'{}'已保存'{}'到商品编码",goodsSku.getSkuCode(),spu.getSpuCode());
return;
log.error("新增sku失败:sku编码'{}'已保存到商品编码'{}'",goodsSku.getSkuCode(),spu.getSpuCode());
skuBatchResult.setMessage("存货编码'"+goodsSku.getSkuCode()+"'已保存到产品编码'"+spu.getSpuCode()+"'");
skuBatchResult.setErrorCode(1);
return skuBatchResult;
}
goodsSku.setSkuCode(tasteProduct.getInvCode());
goodsSku.setSpuId(spu.getId());
goodsSku.setPicUrl(tasteProduct.getInvPicUrl());
goodsSku.setSpecInfos(tasteProduct.getTasteValue()+";"+tasteProduct.getPackValue());
//设置sku单位
if(StringUtils.hasText(tasteProduct.getUnit())){
GoodsUnit goodsUnit = goodsUnitService.getByName(tasteProduct.getUnit());
if(goodsUnit==null){
goodsUnit = new GoodsUnit();
goodsUnit.setName(tasteProduct.getUnit());
goodsUnitService.save(goodsUnit);
try {
BmsFactory bmsFactory = bmsFactoryService.getByCode(tasteProduct.getFactoryCode());
goodsSku.setSkuCode(tasteProduct.getInvCode());
goodsSku.setSpuId(spu.getId());
goodsSku.setPicUrl(tasteProduct.getInvPicUrl());
goodsSku.setSpecInfos(tasteProduct.getTasteValue()+";"+tasteProduct.getPackValue()+";"+bmsFactory.getName());
//设置sku单位
if(StringUtils.hasText(tasteProduct.getUnit())){
GoodsUnit goodsUnit = goodsUnitService.getByName(tasteProduct.getUnit());
if(goodsUnit==null){
goodsUnit = new GoodsUnit();
goodsUnit.setName(tasteProduct.getUnit());
goodsUnitService.save(goodsUnit);
}
goodsSku.setEnable("1");
goodsSku.setUnitId(goodsUnit.getId());
goodsSku.setUnitName(goodsUnit.getName());
}
goodsSku.setUnitId(goodsUnit.getId());
goodsSku.setUnitName(goodsUnit.getName());
}
if(goodsSku.getId()==null){
goodsSkuService.save(goodsSku);
}else {
goodsSkuService.updateById(goodsSku);
if(goodsSku.getId()==null){
goodsSkuService.save(goodsSku);
}else {
goodsSkuService.updateById(goodsSku);
}
//保存规格值
GoodsSpecValue tasteValue = goodsSpecValueService.initSpecValue(1L,tasteProduct.getTasteValue());
GoodsSpecValue packValue = goodsSpecValueService.initSpecValue(2L,tasteProduct.getPackValue());
GoodsSpecValue factoryValue = goodsSpecValueService.initSpecValue(3L,bmsFactory.getName());
//保存sku与规格值关联
goodsSkuSpecValueService.initSkuSpecValue(spu.getId(), goodsSku.getId(),tasteValue.getId());
goodsSkuSpecValueService.initSkuSpecValue(spu.getId(), goodsSku.getId(),packValue.getId());
goodsSkuSpecValueService.initSkuSpecValue(spu.getId(), goodsSku.getId(),factoryValue.getId());
} catch (Exception e) {
log.error("新增sku失败",e);
skuBatchResult.setMessage("保存失败");
skuBatchResult.setErrorCode(1);
return skuBatchResult;
}
//保存规格值
GoodsSpecValue tasteValue = goodsSpecValueService.initSpecValue(1L,tasteProduct.getTasteValue());
GoodsSpecValue packValue = goodsSpecValueService.initSpecValue(2L,tasteProduct.getPackValue());
//保存sku与规格值关联
goodsSkuSpecValueService.initSkuSpecValue(spu.getId(), goodsSku.getId(),tasteValue.getId());
goodsSkuSpecValueService.initSkuSpecValue(spu.getId(), goodsSku.getId(),packValue.getId());
return skuBatchResult;
}
}

4
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -9,7 +9,7 @@ import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsConfirmOrderBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderVo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.service.OmsOrderService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -38,7 +38,7 @@ public class OmsOrderApi {
* @return
*/
@PostMapping("/generateConfirmOrder")
public R<OmsConfirmOrderVo> generateConfirmOrder(@RequestBody @Valid OmsConfirmOrderBo confirmOrder){
public R<OmsConfirmOrderResult> generateConfirmOrder(@RequestBody @Valid OmsConfirmOrderBo confirmOrder){
return R.ok(omsOrderService.generateConfirmOrder(confirmOrder));
}

70
src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java

@ -3,13 +3,12 @@ package com.qs.serve.modules.oms.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
@ -43,7 +42,6 @@ public class OmsShoppingCartApi {
private OmsShoppingCartService omsShoppingCartService;
private GoodsSkuSpecValueService goodsSkuSpecValueService;
private BmsRuleMainService bmsRuleMainService;
private BmsSupplierUserService bmsSupplierUserService;
private BmsSupplierService bmsSupplierService;
private GoodsSpuService goodsSpuService;
private GoodsSkuService goodsSkuService;
@ -56,28 +54,60 @@ public class OmsShoppingCartApi {
*/
@GetMapping("/page")
public R<PageVo<OmsShoppingCart>> getPage(OmsShoppingCart param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("请选择有效的客户");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
WxUser wxUser = wxUserService.getCurrentWxUser(true);
if(wxUser==null){
if(wxUser==null||supplier==null){
return R.byEmptyList();
}
LambdaQueryWrapper<OmsShoppingCart> shoppingCartWrapper = new LambdaQueryWrapper<>(param);
shoppingCartWrapper.eq(OmsShoppingCart::getUserId,wxUser.getSysUserId());
PageUtil.startPage();
List<OmsShoppingCart> list = omsShoppingCartService.list(shoppingCartWrapper);
return R.byPageHelperList(list);
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.list(shoppingCartWrapper);
//校验
List<Long> skuIds = shoppingCarts.stream().map(OmsShoppingCart::getSkuId).collect(Collectors.toList());
GoodsSku goodsSku = new GoodsSku();
goodsSku.setSelectSkuIds(skuIds);
//过滤无效sku
List<GoodSkuVo> goodsSkus = goodsSkuService.selectSkuVo(goodsSku);
List<GoodSkuVo> invalidSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals("0")||vo.getEnable().equals("0")).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(invalidSkus)){
for (GoodSkuVo invalidSku : invalidSkus) {
for (OmsShoppingCart shoppingCart : shoppingCarts) {
if(shoppingCart.getSkuId().equals(invalidSku.getId())){
shoppingCart.setErrCode(1);
shoppingCart.setErrMessage("已下架");
break;
}
}
}
}
goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals("1")&&vo.getEnable().equals("1")).collect(Collectors.toList());
//todo 检验库存
//检验规格拦截
List<GoodsSku> goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList());
List<Long> invalidSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,goodsSkuEntities);
if(CollectionUtil.isNotEmpty(invalidSkuIds)){
for (Long invalidSkuId : invalidSkuIds) {
for (OmsShoppingCart shoppingCart : shoppingCarts) {
if(shoppingCart.getSkuId().equals(invalidSkuId)){
shoppingCart.setErrCode(1);
shoppingCart.setErrMessage("已不符合商品规则");
break;
}
}
}
}
return R.byPageHelperList(shoppingCarts);
}
/**
* 根据ID更新
* 修改购物车数量
* @param param
* @return
*/
@PostMapping("/updateById")
public R<?> updateById(@RequestBody @Valid OmsShoppingCartUpdateBo param){
@PostMapping("/updateQuantity")
public R<?> updateQuantity(@RequestBody @Valid OmsShoppingCartUpdateBo param){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
OmsShoppingCart shoppingCart = omsShoppingCartService.getById(param.getCartId());
shoppingCart.setQuantity(param.getQuantity());
@ -98,13 +128,19 @@ public class OmsShoppingCartApi {
WxUser wxUser = wxUserService.getCurrentWxUser(true);
shoppingCart.setUserId(wxUser.getSysUserId());
GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId());
if(!goodsSku.getEnable().equals("1")){
return R.error("商品项["+goodsSku.getSpecInfos()+"]停用中");
}
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCart.setSpuId(goodsSku.getSpuId());
GoodsSpu goodsSpu = goodsSpuService.getById(shoppingCart.getSpuId());
if(!goodsSpu.getShelf().equals("1")){
return R.error("商品已下架");
}
shoppingCart.setSpuName(goodsSpu.getName());
//检验拦截
boolean ruleResult = bmsRuleMainService.check(supplier,Arrays.asList(goodsSku));
if(!ruleResult){
List<Long> errSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,Arrays.asList(goodsSku));
if(errSkuIds.size()>0){
return R.error("部分产品未授权");
}
List<GoodsSkuSpecValueVo> skuSpecValues = goodsSkuSpecValueService.listSpecValueBySkuId(goodsSku.getId());
@ -121,10 +157,6 @@ public class OmsShoppingCartApi {
*/
@DeleteMapping("/deleteById/{id}")
public R<?> deleteById(@PathVariable("id") String id){
OmsShoppingCart shoppingCart = omsShoppingCartService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(shoppingCart.getSupplierId(),shoppingCart.getUserId())){
return R.error("未授权");
}
omsShoppingCartService.removeById(id);
return R.error();
}

12
src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java

@ -101,5 +101,17 @@ public class OmsShoppingCart implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 异常编码
* null -> 无异常
* 0 -> 无异常(预警库存)
* 其它 -> 异常
**/
@TableField(exist = false)
private Integer errCode;
/** 异常信息 */
@TableField(exist = false)
private String errMessage;
}

3
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java

@ -15,8 +15,7 @@ import java.math.BigDecimal;
public class OmsShoppingCartSaveBo {
/** 商品SKU */
@NotBlank(message = "商品SKU不能为空")
@Length(max = 32,message = "商品SKU长度不能超过32字")
@NotNull(message = "商品SKU不能为空")
private Long skuId;
/** 数量 */

10
src/main/java/com/qs/serve/modules/oms/entity/dto/OmsCalcAmount.java

@ -19,9 +19,6 @@ public class OmsCalcAmount {
promotionAmount = new BigDecimal(0);
payAmount = new BigDecimal(0);
couponAmount = new BigDecimal(0);
//freightAmount = new BigDecimal(0);
//freightInsAmount = new BigDecimal(0);
//integralAmount = new BigDecimal(0);
}
/** 订单商品总金额(未减折扣) */
@ -36,11 +33,4 @@ public class OmsCalcAmount {
/** 应付金额 */
private BigDecimal payAmount;
//总运费
//private BigDecimal freightAmount;
//总运费险费用
//private BigDecimal freightInsAmount;
//总积分优惠
//private BigDecimal integralAmount;
}

3
src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderVo.java → src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.oms.entity.vo;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.oms.entity.OmsShoppingCart;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import lombok.Data;
@ -14,7 +15,7 @@ import java.util.List;
* @since 2022/10/14
*/
@Data
public class OmsConfirmOrderVo {
public class OmsConfirmOrderResult {
/** 购物车列表 */
private List<?> shoppingCarts;

4
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -3,7 +3,7 @@ package com.qs.serve.modules.oms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsConfirmOrderBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderVo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
/**
* 订单 服务接口
@ -17,7 +17,7 @@ public interface OmsOrderService extends IService<OmsOrder> {
* @param confirmOrder
* @return
*/
OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder);
OmsConfirmOrderResult generateConfirmOrder(OmsConfirmOrderBo confirmOrder);
}

60
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -1,12 +1,22 @@
package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsRuleMainService;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.OmsShoppingCart;
import com.qs.serve.modules.oms.entity.bo.OmsConfirmOrderBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderVo;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -15,7 +25,9 @@ import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 订单 服务实现类
@ -28,17 +40,49 @@ import java.util.List;
public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> implements OmsOrderService {
private OmsShoppingCartService omsShoppingCartService;
private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService;
private BmsRuleMainService bmsRuleMainService;
private BmsSupplierAddressService bmsSupplierAddressService;
@Override
public OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder) {
public OmsConfirmOrderResult generateConfirmOrder(OmsConfirmOrderBo confirmOrder) {
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId());
//todo 检验规则
//检验库存
//计算供应商折扣
//计算是否有活动优惠
return null;
List<Long> skuIds;
if(CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())){
//购物车
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId());
skuIds = shoppingCarts.stream().map(OmsShoppingCart::getSkuId).collect(Collectors.toList());
}else {
//立即购买
skuIds = Arrays.asList(confirmOrder.getSkuId());
}
GoodsSku goodsSku = new GoodsSku();
goodsSku.setSelectSkuIds(skuIds);
//过滤无效sku
List<GoodSkuVo> goodsSkus = goodsSkuService.selectSkuVo(goodsSku);
List<GoodSkuVo> invalidSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals("0")||vo.getEnable().equals("0")).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(invalidSkus)){
Assert.throwEx("部分商品停用或下架了");
}
goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals("1")&&vo.getEnable().equals("1")).collect(Collectors.toList());
//todo 检验库存
//检验规格拦截
List<GoodsSku> goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList());
List<Long> invalidSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,goodsSkuEntities);
if(CollectionUtil.isNotEmpty(invalidSkuIds)){
Assert.throwEx("客户不符合部分商品规则");
}
OmsCalcAmount calcAmount = new OmsCalcAmount();
//todo 计算供应商折扣
//todo 计算是否有活动优惠
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId()));
OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult();
//confirmOrderResult.setShoppingCarts(shoppingCarts);
confirmOrderResult.setDefaultAddress(supplierAddress);
confirmOrderResult.setAmountInfo(calcAmount);
return confirmOrderResult;
}
}

2
src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java

@ -49,7 +49,7 @@ public class SysUserController {
private SysDeptService sysDeptService;
private SysPostService sysPostService;
private SysRoleService sysRoleService;
private WxUserService wxUserService;
private WxUserService wxUserService;
private SysUserSalesService sysUserSalesService;
/**

3
src/main/resources/mapper/goods/GoodsSkuMapper.xml

@ -18,6 +18,7 @@
<result property="unitName" column="unit_name"/>
<result property="weight" column="weight"/>
<result property="volume" column="volume"/>
<result property="minPurchase" column="min_purchase"/>
<result property="enable" column="enable"/>
<result property="version" column="version"/>
<result property="remark" column="remark"/>
@ -43,6 +44,7 @@
goods_sku.`unit_name`,
goods_sku.`weight`,
goods_sku.`volume`,
goods_sku.`min_purchase`,
goods_sku.`enable`,
goods_sku.`version`,
goods_sku.`remark`,
@ -84,6 +86,7 @@
SELECT
`goods_spu`.`spuId`,
`goods_spu`.`name`,
`goods_spu`.`shelf`,
<include refid="goodsSkuSql"/>
FROM `goods_sku` `goods_sku`
LEFT JOIN `goods_spu` ON `goods_sku`.`spu_id` = `goods_spu`.id

Loading…
Cancel
Save