package com.zksy.data.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zksy.common.exception.DbException; import com.zksy.data.annotation.XhDataLogRecord; import com.zksy.data.domain.po.XcrOtherInfo38; import com.zksy.data.domain.response.XcrOtherInfo38Response; import com.zksy.data.mapper.XcrOtherInfo38Mapper; import com.zksy.data.service.XcrOtherInfo38Service; import com.zksy.data.utils.RedisService; import com.zksy.data.utils.XhRequestUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.support.TransactionTemplate; import java.util.HashMap; import java.util.List; import java.util.Vector; /** * @author Administrator * @description 针对表【xcr_other_info_38(科技研发清单表)】的数据库操作Service实现 * @createDate 2024-10-15 11:09:09 */ @Service @Slf4j public class XcrOtherInfo38ServiceImpl extends ServiceImpl implements XcrOtherInfo38Service{ @Autowired private XhRequestUtil xhRequestUtil; @Autowired private RedisService redisService; @Autowired private TransactionTemplate transactionTemplate; @Override @XhDataLogRecord("同步科技研发清单表") public void saveDataByUniCode(String address) { //模拟从数据库中取数据大约为3000-4000条 List creditCodes = (List) redisService.getList("creditCodes").get(0); Vector toDatabaseList = new Vector<>(); List inventoryList = List.of("38"); inventoryList.parallelStream().forEach(inventory -> { creditCodes.parallelStream().forEach(creditCode -> { HashMap requestbodyMap = new HashMap<>(); requestbodyMap.put("entityCode", creditCode); requestbodyMap.put("size", String.valueOf(10)); requestbodyMap.put("page", String.valueOf(1)); requestbodyMap.put("inventoryId", inventory); try { List list = xhRequestUtil.requestXinyonghuanhuai2(requestbodyMap,address, XcrOtherInfo38Response.class, XcrOtherInfo38.class); if(list != null){ toDatabaseList.addAll(list); } } catch (Exception e) { List list = xhRequestUtil.requestXinyonghuanhuai2(requestbodyMap,address, XcrOtherInfo38Response.class, XcrOtherInfo38.class); if(list != null){ toDatabaseList.addAll(list); } } }); log.info("inventorywe为:{}完成",inventory); }); transactionTemplate.execute((s)->{ try { this.remove(null); this.saveBatch(toDatabaseList); } catch (Exception e) { s.setRollbackOnly(); throw new DbException(e); } return null; }); log.info("科技研发清单表同步完成"); } }