SpecPartBiz.java 2.71 KB
package com.sucl.sbmp.sys.biz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sucl.sbmp.sys.entity.SpecPart;
import com.sucl.sbmp.sys.entity.TempScName;
import com.sucl.sbmp.sys.entity.TempScParts;
import com.sucl.sbmp.sys.service.SpecPartService;
import com.sucl.sbmp.sys.service.TempScNameService;
import com.sucl.sbmp.sys.service.TempScPartsService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Service
@AllArgsConstructor
public class SpecPartBiz {
    private final TempScPartsService partsService;
    private final TempScNameService nameService;
    private final SpecPartService specPartService;
    /**
     * 将抽取的数据转换到spec_part表中
     *
     * 调用接口之前将TempScName的yn数据设置为0
     */
    public void transferData() {
        for (int i = 1; i < 100; i++) {
            Page<TempScName> page = new Page<>(i, 1000);
            nameService.page(page, Wrappers.<TempScName>lambdaQuery().eq(TempScName::getYn, false));
            for (TempScName tempScName : page.getRecords()) {
                try {
                    List<SpecPart> specParts = new ArrayList<>();
                    List<TempScParts> scParts = partsService.list(Wrappers.<TempScParts>lambdaQuery()
                            .eq(TempScParts::getScId, tempScName.getScId()));
                    List<String> oldCodes = U.collIds(specPartService.list(Wrappers.<SpecPart>lambdaQuery()
                            .select(SpecPart::getPartCode)
                            .eq(SpecPart::getSpecCode, tempScName.getCode())), SpecPart::getPartCode);
                    Map<String, Integer> partCodeMap = U.transferMap(scParts, TempScParts::getPartNumber, it -> 1, Integer::sum);
                    partCodeMap.forEach((k, v) -> {
                        if (!oldCodes.contains(k)) {
                            SpecPart specPart = new SpecPart();
                            specPart.setPartCode(k);
                            specPart.setPartCount(v);
                            specPart.setSpecCode(tempScName.getCode());
                            specPart.setStdType(1);
                            specParts.add(specPart);
                        }
                    });
                    U.groupUpdateData(specParts, specPartService::saveOrUpdateBatch);
                    tempScName.setYn(Boolean.TRUE);
                    nameService.updateById(tempScName);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}