diff --git a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java index e5c50b7d..bb29697c 100644 --- a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java +++ b/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();} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java deleted file mode 100644 index 6375bdee..00000000 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java +++ /dev/null @@ -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> getPage(BmsErpInfo param){ - PageUtil.startPage(); - LambdaQueryWrapper erpInfoWrapper = new LambdaQueryWrapper<>(param); - List 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 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); - } - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 8a629f73..243eea41 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/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> getList(BmsRegion param){ + LambdaQueryWrapper regionWrapper = new LambdaQueryWrapper<>(param); + List list = bmsRegionService.list(regionWrapper); + return R.ok(list); + } /** * 翻页查询 @@ -72,6 +89,17 @@ public class BmsRegionController { @PreAuthorize("hasRole('bms:region:query')") public R getById(@PathVariable("id") String id){ BmsRegion bmsRegion = bmsRegionService.getById(id); + if(StringUtils.hasText(bmsRegion.getPid())&&bmsRegion.getPid().equals("0")){ + bmsRegion.setPid(null); + } + List defaultFactories = bmsFactoryService.list(); + if(CollectionUtil.isNotEmpty(bmsRegion.getFactoryIds())){ + //todo 排序失效 + List 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 diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuSupplierController.java index bfe376ff..97fd3ab8 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuSupplierController.java +++ b/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(); + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index e1b92f23..46b3b60e 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/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> getList(BmsSupplier param){ + LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); + if(CollectionUtil.isNotEmpty(param.getRegionIds())){ + supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); + } + List 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> 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 supplierWrapper = new LambdaQueryWrapper<>(param); + if(CollectionUtil.isNotEmpty(param.getRegionIds())){ + supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); + } List 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> getTree(BmsSupplier param){ LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); + if(CollectionUtil.isNotEmpty(param.getRegionIds())){ + supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); + } List list = bmsSupplierService.list(supplierWrapper); initSupplierList(list); - List 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 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 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 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 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); } } } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierUserController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierUserController.java deleted file mode 100644 index 21f98b7d..00000000 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierUserController.java +++ /dev/null @@ -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> getPage(BmsSupplierUser param){ - PageUtil.startPage(); - LambdaQueryWrapper supplierUserWrapper = new LambdaQueryWrapper<>(param); - List 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 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); - } - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java index e769c383..dd8fb44f 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java +++ b/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> getPage(BmsSupplierAddress param){ - if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){ - return R.error("未授权"); - } + BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); + param.setSupplierId(Long.parseLong(supplier.getId())); PageUtil.startPage(); LambdaQueryWrapper supplierAddressWrapper = new LambdaQueryWrapper<>(param); List list = bmsSupplierAddressService.list(supplierAddressWrapper); @@ -56,9 +51,8 @@ public class BmsSupplierAddressApi { */ @GetMapping("/list") public R> getList(BmsSupplierAddress param){ - if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){ - return R.error("未授权"); - } + BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); + param.setSupplierId(Long.parseLong(supplier.getId())); LambdaQueryWrapper supplierAddressWrapper = new LambdaQueryWrapper<>(param); List 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 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); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java index 1c6f15f7..4f01383d 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java +++ b/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> getPage(BmsSupplierBand param){ - if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){ - return R.error("未授权"); - } + BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); + param.setSupplierId(Long.parseLong(supplier.getId())); PageUtil.startPage(); LambdaQueryWrapper supplierBandWrapper = new LambdaQueryWrapper<>(param); List list = bmsSupplierBandService.list(supplierBandWrapper); @@ -55,9 +50,8 @@ public class BmsSupplierBandApi { */ @GetMapping("/list") public R> getList(BmsSupplierBand param){ - if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){ - return R.error("未授权"); - } + BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); + param.setSupplierId(Long.parseLong(supplier.getId())); LambdaQueryWrapper supplierBandWrapper = new LambdaQueryWrapper<>(param); List 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); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsErpInfo.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsErpInfo.java deleted file mode 100644 index 48e76f13..00000000 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsErpInfo.java +++ /dev/null @@ -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; - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java index 0761675b..5fa6a4f1 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index 786ac166..cde41ec5 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierUser.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierUser.java deleted file mode 100644 index 1efe9327..00000000 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierUser.java +++ /dev/null @@ -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; - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java index 49114da8..d7c6dd09 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java new file mode 100644 index 00000000..d7298f31 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsErpInfoMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsErpInfoMapper.java deleted file mode 100644 index 541c7328..00000000 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsErpInfoMapper.java +++ /dev/null @@ -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 { - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierUserMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierUserMapper.java deleted file mode 100644 index 080d12d5..00000000 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierUserMapper.java +++ /dev/null @@ -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 { - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsErpInfoService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsErpInfoService.java deleted file mode 100644 index 132ef097..00000000 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsErpInfoService.java +++ /dev/null @@ -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 getByCode(String code); - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java index f5bcab48..03e6c457 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java +++ b/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 getByCode(String code); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java index d4d96f91..85782008 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java +++ b/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 goodsSkus){ + /** + * 返回错误的规格id列表 + * @param supplier + * @param goodsSkus + * @return + */ + public List checkErrSkuIds(BmsSupplier supplier,List goodsSkus){ + //返回的错误sku + List errSkuIds = new ArrayList<>(); List skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList()); List spuIds = goodsSkus.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()); List 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 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 banedSpuIds = spuSupplierRules.stream() + .filter(spuSupplier -> spuSupplier.getBanStatus().equals(1)) + .map(skuSupplier -> skuSupplier.getSpuId()) + .collect(Collectors.toList()); + + if(banedSpuIds.size()>0){ + List invalidSkuIds = goodsSkus.stream().filter(sku->banedSpuIds.stream().anyMatch(spuId->sku.getSpuId().equals(spuId))) + .map(sku->sku.getId()).collect(Collectors.toList()); + errSkuIds.addAll(invalidSkuIds); + } + //已通过的规格 + List passSpuIds = spuSupplierRules.stream() + .filter(spuSupplier -> spuSupplier.getBanStatus().equals(0)) + .map(skuSupplier -> skuSupplier.getSpuId()) + .collect(Collectors.toList()); + if(passSpuIds.size()>0){ + List 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 spuIdsTemp = spuIds; - List 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 enableRuleSkus = bmsRuleSkuService.listEnableRuleWithSkuIds(skuIds); List ruleIds = enableRuleSkus.stream().map(BmsRuleSku::getRuleId).distinct().collect(Collectors.toList()); @@ -84,12 +105,13 @@ public class BmsRuleMainService { List 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 getSkuSupplierRules(String supplierId, List skuIds) { diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierUserService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierUserService.java deleted file mode 100644 index 0fa433d3..00000000 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierUserService.java +++ /dev/null @@ -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 { - - /** - * 检查当前微信人员是否有操作供应商权限 - * @param supplierId - * @return - */ - boolean checkWxUserSupplier(Long supplierId); - boolean checkWxUserSupplier(Long supplierId,String userId); - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsErpInfoServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsErpInfoServiceImpl.java deleted file mode 100644 index cb5b457f..00000000 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsErpInfoServiceImpl.java +++ /dev/null @@ -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 implements BmsErpInfoService { - - @Override - public BmsErpInfo getByCode(String code) { - - return null; - } - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java index 90186134..9103a2e6 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java +++ b/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 implements BmsFactoryService { + @Override + public BmsFactory getByCode(String code) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsFactory::getCode,code); + return getOne(lqw,false); + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index e11aabf5..09f1867f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/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 implements BmsSupplierService { private BmsRegionService regionService; + private SysUserService sysUserService; @Override public List selectSupplierList(BmsSupplier bmsSupplier) { @@ -36,12 +41,23 @@ public class BmsSupplierServiceImpl extends ServiceImpl 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 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; - } -} - diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java index 1966286b..ab00c957 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java +++ b/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> getPage(GoodsSku param){ + public R> getPage(GoodsSku param){ PageUtil.startPage(); - LambdaQueryWrapper skuWrapper = new LambdaQueryWrapper<>(param); - List list = goodsSkuService.list(skuWrapper); + List list = goodsSkuService.selectSkuVo(param); return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java index 3244335c..c5e4c70c 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java +++ b/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> getPage(GoodsSpec param){ + LambdaQueryWrapper specWrapper = new LambdaQueryWrapper<>(param); + List 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); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 339a2712..8e978ca2 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/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(); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuSpecController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuSpecController.java index 0271d7ed..2d63463e 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuSpecController.java +++ b/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 diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java index 277e70de..aa7e9781 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java +++ b/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字") diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 4d0c1c5c..b57d2d39 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/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") diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuTasteBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuTasteBo.java index 7f0f0c67..0219d0e4 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuTasteBo.java +++ b/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; - } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuBatchResult.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuBatchResult.java new file mode 100644 index 00000000..1e25abb1 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java index 6703840d..e3d24c1f 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java index 93317407..19fdc33f 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java +++ b/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 getByCode(String code); - void saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo); + List saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo); } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index fb5b1b3d..3ad583f2 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/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 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 im } @Override - public void saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo) { + public List saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo) { + List 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 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 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 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; } } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 9b9b5720..7ab15e60 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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 generateConfirmOrder(@RequestBody @Valid OmsConfirmOrderBo confirmOrder){ + public R generateConfirmOrder(@RequestBody @Valid OmsConfirmOrderBo confirmOrder){ return R.ok(omsOrderService.generateConfirmOrder(confirmOrder)); } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java index af7b597e..03aeed37 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java +++ b/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> 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 shoppingCartWrapper = new LambdaQueryWrapper<>(param); shoppingCartWrapper.eq(OmsShoppingCart::getUserId,wxUser.getSysUserId()); PageUtil.startPage(); - List list = omsShoppingCartService.list(shoppingCartWrapper); - return R.byPageHelperList(list); + List shoppingCarts = omsShoppingCartService.list(shoppingCartWrapper); + //校验 + List skuIds = shoppingCarts.stream().map(OmsShoppingCart::getSkuId).collect(Collectors.toList()); + GoodsSku goodsSku = new GoodsSku(); + goodsSku.setSelectSkuIds(skuIds); + //过滤无效sku + List goodsSkus = goodsSkuService.selectSkuVo(goodsSku); + List 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 goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList()); + List 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 errSkuIds = bmsRuleMainService.checkErrSkuIds(supplier,Arrays.asList(goodsSku)); + if(errSkuIds.size()>0){ return R.error("部分产品未授权"); } List 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(); } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java index 2f990e4f..773f8bb4 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java +++ b/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; + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java index 8f446981..9f6894ca 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java +++ b/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; /** 数量 */ diff --git a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsCalcAmount.java b/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsCalcAmount.java index e66324a8..9c7e6c6c 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/dto/OmsCalcAmount.java +++ b/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; - } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderVo.java b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java similarity index 86% rename from src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderVo.java rename to src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java index a1dbd5d3..c42f05bd 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderVo.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index cd070547..76ca2d31 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/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 { * @param confirmOrder * @return */ - OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder); + OmsConfirmOrderResult generateConfirmOrder(OmsConfirmOrderBo confirmOrder); } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index a5f3f572..ea51deec 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/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 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 shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId()); - //todo 检验规则 - //检验库存 - //计算供应商折扣 - //计算是否有活动优惠 - return null; + List skuIds; + if(CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())){ + //购物车 + List 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 goodsSkus = goodsSkuService.selectSkuVo(goodsSku); + List 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 goodsSkuEntities = goodsSkus.stream().map(vo-> CopierUtil.copy(vo,new GoodsSku())).collect(Collectors.toList()); + List 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; } } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index 3e3cd3d3..cfbf681d 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/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; /** diff --git a/src/main/resources/mapper/goods/GoodsSkuMapper.xml b/src/main/resources/mapper/goods/GoodsSkuMapper.xml index eae02131..888b43ec 100644 --- a/src/main/resources/mapper/goods/GoodsSkuMapper.xml +++ b/src/main/resources/mapper/goods/GoodsSkuMapper.xml @@ -18,6 +18,7 @@ + @@ -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`, FROM `goods_sku` `goods_sku` LEFT JOIN `goods_spu` ON `goods_sku`.`spu_id` = `goods_spu`.id