Răsfoiți Sursa

sku包材替换

24282 1 an în urmă
părinte
comite
a80ad09b7a

+ 20 - 6
sd-business/src/main/java/com/sd/business/controller/sku/SkuController.java

@@ -2,10 +2,8 @@ package com.sd.business.controller.sku;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.BaseSelectDto;
-import com.sd.business.entity.sku.dto.GetReplacePrincipalMaterialListDto;
-import com.sd.business.entity.sku.dto.ReplacePrincipalMaterialDto;
-import com.sd.business.entity.sku.dto.SkuDto;
-import com.sd.business.entity.sku.dto.SkuSelectDto;
+import com.sd.business.entity.sku.dto.*;
+import com.sd.business.entity.sku.vo.ReplacePackagingMaterialVo;
 import com.sd.business.entity.sku.vo.ReplacePrincipalMaterialVo;
 import com.sd.business.entity.sku.vo.SkuVo;
 import com.sd.business.service.sku.SkuService;
@@ -76,7 +74,7 @@ public class SkuController {
      * 获取可替换主材列表
      */
     @PostMapping("/getReplacePrincipalMaterialPage")
-    public Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(@RequestBody GetReplacePrincipalMaterialListDto dto) {
+    public Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(@RequestBody GetReplaceMaterialListDto dto) {
         return skuService.getReplacePrincipalMaterialPage(dto);
     }
 
@@ -84,8 +82,24 @@ public class SkuController {
      * 替换主材
      */
     @PostMapping("/replacePrincipalMaterial")
-    public void replacePrincipalMaterial(@Validated @RequestBody ReplacePrincipalMaterialDto dto) {
+    public void replacePrincipalMaterial(@Validated @RequestBody ReplaceMaterialDto dto) {
         skuService.replacePrincipalMaterial(dto);
     }
 
+    /**
+     * 获取可替换包材列表
+     */
+    @PostMapping("/getReplacePackagingMaterialPage")
+    public Page<ReplacePackagingMaterialVo> getReplacePackagingMaterialPage(@RequestBody GetReplaceMaterialListDto dto) {
+        return skuService.getReplacePackagingMaterialPage(dto);
+    }
+
+    /**
+     * 替换包材
+     */
+    @PostMapping("/replacePackagingMaterial")
+    public void replacePackagingMaterial(@Validated @RequestBody ReplacePackagingMaterialDto dto) {
+        skuService.replacePackagingMaterial(dto);
+    }
+
 }

+ 10 - 0
sd-business/src/main/java/com/sd/business/entity/bom/bo/BomSpecBo.java

@@ -15,6 +15,11 @@ public class BomSpecBo {
     private Long bomSpecId;
 
     /**
+     * bom规格编码
+     */
+    private String bomSpecCode;
+
+    /**
      * 成本价
      */
     private BigDecimal costPrice;
@@ -30,6 +35,11 @@ public class BomSpecBo {
     private BigDecimal externalSellingPrice;
 
     /**
+     * 分类id
+     */
+    private Long classifyId;
+
+    /**
      * 分类父id
      */
     private Long classifyParentId;

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/sku/dto/GetReplacePrincipalMaterialListDto.java → sd-business/src/main/java/com/sd/business/entity/sku/dto/GetReplaceMaterialListDto.java

@@ -8,7 +8,7 @@ import java.math.BigDecimal;
 
 @Getter
 @Setter
-public class GetReplacePrincipalMaterialListDto extends BaseSelectDto {
+public class GetReplaceMaterialListDto extends BaseSelectDto {
 
     /**
      * 群组品号

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/sku/dto/ReplacePrincipalMaterialDto.java → sd-business/src/main/java/com/sd/business/entity/sku/dto/ReplaceMaterialDto.java

@@ -7,7 +7,7 @@ import javax.validation.constraints.NotNull;
 
 @Getter
 @Setter
-public class ReplacePrincipalMaterialDto extends GetReplacePrincipalMaterialListDto {
+public class ReplaceMaterialDto extends GetReplaceMaterialListDto {
 
     /**
      * 替换主材id

+ 18 - 0
sd-business/src/main/java/com/sd/business/entity/sku/dto/ReplacePackagingMaterialDto.java

@@ -0,0 +1,18 @@
+package com.sd.business.entity.sku.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Getter
+@Setter
+public class ReplacePackagingMaterialDto extends GetReplaceMaterialListDto {
+
+    /**
+     * 替换包材id
+     */
+    @NotNull(message = "替换包材id不能为空")
+    private Long replaceBomSpecId;
+
+}

+ 12 - 2
sd-business/src/main/java/com/sd/business/entity/sku/dto/SkuSelectDto.java

@@ -15,12 +15,12 @@ import lombok.Setter;
 public class SkuSelectDto extends BaseSelectDto {
 
     /**
-     * 编码
+     * 群组品号
      */
     private String code;
 
     /**
-     * 名
+     * 群组品
      */
     private String name;
 
@@ -34,4 +34,14 @@ public class SkuSelectDto extends BaseSelectDto {
      */
     private String brand;
 
+    /**
+     * 品号
+     */
+    private String specCode;
+
+    /**
+     * 品名
+     */
+    private String specName;
+
 }

+ 95 - 0
sd-business/src/main/java/com/sd/business/entity/sku/vo/ReplacePackagingMaterialVo.java

@@ -0,0 +1,95 @@
+package com.sd.business.entity.sku.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ReplacePackagingMaterialVo {
+
+    /**
+     * sku id
+     */
+    private Long skuId;
+
+    /**
+     * 群组品号
+     */
+    private String skuCode;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * sku品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * 品名
+     */
+    private String skuSpecName;
+
+    /**
+     * 彩纸
+     */
+    private String colouredPaper;
+
+    /**
+     * OPP膜
+     */
+    private String oppMembrane;
+
+    /**
+     * PE袋
+     */
+    private String peBag;
+
+    /**
+     * 网包
+     */
+    private String meshBag;
+
+    /**
+     * 纸箱
+     */
+    private String paperBox;
+
+    /**
+     * 气泡袋
+     */
+    private String bubblePack;
+
+    /**
+     * 快递包材
+     */
+    private String logisticsPackagingMaterial;
+
+    /**
+     * 其他包材
+     */
+    private String otherPackingMaterial;
+
+    /**
+     * 不干胶
+     */
+    private String selfAdhesiveSticker;
+
+    /**
+     * 吊牌
+     */
+    private String drop;
+
+    /**
+     * 背带
+     */
+    private String suspenders;
+
+    /**
+     * 辅料
+     */
+    private String accessory;
+
+}

+ 5 - 0
sd-business/src/main/java/com/sd/business/mapper/sku/SkuMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.sku.po.Sku;
+import com.sd.business.entity.sku.vo.ReplacePackagingMaterialVo;
 import com.sd.business.entity.sku.vo.ReplacePrincipalMaterialVo;
 import com.sd.business.entity.sku.vo.SkuVo;
 import org.apache.ibatis.annotations.Param;
@@ -30,4 +31,8 @@ public interface SkuMapper extends BaseMapper<Sku> {
 
     List<Long> selectReplaceSkuSpecIdList(@Param("ew") IWrapper<Object> wrapper);
 
+    Page<ReplacePackagingMaterialVo> getReplacePackagingMaterialPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
+    List<ReplacePackagingMaterialVo> getReplacePackagingMaterialList(@Param("ew") IWrapper<Object> wrapper);
+
 }

+ 14 - 6
sd-business/src/main/java/com/sd/business/service/sku/SkuService.java

@@ -2,11 +2,9 @@ package com.sd.business.service.sku;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.service.BaseService;
-import com.sd.business.entity.sku.dto.GetReplacePrincipalMaterialListDto;
-import com.sd.business.entity.sku.dto.ReplacePrincipalMaterialDto;
-import com.sd.business.entity.sku.dto.SkuDto;
-import com.sd.business.entity.sku.dto.SkuSelectDto;
+import com.sd.business.entity.sku.dto.*;
 import com.sd.business.entity.sku.po.Sku;
+import com.sd.business.entity.sku.vo.ReplacePackagingMaterialVo;
 import com.sd.business.entity.sku.vo.ReplacePrincipalMaterialVo;
 import com.sd.business.entity.sku.vo.SkuVo;
 
@@ -49,11 +47,21 @@ public interface SkuService extends BaseService<Sku> {
     /**
      * 获取可替换主材列表
      */
-    Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(GetReplacePrincipalMaterialListDto dto);
+    Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(GetReplaceMaterialListDto dto);
 
     /**
      * 替换主材
      */
-    void replacePrincipalMaterial(ReplacePrincipalMaterialDto dto);
+    void replacePrincipalMaterial(ReplaceMaterialDto dto);
+
+    /**
+     * 获取可替换包材列表
+     */
+    Page<ReplacePackagingMaterialVo> getReplacePackagingMaterialPage(GetReplaceMaterialListDto dto);
+
+    /**
+     * 替换包材
+     */
+    void replacePackagingMaterial(ReplacePackagingMaterialDto dto);
 
 }

+ 204 - 9
sd-business/src/main/java/com/sd/business/service/sku/impl/SkuServiceImpl.java

@@ -2,21 +2,20 @@ package com.sd.business.service.sku.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.entity.sku.dto.*;
 import com.sd.business.entity.sku.po.Sku;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.entity.sku.po.SkuSpecLink;
-import com.sd.business.entity.sku.vo.ReplacePrincipalMaterialVo;
-import com.sd.business.entity.sku.vo.SkuSpecLinkVo;
-import com.sd.business.entity.sku.vo.SkuSpecVo;
-import com.sd.business.entity.sku.vo.SkuVo;
+import com.sd.business.entity.sku.vo.*;
 import com.sd.business.mapper.sku.SkuMapper;
 import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.sku.SkuService;
@@ -27,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -60,6 +60,17 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
         wrapper.like("s", Sku::getName, dto.getName());
         wrapper.eq("s", Sku::getType, dto.getType());
         wrapper.eq("s", Sku::getBrand, dto.getBrand());
+
+        if (StrUtil.isNotBlank(dto.getSpecCode()) || StrUtil.isNotBlank(dto.getSpecName())) {
+            List<Long> skuIdList = skuSpecService.listObject(SkuSpec::getSkuId, q -> q
+                    .like(StrUtil.isNotBlank(dto.getSpecCode()), SkuSpec::getCode, dto.getSpecCode())
+                    .like(StrUtil.isNotBlank(dto.getSpecName()), SkuSpec::getName, dto.getSpecName()));
+            if (skuIdList.size() == 0) {
+                return new Page<>();
+            }
+            wrapper.in("s", Sku::getId, skuIdList);
+        }
+
         Page<SkuVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<SkuVo> records = page.getRecords();
         if (records.size() == 0) {
@@ -67,8 +78,11 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
         }
 
         List<Long> skuIdList = records.stream().map(BaseIdPo::getId).collect(Collectors.toList());
-        Map<Long, List<SkuSpec>> skuSpecMap = skuSpecService.mapKGroup(SkuSpec::getSkuId,
-                q -> q.in(SkuSpec::getSkuId, skuIdList));
+        Map<Long, List<SkuSpec>> skuSpecMap = skuSpecService.mapKGroup(SkuSpec::getSkuId, q -> q
+                .in(SkuSpec::getSkuId, skuIdList)
+                .like(StrUtil.isNotBlank(dto.getSpecCode()), SkuSpec::getCode, dto.getSpecCode())
+                .like(StrUtil.isNotBlank(dto.getSpecName()), SkuSpec::getName, dto.getSpecName()));
+
         records.forEach(item -> item.setSkuSpecList(skuSpecMap.getOrDefault(item.getId(), Collections.emptyList())));
         return page;
     }
@@ -179,13 +193,13 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
     }
 
     @Override
-    public Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(GetReplacePrincipalMaterialListDto dto) {
+    public Page<ReplacePrincipalMaterialVo> getReplacePrincipalMaterialPage(GetReplaceMaterialListDto dto) {
         IWrapper<Object> wrapper = getReplaceWrapper(dto);
         return baseMapper.getReplacePrincipalMaterialPage(dto.getPage(), wrapper);
     }
 
     @Override
-    public void replacePrincipalMaterial(ReplacePrincipalMaterialDto dto) {
+    public void replacePrincipalMaterial(ReplaceMaterialDto dto) {
 
         if (ObjectUtil.isAllEmpty(dto.getSkuCode(), dto.getSkuSpecCode(), dto.getBomSpecCode(),
                 dto.getWidth(), dto.getHeight(), dto.getLength())) {
@@ -207,7 +221,188 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
 
     }
 
-    private IWrapper<Object> getReplaceWrapper(GetReplacePrincipalMaterialListDto dto) {
+    @Override
+    public Page<ReplacePackagingMaterialVo> getReplacePackagingMaterialPage(GetReplaceMaterialListDto dto) {
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper()
+                .eq("sslt", SkuSpecLink::getDepartmentId, SecurityUtils.getDeptId())
+                .eq("sslt", SkuSpecLink::getType, 1)
+                .eq("s", Sku::getCode, dto.getSkuCode())
+                .eq("ss", SkuSpec::getCode, dto.getSkuSpecCode())
+                .eq("bs", BomSpec::getCode, dto.getBomSpecCode())
+                .eq("ss", SkuSpec::getLength, dto.getLength())
+                .eq("ss", SkuSpec::getWidth, dto.getWidth())
+                .eq("ss", SkuSpec::getHeight, dto.getHeight());
+
+        Page<ReplacePackagingMaterialVo> page = baseMapper.getReplacePackagingMaterialPage(dto.getPage(), wrapper);
+        List<ReplacePackagingMaterialVo> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        List<Long> skuSpecIdList = records.stream().map(ReplacePackagingMaterialVo::getSkuSpecId).collect(Collectors.toList());
+
+        List<SkuSpecLink> skuSpecLinkList = skuSpecLinkService.list(q -> q
+                .in(SkuSpecLink::getSkuSpecId, skuSpecIdList)
+                .eq(SkuSpecLink::getDepartmentId, SecurityUtils.getDeptId())
+                .eq(SkuSpecLink::getType, 1));
+
+        Map<Long, List<SkuSpecLink>> map = skuSpecLinkList.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
+
+        List<Long> bomSpecIdList = skuSpecLinkList.stream().map(SkuSpecLink::getBomSpecId).collect(Collectors.toList());
+
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIdList);
+
+        for (ReplacePackagingMaterialVo record : records) {
+            Long skuSpecId = record.getSkuSpecId();
+            List<SkuSpecLink> tempSkuSpecLinkList = map.get(skuSpecId);
+            if (ObjectUtil.isEmpty(tempSkuSpecLinkList)) {
+                continue;
+            }
+
+            for (SkuSpecLink skuSpecLink : tempSkuSpecLinkList) {
+                Long bomSpecId = skuSpecLink.getBomSpecId();
+                BomSpecBo bomSpecBo = bomSpecBoMap.get(bomSpecId);
+                if (bomSpecBo == null) {
+                    break;
+                }
+                Long classifyId = bomSpecBo.getClassifyId();
+                String bomSpecCode = bomSpecBo.getBomSpecCode();
+
+                if (Objects.equals(classifyId, 1682221201491058690L)) {
+                    record.setColouredPaper(record.getColouredPaper() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221249268375554L)) {
+                    record.setOppMembrane(record.getOppMembrane() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221303530086402L)) {
+                    record.setPeBag(record.getPeBag() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221356147630081L)) {
+                    record.setMeshBag(record.getMeshBag() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221409847304194L)) {
+                    record.setPaperBox(record.getPaperBox() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221453145104386L)) {
+                    record.setBubblePack(record.getBubblePack() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221528948760578L)) {
+                    record.setLogisticsPackagingMaterial(record.getLogisticsPackagingMaterial() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221581453058049L)) {
+                    record.setOtherPackingMaterial(record.getOtherPackingMaterial() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1697442459841290241L)) {
+                    record.setSelfAdhesiveSticker(record.getSelfAdhesiveSticker() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1697442971286331393L)) {
+                    record.setDrop(record.getDrop() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221651040755714L)) {
+                    record.setSuspenders(record.getSuspenders() == null ? bomSpecCode : "," + bomSpecCode);
+                } else if (Objects.equals(classifyId, 1682221712801882114L)) {
+                    record.setAccessory(record.getAccessory() == null ? bomSpecCode : "," + bomSpecCode);
+                }
+
+            }
+        }
+
+        return page;
+    }
+
+    @Override
+    public void replacePackagingMaterial(ReplacePackagingMaterialDto dto) {
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper()
+                .eq("sslt", SkuSpecLink::getDepartmentId, SecurityUtils.getDeptId())
+                .eq("sslt", SkuSpecLink::getType, 1)
+                .eq("s", Sku::getCode, dto.getSkuCode())
+                .eq("ss", SkuSpec::getCode, dto.getSkuSpecCode())
+                .eq("bs", BomSpec::getCode, dto.getBomSpecCode())
+                .eq("ss", SkuSpec::getLength, dto.getLength())
+                .eq("ss", SkuSpec::getWidth, dto.getWidth())
+                .eq("ss", SkuSpec::getHeight, dto.getHeight());
+
+        List<ReplacePackagingMaterialVo> list = baseMapper.getReplacePackagingMaterialList(wrapper);
+
+        if (list.size() == 0) {
+            return;
+        }
+
+        List<Long> skuSpecIdList = list.stream().map(ReplacePackagingMaterialVo::getSkuSpecId).collect(Collectors.toList());
+
+        List<SkuSpecLink> skuSpecLinkList = skuSpecLinkService.list(q -> q
+                .in(SkuSpecLink::getSkuSpecId, skuSpecIdList)
+                .eq(SkuSpecLink::getDepartmentId, SecurityUtils.getDeptId())
+                .eq(SkuSpecLink::getType, 1));
+
+        Map<Long, List<SkuSpecLink>> map = skuSpecLinkList.stream().collect(Collectors.groupingBy(SkuSpecLink::getSkuSpecId));
+
+        Long replaceBomSpecId = dto.getReplaceBomSpecId();
+
+        List<Long> bomSpecIdList = skuSpecLinkList.stream().map(SkuSpecLink::getBomSpecId).collect(Collectors.toList());
+        bomSpecIdList.add(replaceBomSpecId);
+
+        Map<Long, BomSpecBo> bomSpecBoMap = skuSpecService.getBomSpecBoByIdList(bomSpecIdList);
+
+        BomSpecBo replaceBomSpecBo = bomSpecBoMap.get(replaceBomSpecId);
+        if (replaceBomSpecBo == null) {
+            throw new ServiceException("没有找到替换包材bom规格");
+        }
+
+        List<SkuSpecLink> addOrEditSkuSpecLinkList = new ArrayList<>();
+        List<Long> removeSkuSpecLinkIdList = new ArrayList<>();
+
+        for (ReplacePackagingMaterialVo record : list) {
+            Long skuSpecId = record.getSkuSpecId();
+            List<SkuSpecLink> tempSkuSpecLinkList = map.get(skuSpecId);
+            if (ObjectUtil.isEmpty(tempSkuSpecLinkList)) {
+                SkuSpecLink skuSpecLink = new SkuSpecLink();
+                skuSpecLink.setSkuId(record.getSkuId());
+                skuSpecLink.setSkuSpecId(record.getSkuSpecId());
+                skuSpecLink.setBomSpecId(replaceBomSpecId);
+                skuSpecLink.setDepartmentId(SecurityUtils.getDeptId());
+                skuSpecLink.setType(1);
+                skuSpecLink.setQuantity(BigDecimal.ONE);
+                addOrEditSkuSpecLinkList.add(skuSpecLink);
+                continue;
+            }
+
+            boolean flag = false;
+            for (SkuSpecLink skuSpecLink : tempSkuSpecLinkList) {
+                Long bomSpecId = skuSpecLink.getBomSpecId();
+                BomSpecBo bomSpecBo = bomSpecBoMap.get(bomSpecId);
+                if (bomSpecBo == null) {
+                    continue;
+                }
+
+                if (Objects.equals(bomSpecBo.getClassifyId(), replaceBomSpecBo.getClassifyId())) {
+                    if (flag) {
+                        removeSkuSpecLinkIdList.add(skuSpecLink.getId());
+                        continue;
+                    }
+                    skuSpecLink.setBomSpecId(replaceBomSpecId);
+                    addOrEditSkuSpecLinkList.add(skuSpecLink);
+                    flag = true;
+                }
+
+            }
+
+            if (!flag) {
+                SkuSpecLink skuSpecLink = new SkuSpecLink();
+                skuSpecLink.setSkuId(record.getSkuId());
+                skuSpecLink.setSkuSpecId(record.getSkuSpecId());
+                skuSpecLink.setBomSpecId(replaceBomSpecId);
+                skuSpecLink.setDepartmentId(SecurityUtils.getDeptId());
+                skuSpecLink.setType(1);
+                skuSpecLink.setQuantity(BigDecimal.ONE);
+                addOrEditSkuSpecLinkList.add(skuSpecLink);
+            }
+
+        }
+
+        if (addOrEditSkuSpecLinkList.size() > 0) {
+            skuSpecLinkService.saveOrUpdateBatch(addOrEditSkuSpecLinkList);
+        }
+        if (removeSkuSpecLinkIdList.size() > 0) {
+            skuSpecLinkService.removeBatchByIds(removeSkuSpecLinkIdList);
+        }
+
+    }
+
+    private IWrapper<Object> getReplaceWrapper(GetReplaceMaterialListDto dto) {
         return IWrapper.getWrapper()
                 .eq("s", Sku::getCode, dto.getSkuCode())
                 .eq("ss", SkuSpec::getCode, dto.getSkuSpecCode())

+ 27 - 1
sd-business/src/main/resources/mapper/sku/SkuMapper.xml

@@ -27,7 +27,7 @@
         select s.code  skuCode,
                ss.code skuSpecCode,
                ss.name skuSpecName,
-               bs.name bomSpecCode
+               bs.code bomSpecCode
         from sku s
                  inner join sku_spec ss on s.id = ss.sku_id
                  inner join bom_spec bs on ss.bom_spec_id = bs.id
@@ -42,4 +42,30 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getReplacePackagingMaterialPage" resultType="com.sd.business.entity.sku.vo.ReplacePackagingMaterialVo">
+        select distinct s.id    skuId,
+                        s.code  skuCode,
+                        ss.id   skuSpecId,
+                        ss.code skuSpecCode,
+                        ss.name skuSpecName
+        from sku s
+                 inner join sku_spec ss on s.id = ss.sku_id
+                 inner join sku_spec_link sslt on ss.id = sslt.sku_spec_id
+                 inner join bom_spec bs on sslt.bom_spec_id = bs.id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getReplacePackagingMaterialList" resultType="com.sd.business.entity.sku.vo.ReplacePackagingMaterialVo">
+        select distinct s.id    skuId,
+                        s.code  skuCode,
+                        ss.id   skuSpecId,
+                        ss.code skuSpecCode,
+                        ss.name skuSpecName
+        from sku s
+                 inner join sku_spec ss on s.id = ss.sku_id
+                 inner join sku_spec_link sslt on ss.id = sslt.sku_spec_id
+                 inner join bom_spec bs on sslt.bom_spec_id = bs.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 2 - 0
sd-business/src/main/resources/mapper/sku/SkuSpecMapper.xml

@@ -26,9 +26,11 @@
 
     <select id="getBomSpecBoList" resultType="com.sd.business.entity.bom.bo.BomSpecBo">
         SELECT bs.id                                     bomSpecId,
+               bs.code                                   bomSpecCode,
                ifnull(bs.cost_price, '0.00')             costPrice,
                ifnull(bs.internal_selling_price, '0.00') internalSellingPrice,
                ifnull(bs.external_selling_price, '0.00') externalSellingPrice,
+               bc.id                                     classifyId,
                bc.parent_id                              classifyParentId
         FROM bom_spec bs
                  LEFT JOIN bom b ON bs.bom_id = b.id

+ 2 - 14
sd-wln/src/main/java/com/sd/wln/scheduled/WlnSyncTask.java

@@ -32,21 +32,9 @@ public class WlnSyncTask {
      * 每天凌晨1点同步一次sku信息
      */
     @Scheduled(cron = "0 0 1 * * ?")
-    // @Scheduled(fixedDelay = 60 * 1000)
     public void syncSku() {
-        for (int i = 0; i < 3; i++) {
-            boolean flag = wlnSkuService.syncSkuClassify();
-            if (flag) {
-                break;
-            }
-        }
-
-        for (int i = 0; i < 3; i++) {
-            boolean flag = wlnSkuService.syncSku();
-            if (flag) {
-                break;
-            }
-        }
+        wlnSkuService.syncSkuClassify();
+        wlnSkuService.syncSku();
     }
 
     /**