package com.java110.goods.bmo.productSpec.impl; import com.java110.dto.product.ProductSpecDetailDto; import com.java110.dto.product.ProductSpecDto; import com.java110.goods.bmo.productSpec.IGetProductSpecBMO; import com.java110.intf.goods.IProductSpecDetailInnerServiceSMO; import com.java110.intf.goods.IProductSpecInnerServiceSMO; import com.java110.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service("getProductSpecBMOImpl") public class GetProductSpecBMOImpl implements IGetProductSpecBMO { @Autowired private IProductSpecInnerServiceSMO productSpecInnerServiceSMOImpl; @Autowired private IProductSpecDetailInnerServiceSMO productSpecDetailInnerServiceSMOImpl; /** * @param productSpecDto * @return 订单服务能够接受的报文 */ public ResponseEntity get(ProductSpecDto productSpecDto) { int count = productSpecInnerServiceSMOImpl.queryProductSpecsCount(productSpecDto); List productSpecDtos = null; if (count > 0) { productSpecDtos = productSpecInnerServiceSMOImpl.queryProductSpecs(productSpecDto); freshSpecDetail(productSpecDtos); } else { productSpecDtos = new ArrayList<>(); } ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) productSpecDto.getRow()), count, productSpecDtos); ResponseEntity responseEntity = new ResponseEntity(resultVo.toString(), HttpStatus.OK); return responseEntity; } private void freshSpecDetail(List productSpecDtos) { if (productSpecDtos == null || productSpecDtos.size() < 1) { return; } List specIds = new ArrayList<>(); for (ProductSpecDto productSpecDto : productSpecDtos) { specIds.add(productSpecDto.getSpecId()); } ProductSpecDetailDto productSpecDetailDto = new ProductSpecDetailDto(); productSpecDetailDto.setSpecIds(specIds.toArray(new String[specIds.size()])); productSpecDetailDto.setStoreId(productSpecDtos.get(0).getStoreId()); List productSpecDetailDtos = productSpecDetailInnerServiceSMOImpl.queryProductSpecDetails(productSpecDetailDto); List tmpProductSpecDetailDtos = null; for (ProductSpecDto productSpecDto : productSpecDtos) { tmpProductSpecDetailDtos = new ArrayList<>(); for (ProductSpecDetailDto tmpProductSpecDetailDto : productSpecDetailDtos) { if (productSpecDto.getSpecId().equals(tmpProductSpecDetailDto.getSpecId())) { tmpProductSpecDetailDtos.add(tmpProductSpecDetailDto); } } productSpecDto.setProductSpecDetails(tmpProductSpecDetailDtos); } } }