package com.dy.pmsWechat.product; import cn.hutool.core.codec.Base64; import com.dy.common.webUtil.QueryResultVo; import com.dy.pmsGlobal.daoOth.OthFileMapper; import com.dy.pmsGlobal.daoPlt.PltProParamsMapper; import com.dy.pmsGlobal.daoPlt.PltProductFileMapper; import com.dy.pmsGlobal.daoPlt.PltProductMapper; import com.dy.pmsGlobal.daoPlt.PltProductQualityInspectionItemsMapper; import com.dy.pmsGlobal.dyFile.FileOperate; import com.dy.pmsGlobal.dyFile.FileRestVo; import com.dy.pmsGlobal.pojoOth.OthFile; import com.dy.pmsGlobal.pojoPlt.PltProduct; import com.dy.pmsGlobal.util.QrCodeUtil; import com.google.zxing.WriterException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.List; import java.util.Map; @Slf4j @Service public class ProductSv { private PltProductMapper dao; private FileOperate fileOperate; private OthFileMapper othFileMapper; @Value("${dy.webFile.fmUrl}") private String fmUrl ; @Autowired public void setDao(PltProductMapper dao) { this.dao = dao; } @Autowired public void setFileOperate(FileOperate fileOperate){ this.fileOperate = fileOperate; } @Autowired public void setOthFileMapper(OthFileMapper othFileMapper){ this.othFileMapper = othFileMapper; } public PltProduct selectById(String proId) { PltProduct pro=dao.selectByPrimaryKey(Long.valueOf(proId)); pro=addWebUrl(pro); return pro; } private PltProduct addWebUrl(PltProduct pro) { if (pro != null) { if (pro.image != null) { String filePathWithWebUrl = getFilePathWithWebUrl(pro.image); pro.imageWebPath = filePathWithWebUrl; pro.imageWebPathZip = fileOperate.getImgFileZipPath(filePathWithWebUrl); } pro.proFiles.stream().forEach(doc -> { OthFile file = othFileMapper.selectByPrimaryKey(doc.fileId); if (file == null) { return; } FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); doc.webUrl = fileRestVo.fileWebDownloadPath + doc.fileId; doc.orgName = file.orgName; doc.extName = file.extName; }); } return pro; } private String getFilePathWithWebUrl(Long fileId) { OthFile file = othFileMapper.selectByPrimaryKey(fileId); FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash); return fileRestVo.fileWebUrl + file.filePath; } /** * 获取产品列表 */ public QueryResultVo> selectSome(QueryVo queryVo) { Map params = (Map) PojoUtils.generalize(queryVo); //查询符合条件的记录总数 Long itemTotal = dao.selectSomeCount(params); QueryResultVo> rsVo = new QueryResultVo<>(queryVo.pageSize, queryVo.pageCurr) ; //计算分页等信息 rsVo.calculateAndSet(itemTotal, params); //查询符合条件的记录 rsVo.obj = dao.selectSome(params) ; if(CollectionUtils.isNotEmpty(rsVo.obj)){ rsVo.obj.parallelStream().forEach(item->{ try { byte[] codes = QrCodeUtil.genQrCode(item.code); item.qrCode = "data:image/jpeg;base64," + Base64.encode(codes); item = addWebUrl(item); } catch (IOException e) { log.error("IOException:",e); } catch (WriterException e) { log.error("WriterException:",e); } }); } return rsVo ; } }