From 24be50e34de89a0bb4ce2aded8b736f6a70a84de Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 25 Mar 2025 20:58:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mergedata/cur/entity/CurProdGroup.java | 2 +- .../mergedata/cur/entity/CurShopProdSpec.java | 2 +- .../service/impl/CurProdGroupServiceImpl.java | 78 +++++---- .../impl/CurShopProdSpecServiceImpl.java | 157 +++++++----------- 4 files changed, 114 insertions(+), 125 deletions(-) diff --git a/src/main/java/com/czg/mergedata/cur/entity/CurProdGroup.java b/src/main/java/com/czg/mergedata/cur/entity/CurProdGroup.java index 5b9d869..24c632f 100644 --- a/src/main/java/com/czg/mergedata/cur/entity/CurProdGroup.java +++ b/src/main/java/com/czg/mergedata/cur/entity/CurProdGroup.java @@ -32,7 +32,7 @@ public class CurProdGroup implements Serializable { /** * id */ - @Id(keyType = KeyType.Auto) + @Id(keyType = KeyType.None) private Long id; /** diff --git a/src/main/java/com/czg/mergedata/cur/entity/CurShopProdSpec.java b/src/main/java/com/czg/mergedata/cur/entity/CurShopProdSpec.java index 75b4a36..c8c9777 100644 --- a/src/main/java/com/czg/mergedata/cur/entity/CurShopProdSpec.java +++ b/src/main/java/com/czg/mergedata/cur/entity/CurShopProdSpec.java @@ -32,7 +32,7 @@ public class CurShopProdSpec implements Serializable { /** * id */ - @Id(keyType = KeyType.Auto) + @Id(keyType = KeyType.None) private Long id; /** diff --git a/src/main/java/com/czg/mergedata/cur/service/impl/CurProdGroupServiceImpl.java b/src/main/java/com/czg/mergedata/cur/service/impl/CurProdGroupServiceImpl.java index 29485c5..4592cd9 100644 --- a/src/main/java/com/czg/mergedata/cur/service/impl/CurProdGroupServiceImpl.java +++ b/src/main/java/com/czg/mergedata/cur/service/impl/CurProdGroupServiceImpl.java @@ -1,6 +1,9 @@ package com.czg.mergedata.cur.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONArray; import com.czg.mergedata.common.resp.CzgResult; import com.czg.mergedata.common.utils.PageUtils; @@ -41,7 +44,7 @@ public class CurProdGroupServiceImpl extends ServiceImpl mergeData() { getMapper().truncateTable(); curProdGroupRelationMapper.truncateTable(); @@ -61,37 +64,52 @@ public class CurProdGroupServiceImpl extends ServiceImpl oldProductGroupList) { - List curProdGroupList = new ArrayList<>(); - List curProdGroupRelationList = new ArrayList<>(); - - for (OldProductGroup oldProductGroup : oldProductGroupList) { - CurProdGroup curProdGroup = new CurProdGroup(); - - curProdGroup.setId(Long.valueOf(oldProductGroup.getId())); - curProdGroup.setName(oldProductGroup.getName()); - curProdGroup.setShopId(Long.valueOf(oldProductGroup.getId())); - curProdGroup.setPic(oldProductGroup.getPic()); - curProdGroup.setStatus(oldProductGroup.getIsShow()); - curProdGroup.setSort(oldProductGroup.getSort()); - curProdGroup.setSortMode(oldProductGroup.getSortMode()); - curProdGroup.setUseTime(oldProductGroup.getUseTime()); - curProdGroup.setSaleStartTime(oldProductGroup.getSaleStartTime()); - curProdGroup.setSaleEndTime(oldProductGroup.getSaleEndTime()); - curProdGroup.setCreateTime(DateUtil.toLocalDateTime(oldProductGroup.getCreatedAt() == null ? new Date() : new Date(oldProductGroup.getCreatedAt()))); - - curProdGroupList.add(curProdGroup); - - List list = JSONArray.parseArray(oldProductGroup.getProductIds(), Long.class); + for (OldProductGroup old : oldProductGroupList) { + Integer id = old.getId(); + String name = old.getName(); + Integer shopId = old.getShopId(); + String pic = old.getPic(); + Integer isShow = old.getIsShow(); + Integer sort = old.getSort(); + String sortMode = old.getSortMode(); + String productIds = old.getProductIds(); + Long createdAt = old.getCreatedAt(); + Long updatedAt = old.getUpdatedAt(); + Integer useTime = old.getUseTime(); + String saleStartTime = old.getSaleStartTime(); + String saleEndTime = old.getSaleEndTime(); + CurProdGroup cur = new CurProdGroup(); + cur.setId(id.longValue()); + cur.setName(name); + cur.setShopId(Long.valueOf(shopId)); + cur.setPic(pic); + cur.setStatus(isShow); + cur.setSort(sort); + cur.setSortMode(StrUtil.nullToDefault(sortMode, "0")); + cur.setUseTime(useTime); + if (StrUtil.isAllNotEmpty(saleStartTime, saleEndTime)) { + cur.setSaleStartTime(saleStartTime + ":00"); + cur.setSaleEndTime(saleEndTime + ":59"); + } + cur.setCreateTime(LocalDateTimeUtil.of(createdAt)); + cur.setUpdateTime(LocalDateTimeUtil.of(updatedAt)); + save(cur); + if (StrUtil.isEmpty(productIds)) { + continue; + } + List list = JSONArray.parseArray(productIds, Long.class); + if (CollUtil.isEmpty(list)) { + continue; + } + int index = 0; for (Long productId : list) { - CurProdGroupRelation curProdGroupRelation = new CurProdGroupRelation(); - curProdGroupRelation.setProductId(productId); - curProdGroupRelation.setProdGroupId(Long.valueOf(oldProductGroup.getId())); - curProdGroupRelation.setSort(1); - curProdGroupRelationList.add(curProdGroupRelation); + index++; + CurProdGroupRelation relation = new CurProdGroupRelation(); + relation.setProductId(productId); + relation.setProdGroupId(cur.getId()); + relation.setSort(index); + curProdGroupRelationService.save(relation); } } - - saveBatch(curProdGroupList); - curProdGroupRelationService.saveBatch(curProdGroupRelationList); } } diff --git a/src/main/java/com/czg/mergedata/cur/service/impl/CurShopProdSpecServiceImpl.java b/src/main/java/com/czg/mergedata/cur/service/impl/CurShopProdSpecServiceImpl.java index 6e917e8..5ebdf24 100644 --- a/src/main/java/com/czg/mergedata/cur/service/impl/CurShopProdSpecServiceImpl.java +++ b/src/main/java/com/czg/mergedata/cur/service/impl/CurShopProdSpecServiceImpl.java @@ -1,6 +1,11 @@ package com.czg.mergedata.cur.service.impl; +import java.time.LocalDateTime; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.czg.mergedata.common.resp.CzgResult; @@ -29,13 +34,13 @@ import java.util.stream.Collectors; * @since 2025-02-17 */ @Service -public class CurShopProdSpecServiceImpl extends ServiceImpl implements CurShopProdSpecService{ +public class CurShopProdSpecServiceImpl extends ServiceImpl implements CurShopProdSpecService { @Resource private OldProductSpecService oldProductSpecService; @Override - @Transactional + //@Transactional public CzgResult mergeProductSpec() { getMapper().truncateTable(); @@ -54,105 +59,71 @@ public class CurShopProdSpecServiceImpl extends ServiceImpl oldProductSpecs) { - List firstSpecs = new ArrayList<>(); - - // 保存一级规格 - List parentIds = List.of(0L); - String pids = parentIds.stream() - .map(Object::toString) - .collect(Collectors.joining(",")) + ","; for (OldProductSpec oldProductSpec : oldProductSpecs) { - CurShopProdSpec curShopProdSpec = new CurShopProdSpec(); + Integer id = oldProductSpec.getId(); + String shopId = oldProductSpec.getShopId(); + String name = oldProductSpec.getName(); + Integer sort = oldProductSpec.getSort(); + Long createdAt = oldProductSpec.getCreatedAt(); + Long updatedAt = oldProductSpec.getUpdatedAt(); + CurShopProdSpec one = new CurShopProdSpec(); + one.setId(id.longValue()); + one.setName(name); + one.setFullName(name); + one.setLevel(1); + one.setSort(sort); + one.setPid(0L); + one.setPids("0,"); + one.setShopId(Convert.toLong(shopId)); + one.setStatus(1); + one.setCreateTime(LocalDateTimeUtil.of(createdAt)); + one.setUpdateTime(LocalDateTimeUtil.of(updatedAt)); + save(one); - Long curShopId = Long.valueOf(oldProductSpec.getShopId()); - curShopProdSpec.setId(Long.valueOf(oldProductSpec.getId())); - curShopProdSpec.setShopId(curShopId); - curShopProdSpec.setLevel(1); - curShopProdSpec.setPid(0L); - curShopProdSpec.setPids(pids); - curShopProdSpec.setStatus(1); - curShopProdSpec.setName(oldProductSpec.getName()); - curShopProdSpec.setFullName(oldProductSpec.getName()); - curShopProdSpec.setSort(oldProductSpec.getSort() == null ? 1 : oldProductSpec.getSort()); - - firstSpecs.add(curShopProdSpec); - } - - saveBatch(firstSpecs); - - Map oldAndCurSpecIdMap = new HashMap<>(); - for (OldProductSpec oldProductSpec : oldProductSpecs) { - for (CurShopProdSpec firstSpec : firstSpecs) { - if (oldProductSpec.getName().equals(firstSpec.getName())) { - oldAndCurSpecIdMap.put(Long.valueOf(oldProductSpec.getShopId()), firstSpec); - break; - } - } - } - - // 保存二级规格 - for (OldProductSpec oldProductSpec : oldProductSpecs) { - if (StrUtil.isBlank(oldProductSpec.getSpecList())) { + String specList = oldProductSpec.getSpecList(); + if (StrUtil.isEmpty(specList)) { continue; } - - JSONArray jsonArray = JSONArray.parse(oldProductSpec.getSpecList()); - if (jsonArray.isEmpty()) { + JSONArray specListJson = JSON.parseArray(specList); + if (specListJson.isEmpty()) { continue; } + for (int i = 0; i < specListJson.size(); i++) { + JSONObject row = specListJson.getJSONObject(i); + String name2 = row.getString("name"); + int index = i + 1; + CurShopProdSpec two = new CurShopProdSpec(); + two.setId(Long.valueOf(one.getId() + "" + index)); + two.setName(name2); + two.setFullName(one.getName() + " - " + name2); + two.setLevel(2); + two.setSort(index); + two.setPid(one.getId()); + two.setPids(one.getPids() + Convert.toStr(one.getId()) + ","); + two.setShopId(Convert.toLong(shopId)); + two.setStatus(1); + two.setCreateTime(one.getCreateTime()); + two.setUpdateTime(one.getUpdateTime()); + save(two); - CurShopProdSpec first = oldAndCurSpecIdMap.get(Long.valueOf(oldProductSpec.getShopId())); - - List pids2 = List.of(0L, first.getId()); - String pids2Str = pids2.stream() - .map(Object::toString) - .collect(Collectors.joining(",")) + ","; - for (Object item : jsonArray) { - JSONObject jsonItem = (JSONObject) item; - - CurShopProdSpec curShopProdSpec = new CurShopProdSpec(); - curShopProdSpec.setName(jsonItem.getString("name")); - curShopProdSpec.setFullName(String.format("%s-%s", first.getFullName(), curShopProdSpec.getName())); - curShopProdSpec.setLevel(2); - curShopProdSpec.setSort(1); - curShopProdSpec.setPid(first.getId()); - curShopProdSpec.setPids(pids2Str); - curShopProdSpec.setShopId(first.getShopId()); - curShopProdSpec.setStatus(1); - - save(curShopProdSpec); - - String value = jsonItem.getString("value"); - if (StrUtil.isBlank(value)) { - continue; + JSONArray v = row.getJSONArray("value"); + for (int j = 0; j < v.size(); j++) { + String name3 = v.getString(j); + int seq = j + 1; + CurShopProdSpec three = new CurShopProdSpec(); + three.setId(Long.valueOf(two.getId() + "" + seq)); + three.setName(name3); + three.setFullName(two.getName() + " - " + name3); + three.setLevel(3); + three.setSort(seq); + three.setPid(two.getId()); + three.setPids(two.getPids() + Convert.toStr(two.getId()) + ","); + three.setShopId(Convert.toLong(shopId)); + three.setStatus(1); + three.setCreateTime(two.getCreateTime()); + three.setUpdateTime(two.getUpdateTime()); + save(three); } - - JSONArray array = JSONArray.parse(value); - if (array.isEmpty()) { - continue; - } - - List thirdSpecs = new ArrayList<>(); - List pids3 = List.of(0L, first.getId(), curShopProdSpec.getId()); - String pids3Str = pids3.stream() - .map(Object::toString) - .collect(Collectors.joining(",")) + ","; - for (Object item2 : array) { - String name = (String) item2; - CurShopProdSpec curShopProdSpec2 = new CurShopProdSpec(); - curShopProdSpec2.setName(name); - curShopProdSpec2.setFullName(String.format("%s-%s", curShopProdSpec.getFullName(), name)); - curShopProdSpec2.setLevel(3); - curShopProdSpec2.setSort(1); - curShopProdSpec2.setPid(curShopProdSpec.getId()); - curShopProdSpec2.setPids(pids3Str); - curShopProdSpec2.setShopId(first.getShopId()); - curShopProdSpec2.setStatus(1); - - thirdSpecs.add(curShopProdSpec2); - } - - saveBatch(thirdSpecs); } } }