From dcdb0231034810232f2542f3865666ebf72daf11 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 30 四月 2025 16:45:34 +0800 Subject: [PATCH] sf --- server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java | 392 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 292 insertions(+), 100 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java index ad4b0c8..fc4b844 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java @@ -18,15 +18,21 @@ import com.doumee.dao.business.join.GoodsJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.model.dto.*; +import com.doumee.dao.system.model.SystemDepartment; +import com.doumee.service.CateParamSelectService; import com.doumee.service.business.BaseDataService; import com.doumee.service.business.GoodsService; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.swagger.v3.oas.annotations.callbacks.Callback; +import lombok.extern.java.Log; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -41,6 +47,7 @@ import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.*; +import java.util.stream.Collectors; /** * 鍟嗗搧淇℃伅琛⊿ervice瀹炵幇 @@ -62,6 +69,8 @@ @Autowired private CategoryMapper categoryMapper; @Autowired + private BaseCategoryMapper baseCategoryMapper; + @Autowired private CateAttrMapper cateAttrMapper; @Autowired private CateParamMapper cateParamMapper; @@ -77,10 +86,13 @@ @Autowired private GoodsJoinMapper goodsJoinMapper; + + @Lazy @Autowired - private CateParamSelectMapper cateParamSelectMapper; + private CateParamSelectService cateParamSelectService; - + @Autowired + private RedisTemplate redisTemplate; @Override @@ -128,7 +140,10 @@ return goods.getId(); } + + @Async @Override + @Transactional( rollbackFor = {Exception.class, BusinessException.class}) public Integer createPlat(GoodCreatePlatRequest param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(), Constants.UserType.COMPANY.getKey())){ @@ -150,6 +165,11 @@ if(category.getPlatCateId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇峰墠寰�銆愮被鍒鐞嗐�戝厛鍏宠仈骞冲彴绫诲埆锛�"); } + BaseCategory baseCategory = baseCategoryMapper.selectById(category.getPlatCateId()); + if(baseCategory == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇峰墠寰�銆愮被鍒鐞嗐�戝厛鍏宠仈骞冲彴绫诲埆锛�"); + } + BaseGoods bp = new BaseGoods(); bp.setCategoryId(category.getPlatCateId()); bp.setIsdeleted(Constants.ZERO); @@ -172,24 +192,40 @@ // 濡傛灉閫夋嫨骞冲彴鍟嗗搧鍜屾煡璇㈢粨鏋滃涓嶄笂锛屾彁绀洪敊璇� throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋纭�夋嫨骞冲彴鍟嗗搧锛�"); } - for(BaseGoods model : goodsList){ - //閬嶅巻骞冲彴鍟嗗搧淇℃伅锛岃繘琛屽晢鍝佷俊鎭悓姝� - Goods goods = initGoodsPlatParam(user,model,param); - if(goods == null){ - continue; + List<Multifile> multifileList = new ArrayList<>(); + List<GoodsParam> goodsParamList = new ArrayList<>(); + try{ + for(BaseGoods model : goodsList){ + //閬嶅巻骞冲彴鍟嗗搧淇℃伅锛岃繘琛屽晢鍝佷俊鎭悓姝� + //鍒嗙被鍔犱环绯绘暟 + + model.setCateRatePrice(baseCategory.getPriceRate()); + Goods goods = initGoodsPlatParam(user,model,param); + if(goods == null){ + continue; + } + goodsMapper.insert(goods); + //寮�濮嬪鐞嗛檮浠� + dealPlatMultifule(goods.getId(),user,model,multifileList); + //寮�濮嬪鐞嗗弬鏁伴厤缃� + dealPlatGoodsParam(model,goods,user,goodsParamList); } - goodsMapper.insert(goods); - //寮�濮嬪鐞嗛檮浠� - dealPlatMultifule(goods.getId(),user,model); - //寮�濮嬪鐞嗗弬鏁伴厤缃� - dealPlatGoodsParam(model,goods,user); + if(multifileList.size()>0){ + multifileMapper.insertBatch(multifileList); + } + if(goodsParamList.size()>0){ + goodsParamMapper.insertBatch(goodsParamList); + } + cateParamSelectService.dealCateParamSelect(); + }catch (Exception e){ + e.printStackTrace(); + }finally { + redisTemplate.opsForValue().set(user.getCompanyId()+Constants.OPEN_SYNC_SWITCH,false); } - - return 1; } - private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user) { + private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user,List<GoodsParam> paramList) { BaseGoodsParam baseGoodsParam = new BaseGoodsParam(); baseGoodsParam.setGoodsId(model.getId()); baseGoodsParam.setIsdeleted(Constants.ZERO); @@ -197,6 +233,16 @@ if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ for (int i = 0; i < goodsParamList.size(); i++) { BaseGoodsParam bgParam = goodsParamList.get(i); + //鏍规嵁骞冲彴鍟嗗搧閰嶇疆鐨勫钩鍙板弬鏁颁俊鎭煡璇紒涓氱粦瀹氱殑鍙傛暟淇℃伅 杩涜瀛樺偍鍒� 浼佷笟鍟嗗搧鍙傛暟鍐� + CateParam cateParam = cateParamMapper.selectOne(new QueryWrapper<CateParam>() + .eq("CATEGORY_ID",goods.getCategoryId()) + .eq("BASE_CATE_PARAM_ID",bgParam.getPramaId()) + .eq("ISDELETED",Constants.ZERO) + .eq("STATUS",Constants.ZERO) + .last(" limit 1 ")); +// if(Objects.isNull(cateParam)){ +// throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浼佷笟鍒嗙被鏁版嵁鍚屾寮傚父璇疯仈绯荤鐞嗗憳"); +// } GoodsParam goodsParam = new GoodsParam(); goodsParam.setCreator(user.getId()); goodsParam.setCreateDate(new Date()); @@ -206,7 +252,9 @@ goodsParam.setGoodsId(goods.getId()); goodsParam.setVal(bgParam.getVal()); goodsParam.setName(bgParam.getName()); - goodsParamMapper.insert(goodsParam); + goodsParam.setPramaId(Objects.isNull(cateParam)?null:cateParam.getId()); + paramList.add(goodsParam); +// goodsParamMapper.insert(goodsParam); } } } @@ -215,6 +263,7 @@ Goods goods = new Goods(); goods.setIsdeleted(Constants.ZERO); goods.setGoodsId(model.getId()); + goods.setCompanyId(user.getCompanyId()); if(goodsMapper.selectCount(new QueryWrapper<>(goods))>0){ //濡傛灉宸茬粡鍚屾杩囷紝璺宠繃姝ゆ鍚屾 return null; @@ -242,10 +291,12 @@ /** * 寮�濮嬪鐞嗗钩鍙板晢鍝佸叧鑱旈檮浠讹紝澶嶅埗涓�濂楀埌浼佷笟鍟嗗搧涓� */ - private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model) { + private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model,List<Multifile> fileList ) { Multifile f = new Multifile(); f.setObjId(model.getId()); + f.setObjType(Constants.ONE); f.setIsdeleted(Constants.ZERO); + f.setObjType(Constants.ONE); List<Multifile> multifileList =multifileMapper.selectList(new QueryWrapper<>(f)); if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){ for (int i = 0; i < multifileList.size(); i++) { @@ -261,7 +312,8 @@ multifile.setName(multifile.getName()); multifile.setSortnum(multifile.getSortnum()); multifile.setCompanyId(user.getCompanyId()); - multifileMapper.insert(multifile); + fileList.add(multifile); +// multifileMapper.insert(multifile); } } } @@ -270,16 +322,17 @@ if(Constants.equalsInteger(Constants.ONE, param.getType())){ for(PlatGoodsParam p: param.getGoodsParamList()){ if(Constants.equalsInteger(model.getId(),p.getGoodsId())){ - return p.getPrice(); + return p.getPrice().setScale(0,BigDecimal.ROUND_CEILING); } } + throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"鏁版嵁寮傚父璇峰埛鏂伴噸璇�"); } //濡傛灉娌℃湁閰嶇疆鍏ユ墜浠凤紝瀹夎鍔犱环绯绘暟鏉ヨ绠� if(model.getCateRatePrice()==null){ model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate()); } - //杩斿洖 - return Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate()); + //杩斿洖 .multiply(model.getCateRatePrice()) + return (Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate())).setScale(0,BigDecimal.ROUND_CEILING); } @@ -308,6 +361,9 @@ if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){ for (int i = 0; i < multifileList.size(); i++) { Multifile multifile = multifileList.get(i); + if(StringUtils.isBlank(multifile.getFileurl())){ + continue; + } multifile.setCreator(user.getId()); multifile.setCreateDate(new Date()); multifile.setIsdeleted(Constants.ZERO); @@ -315,6 +371,7 @@ multifile.setObjId(goods.getId()); multifile.setType(Constants.ZERO); multifile.setObjType(Constants.ZERO); + multifile.setCompanyId(goods.getCompanyId()); multifileMapper.insert(multifile); } } @@ -322,6 +379,7 @@ if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ for (int i = 0; i < goodsParamList.size(); i++) { GoodsParam goodsParam = goodsParamList.get(i); + goodsParam.setId(null); goodsParam.setCreator(user.getId()); goodsParam.setCreateDate(new Date()); goodsParam.setIsdeleted(Constants.ZERO); @@ -329,20 +387,6 @@ goodsParam.setSortnum(i+Constants.ONE); goodsParam.setGoodsId(goods.getId()); goodsParamMapper.insert(goodsParam); - //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦� - if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>() - .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){ - CateParamSelect cateParamSelect = new CateParamSelect(); - cateParamSelect.setCreator(user.getId()); - cateParamSelect.setCreateDate(new Date()); - cateParamSelect.setName(goodsParam.getVal()); - cateParamSelect.setIsdeleted(Constants.ZERO); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelect.setParamId(goodsParam.getPramaId()); - cateParamSelect.setCategoryId(goods.getCategoryId()); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelectMapper.insert(cateParamSelect); - }; } } return goods.getId(); @@ -369,7 +413,10 @@ if (CollectionUtils.isEmpty(ids)) { return; } - goodsMapper.deleteBatchIds(ids); + for(Integer id : ids){ + deleteById(id); + } +// goodsMapper.deleteBatchIds(ids); } @Override @@ -427,7 +474,8 @@ }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐧诲綍鐢ㄦ埛绫诲埆閿欒锛屾棤娉曡繘琛岃鎿嶄綔"); } - if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).ne("id",goods.getId()).eq("name",goods.getName()))>0){ + if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()) + .eq("ISDELETED",Constants.ZERO).ne("id",goods.getId()).eq("name",goods.getName()))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+goods.getName()+"銆戝凡瀛樺湪"); }; goods.setStatus(Constants.ZERO); @@ -439,7 +487,8 @@ goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName())); goodsMapper.updateById(goods); - multifileMapper.delete(new QueryWrapper<Multifile>().eq("OBJ_ID",goods.getId())); + multifileMapper.delete(new QueryWrapper<Multifile>().eq("OBJ_ID",goods.getId()) + .eq("OBJ_TYPE",0).eq("COMPANY_ID",user.getCompanyId())); List<Multifile> multifileList = goods.getMultifileList(); if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){ for (int i = 0; i < multifileList.size(); i++) { @@ -450,6 +499,7 @@ multifile.setSortnum(i+Constants.ONE); multifile.setObjId(goods.getId()); multifile.setType(Constants.ZERO); + multifile.setCompanyId(goods.getCompanyId()); multifile.setObjType(Constants.ZERO); multifileMapper.insert(multifile); } @@ -459,6 +509,7 @@ if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ for (int i = 0; i < goodsParamList.size(); i++) { GoodsParam goodsParam = goodsParamList.get(i); + goodsParam.setId(null); goodsParam.setCreator(user.getId()); goodsParam.setCreateDate(new Date()); goodsParam.setIsdeleted(Constants.ZERO); @@ -467,19 +518,19 @@ goodsParam.setGoodsId(goods.getId()); goodsParamMapper.insert(goodsParam); //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦� - if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>() - .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){ - CateParamSelect cateParamSelect = new CateParamSelect(); - cateParamSelect.setCreator(user.getId()); - cateParamSelect.setCreateDate(new Date()); - cateParamSelect.setName(goodsParam.getVal()); - cateParamSelect.setIsdeleted(Constants.ZERO); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelect.setParamId(goodsParam.getPramaId()); - cateParamSelect.setCategoryId(goods.getCategoryId()); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelectMapper.insert(cateParamSelect); - }; +// if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>() +// .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){ +// CateParamSelect cateParamSelect = new CateParamSelect(); +// cateParamSelect.setCreator(user.getId()); +// cateParamSelect.setCreateDate(new Date()); +// cateParamSelect.setName(goodsParam.getVal()); +// cateParamSelect.setIsdeleted(Constants.ZERO); +// cateParamSelect.setStatus(Constants.ZERO); +// cateParamSelect.setParamId(goodsParam.getPramaId()); +// cateParamSelect.setCategoryId(goods.getCategoryId()); +// cateParamSelect.setStatus(Constants.ZERO); +// cateParamSelectMapper.insert(cateParamSelect); +// }; } } } @@ -504,7 +555,7 @@ throw new BusinessException(ResponseStatus.DATA_EMPTY); } //鎷夊紡鍟嗗搧 涓� 涓婃灦鏃讹紝闇�瑕侀檺鍒� 骞冲彴鍟嗗搧鏄惁宸蹭笅鏋� - if(dbGoods.getType().equals(Constants.goodsType.PULL)&&goods.getStatus().equals(Constants.ZERO)){ + if(dbGoods.getType().equals(Constants.goodsType.PULL.getValue())&&goods.getStatus().equals(Constants.ZERO)){ BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId()); if(Objects.isNull(baseGoods)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌骞冲彴鍟嗗搧淇℃伅"); @@ -542,7 +593,7 @@ continue; } //鎷夊紡鍟嗗搧 涓� 涓婃灦鏃讹紝闇�瑕侀檺鍒� 骞冲彴鍟嗗搧鏄惁宸蹭笅鏋� - if(dbGoods.getType().equals(Constants.goodsType.PULL)&&batchDisableDTO.getStatus().equals(Constants.ZERO)){ + if(dbGoods.getType().equals(Constants.goodsType.PULL.getValue())&&batchDisableDTO.getStatus().equals(Constants.ZERO)){ BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId()); if(Objects.isNull(baseGoods)||!baseGoods.getStatus().equals(Constants.ZERO)){ errNum++; @@ -575,7 +626,7 @@ if(!Objects.isNull(category)){ goods.setCategoryName(category.getName()); } - goods.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",id))); + goods.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_TYPE",Constants.ZERO).eq("OBJ_ID",id))); return goods; } @@ -597,6 +648,7 @@ queryWrapper.leftJoin(Category.class, Category::getId, Goods::getCategoryId); queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId); queryWrapper.eq(Goods::getStatus,Constants.ZERO); + queryWrapper.eq(Goods::getCompanyId, goods.getCompanyId()); queryWrapper.eq(Goods::getIsdeleted,Constants.ZERO); queryWrapper.like(StringUtils.isNotBlank(goods.getAttrFirstIds()),Goods::getAttrFirstIds,goods.getAttrFirstIds()); queryWrapper.like(StringUtils.isNotBlank(goods.getAttrFirstNames()),Goods::getAttrFirstNames,goods.getAttrFirstNames()); @@ -607,14 +659,11 @@ queryWrapper.between(!Objects.isNull(goods.getSPrice())&&!Objects.isNull(goods.getEPrice()), Goods::getPrice,goods.getSPrice(),goods.getEPrice()); queryWrapper.orderByDesc(Goods::getId); - List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper); - String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() - + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); - goodsList.forEach(i->{ - i.setPrefixUrl(prefixUrl); - i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM "))); - i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId()).orderByAsc(" SORTNUM "))); - }); + List<Goods> goodsList = this.goodsMapper.selectListByCollection(goods); + // List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper); + if(!Objects.isNull(goodsList)&&goodsList.size()>Constants.ZERO){ + this.dealGoodsMsg(goodsList); + } return goodsList; } @@ -647,7 +696,9 @@ if (pageWrap.getModel().getStatus() != null) { queryWrapper.eq(Goods::getStatus, pageWrap.getModel().getStatus()); } - + if (pageWrap.getModel().getType() != null) { + queryWrapper.eq(Goods::getType, pageWrap.getModel().getType()); + } if (pageWrap.getModel().getCategoryId() != null) { queryWrapper.eq(Goods::getCategoryId, pageWrap.getModel().getCategoryId()); } @@ -664,9 +715,8 @@ goodsIPage.getRecords().forEach(i->{ i.setPrefixUrl(prefixUrl); if(i.getType().equals(Constants.ONE)){ - i.setBasePrice(i.getBasePrice().multiply(i.getBasePriceRate())); + i.setBasePrice(Constants.formatBigdecimal(i.getBasePrice()).multiply(Constants.formatBigdecimal(i.getBasePriceRate())).setScale(0,BigDecimal.ROUND_CEILING)); } - }); return PageData.from(goodsIPage); } @@ -747,9 +797,9 @@ if(brand == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣鍟嗗搧鍝佺墝鏃犳晥锛岃妫�鏌ヨ緭鍏ワ紒"); } - if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("ISDELETED",Constants.ZERO).eq("name",m.getName()))>0){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+m.getName()+"銆戝凡瀛樺湪"); - }; + if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).eq("name",m.getName()))>0){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"绗��"+(num)+"銆戣銆�"+m.getName()+"銆戝凡瀛樺湪"); + } Goods newModel = new Goods(); newModel.setRemark(m.getId()); newModel.setCategoryId(cate.getId()); @@ -780,7 +830,7 @@ String proDir =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode(); String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() - + proDir; + + proDir + File.separator + user.getCompanyId(); if(StringUtils.isNotBlank(path)){ OssModel ossModel = baseDataService.initOssModel(); File dir =new File(path+File.separator+newModel.getRemark()+File.separator); @@ -801,7 +851,7 @@ if(mulFiles==null){ mulFiles = new ArrayList<>(); } - mulFiles.add(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),f)); + mulFiles.add(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),mf)); } } } @@ -845,19 +895,19 @@ //鎻掑叆浜у搧鍙傛暟鍏宠仈琛� goodsParamMapper.insert(gp); //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦� - if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>() - .eq("PARAM_ID",gp.getPramaId()).eq("NAME",gp.getName()))<=Constants.ZERO){ - CateParamSelect cateParamSelect = new CateParamSelect(); - cateParamSelect.setCreator(user.getId()); - cateParamSelect.setCreateDate(new Date()); - cateParamSelect.setName(gp.getVal()); - cateParamSelect.setIsdeleted(Constants.ZERO); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelect.setParamId(gp.getPramaId()); - cateParamSelect.setCategoryId(newModel.getCategoryId()); - cateParamSelect.setStatus(Constants.ZERO); - cateParamSelectMapper.insert(cateParamSelect); - }; +// if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>() +// .eq("PARAM_ID",gp.getPramaId()).eq("NAME",gp.getName()))<=Constants.ZERO){ +// CateParamSelect cateParamSelect = new CateParamSelect(); +// cateParamSelect.setCreator(user.getId()); +// cateParamSelect.setCreateDate(new Date()); +// cateParamSelect.setName(gp.getVal()); +// cateParamSelect.setIsdeleted(Constants.ZERO); +// cateParamSelect.setStatus(Constants.ZERO); +// cateParamSelect.setParamId(gp.getPramaId()); +// cateParamSelect.setCategoryId(newModel.getCategoryId()); +// cateParamSelect.setStatus(Constants.ZERO); +// cateParamSelectMapper.insert(cateParamSelect); +// }; } } if(mulFiles !=null && mulFiles.size()>0){ @@ -872,6 +922,107 @@ f.setCreator(newModel.getCreator()); f.setIsdeleted(Constants.ZERO); f.setSortnum(i); + f.setCompanyId(user.getCompanyId()); + f.setFileurl(s); + multifileMapper.insert(f); + } + } + num++; + } + return num; + + } + @Transactional(rollbackFor = {Exception.class, BusinessException.class}) + @Override + public Integer importBatchImg(MultipartFile file){ + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + ExcelImporter ie = null; + List<GoodsImport> dataList =null; + try { + ie = new ExcelImporter(file,0,0); + dataList = ie.getDataList(GoodsImport.class,null); + } catch (Exception e) { + e.printStackTrace(); + } + if(dataList == null || dataList.size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�"); + } + + int num =1; + for(GoodsImport m: dataList){ + if( StringUtils.isBlank(m.getId()) ){ + continue; + } + Goods g = new Goods(); + g.setIsdeleted(Constants.ZERO); + g.setRemark(m.getId()); + g.setCompanyId(user.getCompanyId()); + //鍝佺被鏁版嵁 + g = goodsMapper.selectOne(new QueryWrapper<>(g).last(" limit 1")); + if(g == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣鍟嗗搧涓嶅瓨鍦紝璇锋鏌ヨ緭鍏ワ紒"); + } + + Goods newModel = new Goods(); + newModel.setId(g.getId()); + newModel.setEditor(user.getId()); + newModel.setEditDate(new Date()); + + String[] params = StringUtils.defaultString(m.getParamStr(),"").split("\n"); + List<String> mulFiles = null; + String proDir =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode(); + + String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() + + proDir + File.separator + user.getCompanyId(); + if(StringUtils.isNotBlank(path)){ + OssModel ossModel = baseDataService.initOssModel(); + File dir =new File(path+File.separator+newModel.getRemark()+File.separator); + if(dir!=null && dir.isDirectory()){ + File[] files = dir.listFiles(); + if(files!=null && files.length>0){ + for(File f:files){ + if(StringUtils.isBlank(newModel.getImgurl()) && isImgFile(f)){ + //鍙栫涓�寮犲浘鐗囦綔涓哄垪琛ㄥ浘 + newModel.setImgurl(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),f)); + } + if((mulFiles ==null || mulFiles.size() == 0) && f.isDirectory()){ + //濡傛灉鏄枃浠跺す + File[] fs = f.listFiles(); + if(fs!=null && fs.length>0){ + for(File mf : fs){ + if(isImgFile(mf)){ + if(mulFiles==null){ + mulFiles = new ArrayList<>(); + } + mulFiles.add(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),mf)); + } + } + } + } + } + } + } + } + //鏌ヨ鍟嗗搧淇℃伅 + goodsMapper.updateById(newModel); + if(mulFiles !=null && mulFiles.size()>0){ + multifileMapper.update(null,new UpdateWrapper<Multifile>().lambda() + .set(Multifile::getIsdeleted,Constants.ONE) + .eq(Multifile::getIsdeleted,Constants.ZERO) + .eq(Multifile::getObjId,g.getId()) + .eq(Multifile::getType,Constants.ZERO)); + for(int i=0;i<mulFiles.size();i++){ + String s = mulFiles.get(i); + Multifile f = new Multifile(); + f.setObjType(Constants.ZERO); + f.setName(s); + f.setType(Constants.ZERO); + f.setObjId(newModel.getId()); + f.setCreateDate(newModel.getCreateDate()); + f.setCreator(newModel.getCreator()); + f.setIsdeleted(Constants.ZERO); + f.setSortnum(i); + f.setCompanyId(user.getCompanyId()); f.setFileurl(s); multifileMapper.insert(f); } @@ -970,6 +1121,7 @@ @Override public void export(HttpServletRequest request, HttpServletResponse response) throws Exception { try { + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); String fileName = "浜у搧瀵煎叆琛�"+System.currentTimeMillis()+".xlsx"; // 鑾峰彇鏂囦欢杈撳叆娴� InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("static/file/goodsExcelTemp.xlsx"); @@ -983,7 +1135,10 @@ // sheet.getPhysicalNumberOfRows()鑾峰彇鎬荤殑琛屾暟 // 寰幆璇诲彇姣忎竴琛� Row row = sheet.createRow(1); - List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().eq("ISDELETED",0)); + List<Category> categoryList = categoryMapper.selectList( + new QueryWrapper<Category>().eq("ISDELETED",0) + .eq("COMPANY_ID",loginUserInfo.getCompanyId()) + ); categoryList.forEach(i->{ i.setParamList(cateParamMapper.selectList(new QueryWrapper<CateParam>().eq("ISDELETED",0).eq("CATEGORY_ID",i.getId()))); }); @@ -1042,25 +1197,53 @@ .or().like(Goods::getShortPinyin,pageWrap.getModel().getKeyword()) .or().like(Goods::getName,pageWrap.getModel().getKeyword()) ) - .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ") - .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ") +// .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ") +// .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ") + .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " t.id in ( SELECT gp.GOODS_ID FROM cate_param_select cps , goods_param gp where gp.PRAMA_ID = cps.PARAM_ID and gp.VAL = cps.`NAME` " + + " and cps.ID = '"+pageWrap.getModel().getAttrFirst()+"' ) ") + .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " t.id in ( SELECT gp.GOODS_ID FROM cate_param_select cps , goods_param gp where gp.PRAMA_ID = cps.PARAM_ID and gp.VAL = cps.`NAME` " + + " and cps.ID = '"+pageWrap.getModel().getAttrSecond()+"' ) ") .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getSPrice()), " t.PRICE >= "+pageWrap.getModel().getSPrice()+" ") .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getEPrice()), " t.PRICE <= "+pageWrap.getModel().getEPrice()+" "); queryWrapper.orderByDesc(Goods::getId); IPage<Goods> goodsIPage = goodsJoinMapper.selectJoinPage(page, Goods.class, queryWrapper); - String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() - + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); - goodsIPage.getRecords().forEach(i->{ - i.setPrefixUrl(prefixUrl); - i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM "))); - i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId()).orderByAsc(" SORTNUM "))); - }); + if(!Objects.isNull(goodsIPage.getRecords())&&goodsIPage.getRecords().size()>Constants.ZERO){ + this.dealGoodsMsg(goodsIPage.getRecords()); + } return PageData.from(goodsIPage); } + + public void dealGoodsMsg(List<Goods> goodsList){ + String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); + String prefixUrlCategory = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); + List<Integer> integerList = goodsList.stream().map(Goods::getId).collect(Collectors.toList()); + + List<Multifile> mFileList = multifileMapper.selectList(new QueryWrapper<Multifile>() + .lambda().in(Multifile::getObjId,integerList) + .eq(Multifile::getType,Constants.ZERO) + .eq(Multifile::getIsdeleted,Constants.ZERO) + .eq(Multifile::getObjType,Constants.ZERO)); + List<GoodsParam> goodsParamList = goodsParamMapper.selectList(new QueryWrapper<GoodsParam>() + .in("GOODS_ID",integerList) + .orderByAsc(" SORTNUM ")); + goodsList.forEach(i->{ + i.setCategoryImgurl(prefixUrlCategory + i.getCategoryImgurl()); + i.setPrefixUrl(prefixUrl); + i.setMultifileList(mFileList.stream().filter(s -> s.getObjId().equals(i.getId())).collect(Collectors.toList())); + i.setGoodsParamList(goodsParamList.stream().filter(s -> s.getGoodsId().equals(i.getId())).collect(Collectors.toList())); + }); + } + @Override public List<Goods> findListForH5(GoodsRequest goodsRequest) { + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.UserType.ZHUBO.getKey())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰富鎾敤鎴锋棤娉曚娇鐢�"); + } MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(Goods.class); queryWrapper.selectAs(Category::getName, Goods::getCategoryName); @@ -1072,6 +1255,7 @@ queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId); queryWrapper.eq(Goods::getStatus,Constants.ZERO); queryWrapper.eq(Goods::getIsdeleted,Constants.ZERO); + queryWrapper.eq(Goods::getCompanyId,loginUserInfo.getCompanyId()); queryWrapper.eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getCategoryId()), Goods::getCategoryId, goodsRequest.getCategoryId()) .eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getBrandId()), Goods::getBrandId, goodsRequest.getBrandId()) .and(!Objects.isNull(goodsRequest) && StringUtils.isNotBlank(goodsRequest.getKeyword()), @@ -1085,15 +1269,23 @@ .apply(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getEPrice()), " t.PRICE <= "+goodsRequest.getEPrice()+" "); queryWrapper.orderByDesc(Goods::getId); List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper); - String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() - + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); - goodsList.forEach(i->{ - i.setPrefixUrl(prefixUrl); - i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM "))); - i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId()).orderByAsc(" SORTNUM "))); - }); + if(!Objects.isNull(goodsList)&&goodsList.size()>Constants.ZERO){ + this.dealGoodsMsg(goodsList); + } return goodsList; } + + + @Override + @Transactional + public void openSyncSwitch() { + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + Boolean openSyncSwitch = (Boolean)redisTemplate.opsForValue().get(loginUserInfo.getCompanyId()+Constants.OPEN_SYNC_SWITCH); + if(openSyncSwitch!=null && openSyncSwitch ){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鍚屾涓紝璇风◢鍚庡埛鏂伴噸璇�"); + } + redisTemplate.opsForValue().set(loginUserInfo.getCompanyId()+Constants.OPEN_SYNC_SWITCH,true); + } } -- Gitblit v1.9.3