123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801 |
- package com.kmall.admin.service.impl;
- import com.google.common.collect.ImmutableBiMap;
- import com.kmall.admin.dao.*;
- import com.kmall.admin.dto.GoodsDto;
- import com.kmall.admin.entity.*;
- import com.kmall.admin.service.GoodsService;
- import com.kmall.api.contants.Dict;
- import com.kmall.common.entity.SysUserEntity;
- import com.kmall.common.utils.*;
- import com.kmall.common.utils.excel.ExcelImport;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import java.math.BigDecimal;
- import java.util.*;
- /**
- * Service实现类
- *
- * @author Scott
- * @email
- * @date 2017-08-21 21:19:49
- */
- @Service("goodsService")
- public class GoodsServiceImpl implements GoodsService {
- @Autowired
- private GoodsDao goodsDao;
- @Autowired
- private GoodsAttributeDao goodsAttributeDao;
- @Autowired
- private AttributeDao attributeDao;
- @Autowired
- private ProductDao productDao;
- @Autowired
- private GoodsGalleryDao goodsGalleryDao;
- @Autowired
- private GoodsSpecificationDao goodsSpecificationDao;
- @Autowired
- private ProductStoreRelaDao productStoreRelaDao;
- @Autowired
- private StoreDao storeDao;
- @Autowired
- private GoodsGroupDao goodsGroupDao;
- @Autowired
- private CategoryDao categoryDao;
- @Autowired
- private SupplierDao supplierDao;
- @Autowired
- private BrandDao brandDao;
- @Autowired
- private FreightDao freightDao;
- @Autowired
- private SysCusNationCodeDao sysCusNationCodeDao;
- @Autowired
- private SysCusUnitCodeDao sysCusUnitCodeDao;
- @Override
- public GoodsEntity queryObject(Integer id) {
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("goodsId", id);
- List<GoodsAttributeEntity> attributeEntities = goodsAttributeDao.queryList(map);
- List<ProductEntity> productEntityList = productDao.queryList(map);
- GoodsEntity entity = goodsDao.queryObject(id);
- entity.setAttributeEntityList(attributeEntities);
- entity.setProductEntityList(productEntityList);
- return entity;
- }
- @Override
- public GoodsEntity queryObjectByProdBarcodeAndBizType(String prodBarcode){
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("prodBarcode", prodBarcode);
- GoodsEntity entity = goodsDao.queryObjectByProdBarcodeAndBizType(prodBarcode);
- return entity;
- }
- @Override
- public List<GoodsEntity> queryList(Map<String, Object> map) {
- return goodsDao.queryList(map);
- }
- @Override
- public List<GoodsEntity> querySame(Map<String, Object> map) {
- return goodsDao.querySame(map);
- }
- @Override
- public int queryTotal(Map<String, Object> map) {
- return goodsDao.queryTotal(map);
- }
- @Override
- @Transactional
- public int save(GoodsEntity goods) {
- Map<String, Object> valideDate = MapBeanUtil.fromObject(goods);
- ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
- builder.put("attributeCategory", "商品分类");
- builder.put("categoryId", "商品二级分类");
- builder.put("goodsSn", "商品编码");
- builder.put("name", "商品名称");
- builder.put("goodsUnit", "商品单位");
- builder.put("prodBarcode", "产品条码");
- builder.put("goodsBizType", "货品业务类型");
- builder.put("brandId", "品牌");
- builder.put("supplierId", "供应商");
- builder.put("freightId", "运费模版");
- builder.put("primaryPicUrl", "商品主图");
- builder.put("listPicUrl", "商品列表图");
- builder.put("goodsDesc", "商品描述");
- builder.put("isOnSale", "上架");
- builder.put("isHot", "热销");
- R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- } else {
- if (!Dict.orderBizType.item_11.getItem().equals(goods.getGoodsBizType())) {
- // 海关信息,普通货物可不添加
- builder.put("sku", "SKU");
- builder.put("goodsRate", "商品税率");
- builder.put("retailPrice", "零售价");
- builder.put("brand", "产品品牌");
- builder.put("unitCode", "计量单位代码");
- builder.put("cusGoodsCode", "海关商品编码");
- builder.put("ciqProdModel", "国检规格型号");
- builder.put("oriCntCode", "原产国代码");
- builder.put("cusDeclEle", "海关申报要素");
- builder.put("cusRecCode", "海关备案编号");
- }
- r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- }
- }
- // 商品轮播图
- List<GoodsGalleryEntity> galleryEntityList = goods.getGoodsImgList();
- if (galleryEntityList == null || galleryEntityList.size() <= 0) {
- throw new RRException("至少添加一张商品轮播图!");
- }
- GoodsEntity prodbarGoods = goodsDao.queryObjectByProdBarcode(goods.getProdBarcode(),"",null);
- if(prodbarGoods != null){
- throw new RRException("不能有重复的产品条码信息!");
- }
- SysUserEntity user = ShiroUtils.getUserEntity();
- Map<String, Object> map = new HashMap<>();
- map.put("isSame", "true");
- map.put("sku", goods.getSku());
- map.put("goodsSn", goods.getGoodsSn());
- map.put("goodsBizType", goods.getGoodsBizType());
- List<GoodsEntity> list = querySame(map);
- if (list != null && list.size() != 0) {
- throw new RRException("已存在该商品编码或该货品业务类型下已存在此SKU!");
- }
- // 添加商品
- if (Dict.orderBizType.item_02.getItem().equals(goods.getGoodsBizType())
- || Dict.orderBizType.item_10.getItem().equals(goods.getGoodsBizType())) {
- goods.setIsHot(0);
- }
- goods.setAttributeCategory(categoryDao.queryObject(goods.getCategoryId()).getParentId());
- goods.setAddTime(new Date());
- goods.setIsDelete(0);
- goods.setIsNew(0);
- goods.setCreateUserId(user.getUserId());
- goods.setUpdateUserId(user.getUserId());
- goods.setUpdateTime(new Date());
- goods.setModTime(new Date());
- goods.setCreateTime(new Date());
- // 新增商品
- goodsDao.save(goods);
- Long id = goods.getId();
- // 添加商品轮播图
- for (int i=0;i<galleryEntityList.size();i++) {
- GoodsGalleryEntity galleryEntity =galleryEntityList.get(i);
- galleryEntity.setGoodsId(id);
- galleryEntity.setSortOrder((i+1));
- galleryEntity.setFileType("0");//图片
- goodsGalleryDao.save(galleryEntity);
- }
- if(org.apache.commons.lang.StringUtils.isNotEmpty(goods.getVideoUrl())){
- GoodsGalleryEntity galleryEntity = new GoodsGalleryEntity();
- galleryEntity.setGoodsId(id);
- galleryEntity.setSortOrder(0);
- galleryEntity.setFileType("1");//视频
- goodsGalleryDao.save(galleryEntity);
- }
- // 添加商品参数
- List<GoodsAttributeEntity> attributeEntityList = goods.getAttributeEntityList();
- if (attributeEntityList != null && attributeEntityList.size() > 0) {
- for (GoodsAttributeEntity item : attributeEntityList) {
- if (item.getIsDelete() == 0) {
- if (item.getId() == null && item.getAttributeId() != null && StringUtils.isNotEmpty(item.getValue())) {
- item.setGoodsId(id);
- goodsAttributeDao.save(item);
- } else if (item.getId() == null && item.getAttributeId() != null && StringUtils.isNullOrEmpty(item.getValue())) {
- throw new RRException("商品属性【" + attributeDao.queryObject(item.getAttributeId()).getName() + "】值不能为空!");
- } else if (item.getId() == null && item.getAttributeId() == null) {
- continue;
- }
- }
- }
- }
- // 添加产品
- ProductEntity product = new ProductEntity();
- product.setGoodsId(id);
- product.setGoodsSn(goods.getGoodsSn());
- // 保税商品,普通货物暂不添加商品规格
- if (!Dict.orderBizType.item_11.getItem().equals(goods.getGoodsBizType())) {
- // 添加商品规格
- GoodsSpecificationEntity goodsSpecification = new GoodsSpecificationEntity();
- goodsSpecification.setGoodsId(id);
- goodsSpecification.setValue(goods.getCiqProdModel());
- goodsSpecification.setSpecificationId(1);
- goodsSpecificationDao.save(goodsSpecification);
- product.setGoodsSpecificationIds(goodsSpecification.getId().toString());
- product.setGoodsSpecificationNameValue(goodsSpecification.getValue());
- }
- return productDao.save(product);
- }
- @Override
- @Transactional
- public int update(GoodsEntity goods) {
- Map<String, Object> valideDate = MapBeanUtil.fromObject(goods);
- ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
- builder.put("attributeCategory", "商品分类");
- builder.put("categoryId", "商品二级分类");
- builder.put("goodsSn", "商品编码");
- builder.put("name", "商品名称");
- builder.put("goodsUnit", "商品单位");
- builder.put("prodBarcode", "产品条码");
- builder.put("goodsBizType", "货品业务类型");
- builder.put("brandId", "品牌");
- builder.put("supplierId", "供应商");
- builder.put("freightId", "运费模版");
- builder.put("primaryPicUrl", "商品主图");
- builder.put("listPicUrl", "商品列表图");
- builder.put("goodsDesc", "商品描述");
- builder.put("isOnSale", "上架");
- builder.put("isHot", "热销");
- R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- } else {
- if (!Dict.orderBizType.item_11.getItem().equals(goods.getGoodsBizType())) {
- // 海关信息,普通货物可不添加
- builder.put("sku", "SKU");
- builder.put("goodsRate", "商品税率");
- builder.put("retailPrice", "零售价");
- builder.put("brand", "产品品牌");
- builder.put("unitCode", "计量单位代码");
- builder.put("cusGoodsCode", "海关商品编码");
- builder.put("ciqProdModel", "国检规格型号");
- builder.put("oriCntCode", "原产国代码");
- builder.put("cusRecCode", "海关备案编号");
- builder.put("cusDeclEle", "海关申报要素");
- }
- r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- }
- }
- // 商品轮播图
- List<GoodsGalleryEntity> galleryEntityList = goods.getGoodsImgList();
- if (galleryEntityList == null || galleryEntityList.size() <= 0) {
- throw new RRException("至少保留一张商品轮播图!");
- }
- GoodsEntity prodbarGoods = goodsDao.queryObjectByProdBarcode(goods.getProdBarcode(),"",goods.getId());
- if(prodbarGoods != null){
- throw new RRException("不能有重复的产品条码信息!");
- }
- SysUserEntity user = ShiroUtils.getUserEntity();
- Map<String, Object> map = new HashMap<>();
- map.put("isSame", "true");
- map.put("sku", goods.getSku());
- map.put("goodsSn", goods.getGoodsSn());
- map.put("goodsBizType", goods.getGoodsBizType());
- map.put("id", goods.getId());
- List<GoodsEntity> list = querySame(map);
- if (list != null && list.size() != 0) {
- throw new RRException("已存在该商品编码或该货品业务类型下已存在此SKU!");
- }
- // 修改商品
- if (Dict.orderBizType.item_02.getItem().equals(goods.getGoodsBizType())
- || Dict.orderBizType.item_10.getItem().equals(goods.getGoodsBizType())) {
- goods.setIsHot(0);
- }
- goods.setAttributeCategory(categoryDao.queryObject(goods.getCategoryId()).getParentId());
- goods.setIsDelete(0);
- goods.setIsNew(0);
- goods.setUpdateUserId(user.getUserId());
- goods.setUpdateTime(new Date());
- goods.setModTime(new Date());
- // 修改商品
- goodsDao.update(goods);
- // 保税商品修改各个门店商品价格
- if (!Dict.orderBizType.item_11.getItem().equals(goods.getGoodsBizType())) {
- List<ProductStoreRelaEntity> productStoreRelaEntityList = productStoreRelaDao.queryByGoodsId(goods.getId());
- if (productStoreRelaEntityList != null && productStoreRelaEntityList.size() > 0) {
- for (ProductStoreRelaEntity productStoreRela : productStoreRelaEntityList) {
- productStoreRela.setRetailPrice(goods.getRetailPrice());
- productStoreRela.setMarketPrice(goods.getMarketPrice());
- productStoreRelaDao.update(productStoreRela);
- }
- }
- }
- // 修改商品轮播图
- goodsGalleryDao.deleteByGoodsId(goods.getId());
- for (int i=0;i<galleryEntityList.size();i++) {
- GoodsGalleryEntity galleryEntity =galleryEntityList.get(i);
- galleryEntity.setGoodsId(goods.getId());
- galleryEntity.setSortOrder((i+1));
- galleryEntity.setFileType("0");//图片
- goodsGalleryDao.save(galleryEntity);
- }
- if(org.apache.commons.lang.StringUtils.isNotEmpty(goods.getVideoUrl())){
- GoodsGalleryEntity galleryEntity = new GoodsGalleryEntity();
- galleryEntity.setGoodsId(goods.getId());
- galleryEntity.setSortOrder(0);
- galleryEntity.setFileType("1");//视频
- galleryEntity.setImgUrl(goods.getVideoUrl());
- goodsGalleryDao.save(galleryEntity);
- }
- // 修改商品参数
- List<GoodsAttributeEntity> attributeEntityList = goods.getAttributeEntityList();
- if (attributeEntityList != null && attributeEntityList.size() > 0) {
- for (GoodsAttributeEntity item : attributeEntityList) {
- if (item.getIsDelete() == 0) {
- if (item.getId() != null) {
- goodsAttributeDao.update(item);
- } else if (item.getId() == null && item.getAttributeId() != null && StringUtils.isNotEmpty(item.getValue())) {
- item.setGoodsId(goods.getId());
- goodsAttributeDao.save(item);
- } else if (item.getId() == null && item.getAttributeId() != null && StringUtils.isNullOrEmpty(item.getValue())) {
- throw new RRException("商品属性【" + attributeDao.queryObject(item.getAttributeId()).getName() + "】值不能为空!");
- } else if (item.getId() == null && item.getAttributeId() == null) {
- continue;
- }
- } else if (item.getIsDelete() == 1) {
- goodsAttributeDao.delete(item.getId());
- }
- }
- }
- // 修改产品
- ProductEntity product = productDao.queryObjectBySn(goods.getGoodsSn());
- GoodsSpecificationEntity goodsSpecification = new GoodsSpecificationEntity();
- // 保税商品,普通货物暂不添加商品规格
- if (!Dict.orderBizType.item_11.getItem().equals(goods.getGoodsBizType())) {
- // 添加商品规格
- goodsSpecification = goodsSpecificationDao.queryByGoodsId(goods.getId());
- goodsSpecification.setValue(goods.getCiqProdModel());
- goodsSpecificationDao.update(goodsSpecification);
- }
- if(product == null){
- product = new ProductEntity();
- product.setGoodsSn(goods.getGoodsSn());
- product.setGoodsSpecificationNameValue(goodsSpecification.getValue());
- product.setGoodsSpecificationIds(goodsSpecification.getSpecificationId()+"");
- product.setGoodsId(goods.getId());
- product.setGoodsNumber(goods.getGoodsNumber());
- product.setGoodsDefault(0);
- return productDao.save(product);
- }else{
- product.setGoodsSpecificationNameValue(goodsSpecification.getValue());
- return productDao.update(product);
- }
- }
- @Override
- public int delete(Integer id) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- GoodsEntity goodsEntity = goodsDao.queryObject(id);
- goodsEntity.setIsDelete(1);
- goodsEntity.setIsOnSale(0);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- //更新团购
- Map params = new HashMap();
- params.put("goodsId", id);
- List<GoodsGroupEntity> groupVos = goodsGroupDao.queryList(params);
- if (null != groupVos && groupVos.size() > 0) {
- for (GoodsGroupEntity groupVo : groupVos) {
- groupVo.setOpenStatus(3);
- goodsGroupDao.update(groupVo);
- }
- }
- return goodsDao.update(goodsEntity);
- }
- @Override
- @Transactional
- public int deleteBatch(Integer[] ids) {
- int result = 0;
- for (Integer id : ids) {
- result += delete(id);
- }
- return result;
- }
- @Override
- @Transactional
- public int back(Integer[] ids) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- int result = 0;
- for (Integer id : ids) {
- GoodsEntity goodsEntity = queryObject(id);
- goodsEntity.setIsDelete(0);
- goodsEntity.setIsOnSale(1);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- result += goodsDao.update(goodsEntity);
- }
- return result;
- }
- @Override
- public int enSale(Integer id) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- GoodsEntity goodsEntity = queryObject(id);
- if (1 == goodsEntity.getIsOnSale()) {
- throw new RRException("此商品已处于上架状态!");
- }
- goodsEntity.setIsOnSale(1);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- return goodsDao.update(goodsEntity);
- }
- @Override
- public int unSale(Integer id) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- GoodsEntity goodsEntity = queryObject(id);
- if (0 == goodsEntity.getIsOnSale()) {
- throw new RRException("此商品已处于下架状态!");
- }
- goodsEntity.setIsOnSale(0);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- return goodsDao.update(goodsEntity);
- }
- @Override
- public int enSaleBatch(Integer[] ids) {
- int result = 0;
- SysUserEntity user = ShiroUtils.getUserEntity();
- for (Integer id : ids) {
- GoodsEntity goodsEntity = queryObject(id);
- goodsEntity.setIsOnSale(1);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- result += goodsDao.update(goodsEntity);
- }
- return result;
- }
- @Override
- public int unSaleBatch(Integer[] ids) {
- int result = 0;
- SysUserEntity user = ShiroUtils.getUserEntity();
- for (Integer id : ids) {
- GoodsEntity goodsEntity = queryObject(id);
- goodsEntity.setIsOnSale(0);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setUpdateTime(new Date());
- result += goodsDao.update(goodsEntity);
- }
- return result;
- }
- @Override
- @Transactional
- public int uploadExcel(List<GoodsDto> goodsEntityList) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- boolean isSuccess = false;
- List<String> failSameSkuList = new ArrayList<>(), failHotSkuList = new ArrayList<>(), failCateSkuList = new ArrayList<>(),
- failBrandSkuList = new ArrayList<>(), failFreightSkuList = new ArrayList<>(), failSuppSkuList = new ArrayList<>(),
- failUnitSkuList = new ArrayList<>(), failNationSkuList = new ArrayList<>(),failProdbarSkuList = new ArrayList<>(),
- failCateL2SkuList = new ArrayList<>(), failTypeSkuList = new ArrayList<>();
- List<String> failGoodsSnList = new ArrayList<>();
- List<String> failGoodsTypeList = new ArrayList<>();
- List<String> failFreightList = new ArrayList<>();
- if (goodsEntityList != null && goodsEntityList.size() > 0) {
- for (int i = 0; i < goodsEntityList.size(); i++) {
- GoodsDto goodsDto = goodsEntityList.get(i);
- GoodsEntity goodsEntity = new GoodsEntity();
- Map<String, Object> valideDate = MapBeanUtil.fromObject(goodsDto);
- ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
- builder.put("goodsSn", "商品编码");
- builder.put("categoryName", "商品分类");
- builder.put("goodsBizType", "货品业务类型");
- builder.put("name", "商品名称");
- builder.put("brandName", "商品品牌名称");
- builder.put("defaultFreight", "运费");
- builder.put("isOnSaleStr", "上架");
- builder.put("goodsUnit", "商品单位");
- builder.put("isHotStr", "热销");
- builder.put("prodBarcode", "产品条码");
- builder.put("marketPrice", "市场价");
- builder.put("retailPrice", "零售价");
- builder.put("supplierName", "供应商");
- R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- } else {
- if (!Dict.orderBizType.item_11.getItem().equals(goodsDto.getGoodsBizType())) {
- // 海关信息,普通货物可不添加
- builder.put("goodsRate", "商品税率");
- builder.put("sku", "SKU");
- builder.put("brand", "产品品牌");
- builder.put("unitName", "计量单位");
- builder.put("oriCntName", "原产国");
- builder.put("cusGoodsCode", "海关商品编码");
- builder.put("ciqProdModel", "国检规格型号");
- builder.put("cusDeclEle", "海关申报要素");
- builder.put("cusRecCode", "海关备案编号");
- }
- r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- }
- }
- if(!Dict.orderBizType.item_11.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())){
- if(!(Dict.orderBizType.item_02.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())
- || Dict.orderBizType.item_10.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())
- || Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType()))){
- isSuccess = true;
- failTypeSkuList.add(goodsDto.getSku());
- }
- }
- Map<String, Object> map = new HashMap<>();
- map.put("isSame", "true");
- map.put("sku", goodsDto.getSku());
- map.put("goodsSn", goodsDto.getGoodsSn());
- map.put("goodsBizType", goodsDto.getGoodsBizType());
- List<GoodsEntity> list = querySame(map);
- if (list != null && list.size() != 0) {
- isSuccess = true;
- if(goodsDto.getSku()!=null) {
- failSameSkuList.add(goodsDto.getGoodsSn());
- }
- failGoodsSnList.add(goodsDto.getGoodsSn());
- failGoodsTypeList.add(goodsDto.getGoodsBizType());
- }
- GoodsEntity prodbarGoods = goodsDao.queryObjectByProdBarcode(goodsDto.getProdBarcode(),"",null);
- if(prodbarGoods != null){
- isSuccess = true;
- failProdbarSkuList.add(goodsDto.getGoodsSn());
- }else{
- goodsEntity.setProdBarcode(goodsDto.getProdBarcode());
- }
- if (Dict.orderBizType.item_02.getItem().equals(goodsDto.getGoodsBizType())
- || Dict.orderBizType.item_10.getItem().equals(goodsDto.getGoodsBizType())) {
- if(goodsDto.getIsHotStr().equalsIgnoreCase("1")){
- isSuccess = true;
- failHotSkuList.add(goodsDto.getGoodsSn());
- }
- }
- CategoryEntity categoryEntity = categoryDao.queryObjectByName(goodsDto.getCategoryName());
- if(categoryEntity==null){
- isSuccess = true;
- failCateSkuList.add(goodsDto.getGoodsSn());
- }else{
- if(categoryEntity.getLevel().equalsIgnoreCase("L2")) {
- goodsEntity.setCategoryId(categoryEntity.getId());
- goodsEntity.setAttributeCategory(categoryEntity.getParentId());
- }else{
- isSuccess = true;
- failCateL2SkuList.add(goodsDto.getGoodsSn());
- }
- }
- BrandEntity brandEntity = brandDao.queryObjectByName(goodsDto.getBrandName());
- if (brandEntity == null) {
- isSuccess = true;
- failBrandSkuList.add(goodsDto.getGoodsSn());
- } else {
- goodsEntity.setBrandId(brandEntity.getId());
- }
- //运费
- FreightEntity freightEntity = freightDao.queryObjectByName(goodsDto.getDefaultFreight());
- if(freightEntity==null){
- isSuccess = true;
- failFreightSkuList.add(goodsDto.getGoodsSn());
- failFreightList.add(goodsDto.getDefaultFreight());
- }else {
- goodsEntity.setFreightId(freightEntity.getId());
- }
- if (!Dict.orderBizType.item_11.getItem().equals(goodsDto.getGoodsBizType())) {
- SupplierEntity supplierEntity = supplierDao.queryObjectByName(goodsDto.getSupplierName());
- if (supplierEntity == null) {
- isSuccess = true;
- failSuppSkuList.add(goodsDto.getGoodsSn());
- } else {
- goodsEntity.setSupplierId(supplierEntity.getId());
- }
- SysCusUnitCodeEntity sysCusUnitCodeEntity = sysCusUnitCodeDao.queryObjectByName(goodsDto.getUnitName());
- if (sysCusUnitCodeEntity == null) {
- isSuccess = true;
- failUnitSkuList.add(goodsDto.getGoodsSn());
- } else {
- goodsEntity.setUnitCode(sysCusUnitCodeEntity.getCode());
- }
- //原产国
- SysCusNationCodeEntity sysCusNationCodeEntity = sysCusNationCodeDao.queryObjectByName(goodsDto.getOriCntName());
- if (sysCusNationCodeEntity == null) {
- isSuccess = true;
- failNationSkuList.add(goodsDto.getGoodsSn());
- } else {
- goodsEntity.setOriCntCode(sysCusNationCodeEntity.getCode());
- }
- goodsEntity.setGoodsRate(BigDecimal.valueOf(Integer.valueOf(goodsDto.getGoodsRate())));
- }
- goodsEntity.setIsOnSale(Integer.parseInt(goodsDto.getIsOnSaleStr()));
- goodsEntity.setIsHot(Integer.parseInt(goodsDto.getIsHotStr()));
- goodsEntity.setRetailPrice(BigDecimal.valueOf(Integer.valueOf(goodsDto.getRetailPrice())));
- goodsEntity.setMarketPrice(BigDecimal.valueOf(Integer.valueOf(goodsDto.getMarketPrice())));
- goodsEntity.setGoodsSn(goodsDto.getGoodsSn());
- goodsEntity.setSku(goodsDto.getSku());
- goodsEntity.setName(goodsDto.getName());
- goodsEntity.setGoodsUnit(goodsDto.getGoodsUnit());
- goodsEntity.setGoodsBizType(goodsDto.getGoodsBizType());
- goodsEntity.setBrand(goodsDto.getBrand());
- goodsEntity.setCusDeclEle(goodsDto.getCusDeclEle());
- goodsEntity.setCusGoodsCode(goodsDto.getCusGoodsCode());
- goodsEntity.setCusRecCode(goodsDto.getCusRecCode());
- goodsEntity.setCiqProdModel(goodsDto.getCiqProdModel());
- goodsEntity.setIsDelete(0);
- goodsEntity.setIsNew(0);
- goodsEntity.setUpdateUserId(user.getUserId());
- goodsEntity.setAddTime(new Date());
- goodsEntity.setCreateTime(new Date());
- goodsEntity.setUpdateTime(new Date());
- goodsEntity.setModTime(new Date());
- if(!isSuccess){
- GoodsEntity goods = goodsDao.queryObjectBySn(goodsDto.getGoodsSn());
- if(goods!=null) {// 修改商品
- goodsEntity.setId(goods.getId());
- goodsDao.update(goodsEntity);
- }else{
- goodsDao.save(goodsEntity);
- }
- // 保税商品修改各个门店商品价格
- if (!Dict.orderBizType.item_11.getItem().equals(goodsDto.getGoodsBizType())) {
- List<ProductStoreRelaEntity> productStoreRelaEntityList = productStoreRelaDao.queryByGoodsId(goodsDto.getId());
- if (productStoreRelaEntityList != null && productStoreRelaEntityList.size() > 0) {
- for (ProductStoreRelaEntity productStoreRela : productStoreRelaEntityList) {
- productStoreRela.setMarketPrice(goodsEntity.getMarketPrice());
- productStoreRela.setRetailPrice(goodsEntity.getRetailPrice());
- productStoreRelaDao.update(productStoreRela);
- }
- }
- }
- // 修改产品
- ProductEntity product = productDao.queryObjectBySn(goodsDto.getGoodsSn());
- GoodsSpecificationEntity goodsSpecification = new GoodsSpecificationEntity();
- // 保税商品,普通货物暂不添加商品规格
- if (!Dict.orderBizType.item_11.getItem().equals(goodsDto.getGoodsBizType())) {
- // 添加商品规格
- GoodsSpecificationEntity specificationEntity = goodsSpecificationDao.queryByGoodsId(goodsEntity.getId());
- if(specificationEntity ==null) {
- goodsSpecification.setGoodsId(goodsEntity.getId() );
- goodsSpecification.setValue(goodsEntity.getCiqProdModel());
- goodsSpecification.setSpecificationId(1);
- goodsSpecificationDao.save(goodsSpecification);
- }else {
- goodsSpecification.setValue(goodsDto.getCiqProdModel());
- goodsSpecificationDao.update(goodsSpecification);
- }
- }
- if(product == null){
- product = new ProductEntity();
- product.setGoodsSn(goodsDto.getGoodsSn());
- product.setGoodsSpecificationNameValue(goodsSpecification.getValue());
- product.setGoodsSpecificationIds(goodsSpecification.getSpecificationId()+"");
- product.setGoodsId(goodsEntity.getId());
- product.setGoodsDefault(0);
- product.setGoodsNumber(goodsEntity.getGoodsNumber());
- productDao.save(product);
- }else{
- product.setGoodsSpecificationNameValue(goodsSpecification.getValue());
- productDao.update(product);
- }
- }
- }
- if(failGoodsSnList != null && failGoodsSnList.size() > 0){
- if(failSameSkuList.size()>0) {
- throw new RRException("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
- failGoodsTypeList + "】,SKU【" + failSameSkuList + "】的商品信息");
- }else{
- throw new RRException("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
- failGoodsTypeList + "】的商品信息");
- }
- }
- if(failTypeSkuList != null && failTypeSkuList.size() > 0){
- throw new RRException("货品业务类型只能是【00保税备货、02保税补货、10保税展示】!请检查SKU【"+failTypeSkuList+"】的商品信息");
- }
- if(failProdbarSkuList != null && failProdbarSkuList.size() > 0){
- throw new RRException("不能有重复的产品条码信息!请检查SKU【"+failProdbarSkuList+"】的商品产品条码信息");
- }
- if(failHotSkuList != null && failHotSkuList.size() > 0){
- throw new RRException("请检查业务类型为【保税补货或保税展示】的商品,sku【"+failHotSkuList+"】的商品不能设置为热销!");
- }
- if(failCateSkuList != null && failCateSkuList.size() > 0){
- throw new RRException("分类信息请在商城配置》商品分类中维护,不存在的商品sku【"+failCateSkuList+"】");
- }
- if(failCateL2SkuList != null && failCateL2SkuList.size() > 0){
- throw new RRException("分类信息请在商城配置》商品分类中查看,商品分类必须为二级分类,错误的商品sku【"+failCateL2SkuList+"】");
- }
- if(failBrandSkuList != null && failBrandSkuList.size() > 0){
- throw new RRException("品牌信息请在商城配置》品牌制造商中维护,不存在的商品sku【" + failBrandSkuList + "】");
- }
- if(failFreightSkuList != null && failFreightSkuList.size() > 0){
- throw new RRException("运费信息请在商城配置》运费模板中维护,不存在的商品sku【"+failFreightSkuList+"】,运费【"+failFreightList+"】");
- }
- if(failSuppSkuList != null && failSuppSkuList.size() > 0){
- throw new RRException("供应商信息请在商城配置》商品供应商中维护,不存在的商品sku【" + failSuppSkuList + "】");
- }
- if(failUnitSkuList != null && failUnitSkuList.size() > 0){
- throw new RRException("计算单位信息请在商城配置》计算单位中维护,不存在的商品sku【" + failUnitSkuList + "】");
- }
- if(failNationSkuList != null && failNationSkuList.size() > 0){
- throw new RRException("原产国信息请在商城配置》原产国中维护,不存在的商品sku【" + failNationSkuList + "】");
- }
- }
- return 1;
- }
- /* @Override
- @Transactional
- public int uploadExcel(MultipartFile file) {
- SysUserEntity user = ShiroUtils.getUserEntity();
- List<String[]> list = ExcelImport.getExcelData(file);
- // 取门店名称
- StoreEntity storeEntity = storeDao.queryObjectByName(list.get(0)[3]);
- if (null == storeEntity) {
- return 0;
- }
- //去除表头两行、底部合计
- if (list != null && list.size() > 3) {
- ProductStoreRelaEntity storeRelaEntity;
- ProductEntity productEntity;
- for (int i = 2; i < list.size() - 1; i++) {
- String[] item = list.get(i);
- String goodsSn = item[0];
- productEntity = productDao.queryObjectBySn(goodsSn);
- if (StringUtils.isNullOrEmpty(goodsSn)) {
- continue;
- }
- if (null == productEntity || null == productEntity.getId()) {
- continue;
- }
- storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(storeEntity.getId(), productEntity.getId());
- if (null != storeRelaEntity && null != storeRelaEntity.getId()) {
- storeRelaEntity.setRetailPrice(new BigDecimal(item[6]));
- storeRelaEntity.setStockNum(Integer.valueOf(item[3].replace(".00", "")));
- storeRelaEntity.setStockPrice(new BigDecimal(item[4]));
- productStoreRelaDao.update(storeRelaEntity);
- } else {
- storeRelaEntity = new ProductStoreRelaEntity();
- storeRelaEntity.setGoodsId(productEntity.getGoodsId());
- storeRelaEntity.setProductId(productEntity.getId());
- storeRelaEntity.setRetailPrice(new BigDecimal(item[6]));
- storeRelaEntity.setMarketPrice(new BigDecimal(item[6]));
- storeRelaEntity.setStockNum(Integer.valueOf(item[3]));
- storeRelaEntity.setStockPrice(new BigDecimal(item[4]));
- storeRelaEntity.setStoreId(storeEntity.getId());
- productStoreRelaDao.save(storeRelaEntity);
- }
- }
- }
- return 1;
- }*/
- public GoodsEntity queryObjectBySn(String goodsSn) {
- return goodsDao.queryObjectBySn(goodsSn);
- }
- }
|