diff --git a/src/main/java/com/qs/serve/controller/AdminPortalController.java b/src/main/java/com/qs/serve/controller/AdminPortalController.java index 2d05652a..75f2763c 100644 --- a/src/main/java/com/qs/serve/controller/AdminPortalController.java +++ b/src/main/java/com/qs/serve/controller/AdminPortalController.java @@ -11,12 +11,23 @@ import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; -import com.qs.serve.common.util.IdUtil; -import com.qs.serve.common.util.JwtUtils; -import com.qs.serve.common.util.ServletUtils; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.*; import com.qs.serve.controller.dto.SyLoginParam; import com.qs.serve.controller.util.SyKeyLoginUtil; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsSupplierAddressService; +import com.qs.serve.modules.goods.entity.GoodsCategory; +import com.qs.serve.modules.goods.entity.GoodsSku; +import com.qs.serve.modules.goods.entity.GoodsSpu; +import com.qs.serve.modules.goods.service.GoodsCategoryRuleService; +import com.qs.serve.modules.goods.service.GoodsCategoryService; +import com.qs.serve.modules.goods.service.GoodsSkuService; +import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.oms.entity.OmsOrder; +import com.qs.serve.modules.oms.entity.OmsOrderItem; +import com.qs.serve.modules.oms.service.OmsOrderItemService; +import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; @@ -26,6 +37,7 @@ import com.qs.serve.modules.sys.entity.dto.SysLoginByPhoneParam; import com.qs.serve.modules.sys.entity.dto.SysLoginParam; import com.qs.serve.modules.sys.entity.dto.SysResetPwdByPhoneParam; import com.qs.serve.modules.sys.mapper.SysNoticeUserMapper; +import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.sys.service.SysTenantService; import com.qs.serve.modules.sys.service.SysUserLoginService; import com.qs.serve.modules.sys.service.SysUserService; @@ -74,6 +86,14 @@ public class AdminPortalController { private TzcPolicyService policyService; private TbsActivityService activityService; + private OmsOrderService omsOrderService; + private OmsOrderItemService omsOrderItemService; + private BmsSupplierAddressService bmsSupplierAddressService; + private GoodsCategoryRuleService goodsCategoryRuleService; + private GoodsSpuService goodsSpuService; + private GoodsSkuService goodsSkuService; + private GoodsCategoryService goodsCategoryService; + /** * 获取所有租户 @@ -273,5 +293,35 @@ public class AdminPortalController { return R.ok(); } + /** + * 根据ID查询 + * @param id + * @return + */ + @GetMapping("/getOrder/{id}") + public R getById(@PathVariable("id") String id,String supplierId){ + OmsOrder omsOrder = omsOrderService.getById(id); + omsOrder.setBrandRuleInfo(goodsCategoryRuleService.getById(omsOrder.getBrandRuleId())); + omsOrder.setAddressInfo(bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId())); + if(omsOrder.getSupplierId().toString().equals(supplierId)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(OmsOrderItem::getOrderId,id); + List list = omsOrderItemService.list(lqw); + for (OmsOrderItem orderItem : list) { + GoodsSpu goodsSpu = goodsSpuService.getById(orderItem.getSpuId()); + GoodsCategory goodsCategory = goodsCategoryService.getById(goodsSpu.getCategoryLast()); + orderItem.setCategoryInfo(goodsCategory); + orderItem.setSpuInfo(goodsSpu); + GoodsSku goodsSku = goodsSkuService.getById(orderItem.getSkuId()); + if(goodsSku!=null){ + orderItem.setSkuSpecialFlag(goodsSku.getSpecialFlag()); + } + } + omsOrder.setOrderItems(list); + return R.ok(omsOrder); + } + + return R.error(); + } } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java index 14005b22..f477be58 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java @@ -34,9 +34,6 @@ public class BmsAccountUserServiceImpl extends ServiceImpl userList = sysUserMapper.selectList(new LambdaQueryWrapper() .select(SysUser::getId,SysUser::getName,SysUser::getCode) .in(SysUser::getId,param.getUserIds()) diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java index 68db4452..54f12699 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java @@ -69,7 +69,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl (newRegion.getLevel())){ supplier.setRegion2Second(sortList.get(0)); - //层级变小,由三级变二级 - supplier.setRegionThird("0"); + log.debug("层级变小,由三级变二级"); + supplier.setRegion2Third("0"); }if (orgRegion.getLevel() < (newRegion.getLevel())){ - //层级变小,由一级变二级 - supplier.setRegionThird(supplier.getRegion2Second()); + log.debug("层级变大,由一级变二级"); + supplier.setRegion2Third(supplier.getRegion2Second()); + supplier.setRegion2Second(sortList.get(0)); + }else { + log.debug("二级,平级更新"); supplier.setRegion2Second(sortList.get(0)); + if(!StringUtils.hasText(supplier.getRegion2Third())){ + supplier.setRegion2Last(supplier.getRegion2Second()); + } } }else { //一级 - supplier.setRegionFirst(sortList.get(0)); - //平级更换 + log.debug("更换变一级"); + supplier.setRegion2First(sortList.get(0)); + supplier.setRegion2Last(sortList.get(0)); if (orgRegion.getLevel() > (newRegion.getLevel())){ - //层级变小,由二级变一级 - supplier.setRegionSecond(supplier.getRegionThird()); - supplier.setRegionThird("0"); + log.debug("层级变小,由二级变一级"); + Assert.throwEx("二级变一级不支持"); + supplier.setRegion2Second(supplier.getRegion2Third()); + supplier.setRegion2Third("0"); + }else { + supplier.setRegion2Second("0"); + supplier.setRegion2Third("0"); } } bmsSupplierMapper.updateById(supplier); } } + this.updateById(newRegion); + //this.flushAllLevel(true); return true; } @Override public List listTreeChildByDeep(String pid,Integer parentLevel){ List list = this.listChild(pid); + if(parentLevel > 2 && CollectionUtil.isNotEmpty(list)){ + Assert.throwEx("最高只能设置3层级"); + } for (BmsRegion2 region2 : list) { List childList = listTreeChildByDeep(region2.getId(),parentLevel++); - if(parentLevel > 3 && CollectionUtil.isNotEmpty(childList)){ - Assert.throwEx("最高只能设置3层级"); - } region2.setChildNodes(childList); } return list; @@ -302,8 +317,8 @@ public class BmsRegion2ServiceImpl extends ServiceImpl3){ - Assert.throwEx("最高支持4层级"); + if(parent.getLevel()>2){ + Assert.throwEx("最高支持3层级"); } param.setLevel(parent.getLevel()+1); param.setPathIds(parent.getPathIds()+"_"+param.getId()); diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java index 4916ba45..8f391913 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java @@ -158,6 +158,8 @@ public class GoodsCategoryController { spuNode.setCode(goodsSpu.getSpuCode()); spuNode.setName(goodsSpu.getName()); spuNode.setCostFlag(goodsSpu.getCostFlag()); + spuNode.setBookBelong(goodsSpu.getBookBelong()); + spuNode.setBookName(goodsSpu.getBookName()); treeNode.addChildren(spuNode); } } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java index d3729b87..d4f1085d 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java @@ -59,9 +59,12 @@ public class GoodsCategory implements Serializable { @Length(max = 255,message = "图片长度不能超过255字") private String picUrl; - /** 账套 */ + /** 账套编码 */ private String bookBelong; + /** 账套名称 */ + private String bookName; + /** 排序 */ private Integer sort; 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 6d7cedb4..54e3c487 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 @@ -105,9 +105,12 @@ public class GoodsSku implements Serializable { /** 备注 */ private String remark; - /** 账套 */ + /** 账套编码 */ private String bookBelong; + /** 账套名称 */ + private String bookName; + /** 产地 */ @NotNull(message = "产地不能为空") private String belong; 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 5fe7920e..0161fec3 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 @@ -114,9 +114,12 @@ public class GoodsSpu implements Serializable { /** 可投放费用标识 */ private Integer costFlag; - /** 账套 */ + /** 账套编码 */ private String bookBelong; + /** 账套名称 */ + private String bookName; + /** 在线下单 */ private Integer orderOnlineFlag; @@ -198,6 +201,9 @@ public class GoodsSpu implements Serializable { @TableField(exist = false) private String skuName; + @TableField(exist = false) + private String belong; + /** 重量(kg) */ @TableField(exist = false) @NotNull(message = "重量(kg)不能为空") diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java index 3b6631ae..2e6addbd 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java @@ -41,6 +41,12 @@ public class GoodsCategoryTreeVo extends TreeNode { @Length(max = 16,message = "名称长度不能超过16字") private String name; + /** 账套编码 */ + private String bookBelong; + + /** 账套名称 */ + private String bookName; + /** 描述 */ @Length(max = 255,message = "描述长度不能超过255字") private String description; diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java index af098f09..b1d968dc 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java @@ -36,6 +36,9 @@ public interface GoodsSkuMapper extends BaseMapper { List selectSkuVo(@Param("query") GoodsSku goodsSku); + @InterceptorIgnore(tenantLine = "1") + int updateBookInfo(@Param("categoryIds")List categoryIds,@Param("bookCode") String bookCode,@Param("bookName") String bookName); + @InterceptorIgnore(tenantLine = "1") List selectByCategoryIds(@Param("categoryIds")List categoryIds,@Param("tenantId")String tenantId); diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java index af79eecb..a3ebbd1b 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java @@ -6,9 +6,13 @@ import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.IdUtil; +import com.qs.serve.modules.bms.entity.BmsAccount; +import com.qs.serve.modules.bms.mapper.BmsAccountMapper; import com.qs.serve.modules.goods.common.GoodsConst; import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; +import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; +import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -17,6 +21,7 @@ import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -30,6 +35,10 @@ import java.util.stream.Collectors; @AllArgsConstructor public class GoodsCategoryServiceImpl extends ServiceImpl implements GoodsCategoryService { + private final GoodsSkuMapper goodsSkuMapper; + private final GoodsSpuMapper goodsSpuMapper; + private final BmsAccountMapper accountMapper; + @Override public GoodsCategory getByCode(String code) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -47,7 +56,21 @@ public class GoodsCategoryServiceImpl extends ServiceImpl() + .eq(BmsAccount::getBookCode,category.getBookBelong())); + + GoodsCategory dbData = null; + if(category.getId()!=null){ + dbData = this.getById(category.getId()); + if(dbData==null){ + Assert.throwEx("类目不存在"); + } + }else { + if(bookAcc==null){ + Assert.throwEx("账套不存在"); + } + } + GoodsCategory parent = null; if( category.getParentId()!=null&&!category.getParentId().equals(0L)){ parent = this.getById(category.getParentId()); @@ -59,15 +82,22 @@ public class GoodsCategoryServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); - lqw.and(v1->{ - v1.eq(GoodsCategory::getLevelPath,dbData.getLevelPath()) - .or().likeRight(GoodsCategory::getLevelPath,dbData.getLevelPath()+"_"); - }); - List childList = this.list(lqw); - int diffLevel = dbData.getLevel()-category.getLevel(); - List categoryList = childList.stream().map(obj->{ - GoodsCategory par = new GoodsCategory(); - par.setId(obj.getId()); - par.setLevel(obj.getLevel()+diffLevel); - par.setLevelPathNames(obj.getLevelPathNames().replace(dbData.getLevelPathNames(),category.getLevelPathNames())); - par.setLevelPath(obj.getLevelPath().replace(dbData.getLevelPath(),category.getLevelPath())); - return par; - }).collect(Collectors.toList()); - this.updateBatchById(categoryList); - }else { - //不进行更新 - category.setParentId(null); - category.setLevel(null); - category.setLevelPathNames(null); - category.setLevelPath(null); - } - this.updateById(category); - + GoodsCategory finalDbData = dbData; + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.and(v1->{ + v1.eq(GoodsCategory::getLevelPath, finalDbData.getLevelPath()) + .or().likeRight(GoodsCategory::getLevelPath, finalDbData.getLevelPath()+"_"); + }); + List childList = this.list(lqw); + int diffLevel = dbData.getLevel()-category.getLevel(); + List categoryList = childList.stream().map(obj->{ + GoodsCategory par = new GoodsCategory(); + par.setId(obj.getId()); + par.setLevel(obj.getLevel()+diffLevel); + par.setLevelPathNames(obj.getLevelPathNames().replace(finalDbData.getLevelPathNames(),category.getLevelPathNames())); + par.setLevelPath(obj.getLevelPath().replace(finalDbData.getLevelPath(),category.getLevelPath())); + par.setBookBelong(category.getBookBelong()); + par.setBookName(category.getBookName()); + return par; + }).collect(Collectors.toList()); + this.updateBatchById(categoryList); } - + //更新SKU + List cateIds = Arrays.asList(category.getId()); + goodsSkuMapper.updateBookInfo(cateIds,bookAcc.getBookCode(),bookAcc.getBookName()); + + //更新SPU + GoodsSpu spuParam = new GoodsSpu(); + spuParam.setBookBelong(bookAcc.getBookCode()); + spuParam.setBookName(bookAcc.getBookName()); + goodsSpuMapper.update(spuParam,new LambdaQueryWrapper() + .in(GoodsSpu::getCategoryFirst,cateIds) + .or() + .in(GoodsSpu::getCategorySecond,cateIds) + .or() + .in(GoodsSpu::getCategoryThird,cateIds) + ); } @Override diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index 7e7d08f6..2027c286 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java @@ -5,14 +5,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.*; import com.qs.serve.modules.goods.common.GoodsConst; -import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; -import com.qs.serve.modules.goods.entity.GoodsSpecValue; -import com.qs.serve.modules.goods.entity.GoodsSpu; +import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice; import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; +import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; import com.qs.serve.modules.goods.service.GoodsSpecValueService; @@ -21,7 +20,6 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +40,8 @@ import java.util.stream.Collectors; @AllArgsConstructor public class GoodsSkuServiceImpl extends ServiceImpl implements GoodsSkuService { + private GoodsCategoryMapper goodsCategoryMapper; + private GoodsSpuMapper goodsSpuMapper; private GoodsSkuSpecValueService goodsSkuSpecValueService; private GoodsSpecValueService goodsSpecValueService; private SeeYonRequestBaseService seeYonRequestBaseService; @@ -262,6 +262,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl im goodsSku.setId(dbGoodSku.getId()); } + //拓展spu + GoodsSpu goodsSpu = goodsSpuMapper.selectById(goodsSku.getId()); + if(goodsSpu==null){ + Assert.throwEx("商品SKU不存在"); + } + GoodsCategory goodsCategory = goodsCategoryMapper.selectById(goodsSpu.getCategoryFirst()); + if(goodsCategory==null){ + Assert.throwEx("商品SKU ‘"+goodsSpu.getSpuCode()+"’ 关联的分类不存在"); + } + goodsSku.setBookBelong(goodsCategory.getBookBelong()); + goodsSku.setBookName(goodsCategory.getBookName()); + //校验规格值 String specInfos = goodsSku.getBelong().trim()+";"+goodsSku.getTasteVal().trim()+";"+goodsSku.getWrapVal().trim(); LambdaQueryWrapper checkSkuSpec = new LambdaQueryWrapper<>(); diff --git a/src/main/resources/mapper/goods/GoodsSkuMapper.xml b/src/main/resources/mapper/goods/GoodsSkuMapper.xml index ccb68d37..9bd1cffe 100644 --- a/src/main/resources/mapper/goods/GoodsSkuMapper.xml +++ b/src/main/resources/mapper/goods/GoodsSkuMapper.xml @@ -72,6 +72,34 @@ goods_sku.`belong` + + update `goods_sku` + LEFT JOIN `goods_spu` + ON goods_sku.spu_id = goods_spu.id + set goods_sku.book_belong = #{bookCode},goods_sku.book_name = #{bookName} + WHERE + 1=1 + and goods_sku.del_flag = 0 + and goods_sku.enable = 1 + and goods_spu.shelf = 1 + and ( + goods_spu.category_third in + + #{selectId} + + or + goods_spu.category_second in + + #{selectId} + + or + goods_spu.category_first in + + #{selectId} + + ) + + + +