package com.stone.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.stone.base.BaseMapper; import com.stone.conf.enums.EquipmentCodeEnum; import com.stone.conf.exception.BusinessException; import com.stone.mapper.intermediate.RenwuIntermediateMapper; import com.stone.mapper.intermediate.ReportIntermediateMapper; import com.stone.mapper.senior.TemplateMapper; import com.stone.mapper.senior.YsjlSeniorMapper; import com.stone.model.po.renwu.RenwuIntermediate; import com.stone.model.po.report.Report; import com.stone.model.po.ysjl.YsjlSenior; import com.stone.model.vo.PageVO; import com.stone.service.DownloadService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** * @author zichen */ @Service public class DownloadServiceImpl implements DownloadService { @Resource private YsjlSeniorMapper ysjlSeniorMapper; @Resource private TemplateMapper templateMapper; @Resource private ReportIntermediateMapper reportIntermediateMapper; @Resource private RenwuIntermediateMapper renwuIntermediateMapper; @Resource private HttpServletRequest request; @Value("${server.servlet.context-path}") private String contextPath; @Override public BaseMapper getRepository() { return null; } /** * 获取18版下载地址 * 报告打印路径示例:http://192.168.1.130:9093/DYBGManager/JNJY18/pdf/JYBG/2000/2020/3/RD(2020)-0153(6459)压力容器定期检验报告.pdf * 合格证打印路径示例:http://192.168.1.130:9093/DYBGManager/JNJY18/pdf/HGZ/2000/2020/3/RD(2020)-0114(6370)压力容器打印合格证.pdf * @param id 原始记录主键 * @param type 类型:JYBG:报告、HGZ:合格证 * @return */ @Override public PageVO pullSeniorPath(String id, String type) { YsjlSenior ysjlSenior = ysjlSeniorMapper.selectByPrimaryKey(id); // 0. 判断是否已办结 if (ObjectUtil.isNotNull(ysjlSenior.getFlowstatus()) && ysjlSenior.getFlowstatus() > 3) { throw new BusinessException("报告流程在检验结束时才可以进行打印!"); } // 1. 判断是否交费 // 需要判断补交状态吗?任务里有个补交状态 if (!ysjlSenior.getJfState()) { throw new BusinessException("交费后才能打印!"); } // 2. 获取打印路径 String tempName = ""; if (StrUtil.equals(type, "JYBG")) { tempName = templateMapper.selectByPrimaryKey(ysjlSenior.getModelId()).getTempName().replace("记录", "报告"); } else { tempName = EquipmentCodeEnum.valueOf(ysjlSenior.getShebeizhongleidaima()).getName() + "打印合格证"; } return PageVO.builder().data(request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + contextPath + "/JNJY18/pdf/" + type + "/" + ysjlSenior.getShebeizhongleidaima() + "/" + ysjlSenior.getCreateTime().getYear() + "/" + ysjlSenior.getCreateTime().getMonthValue() + "/" + ysjlSenior.getBaogaobianhao() + "(" + ysjlSenior.getId() + ")" + tempName + ".pdf").build(); } /** * 获取16版下载地址 * * @param id 检验报告主键 * @param type 类型:JYBG:报告、HGZ:合格证 * @return */ @Override public PageVO pullIntermediatePath(String id, String type) { Report report = reportIntermediateMapper.selectByPrimaryKey(id); if (ObjectUtil.isNotNull(report.getFlowstatus()) && report.getFlowstatus() > 3) { throw new BusinessException("报告流程在检验结束时才可以进行打印!"); } RenwuIntermediate renwuIntermediate = RenwuIntermediate.builder().renwuId(report.getRenwuId()).build(); renwuIntermediate = renwuIntermediateMapper.selectOne(renwuIntermediate); // 1. 判断是否交费 // 需要判断补交状态吗? /*if (!renwuIntermediate.getJfstate()) { throw new BusinessException("交费后才能打印!"); }*/ // 2. 获取打印路径 String path = ""; return PageVO.builder().data(request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + contextPath + "/JNJY16/pdf/" + report.getShenpiriqi().getYear() + "/" + report.getShebeizhongleidaima() + "/" + type + "/" + (StrUtil.equals(report.getJianyanleibie(), "定期检验") ? "dqjy" : "jdjy") + "/" + (StrUtil.equals(type, "HGZ") ? "hgz" : report.getShenpiriqi().getMonthValue()) + "/" + report.getBaogaobianhao() + "-" + report.getAnnalid() + (StrUtil.equals(type, "HGZ") ? "-hgz" : "") + ".pdf").build(); } }