diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegLisReportController.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegLisReportController.java index 513b3cc..7dde090 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegLisReportController.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegLisReportController.java @@ -1,9 +1,12 @@ package com.transitPlatForm.transitPF.controller; import com.transitPlatForm.common.core.controller.BaseController; +import com.transitPlatForm.common.core.domain.Result; +import com.transitPlatForm.common.core.domain.entity.reg.RegReportFile; import com.transitPlatForm.common.core.page.TableDataInfo; import com.transitPlatForm.transitPF.mapper.RegLisReportMapper; import com.transitPlatForm.transitPF.pojo.RegGetReportsList; +import com.transitPlatForm.transitPF.service.RegLisReportService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -12,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.List; import java.util.Map; @@ -26,6 +30,8 @@ public class RegLisReportController extends BaseController { @Autowired RegLisReportMapper regLisReportMapper; + @Resource + private RegLisReportService regLisReportService; @ApiOperation("检验报告数据") @GetMapping("/lisReportList") @@ -37,14 +43,23 @@ public class RegLisReportController extends BaseController { @ApiOperation("获取报告明细数据") @GetMapping("/reportDetail") - public List> getLisReportDetail(String bgdh){ - return regLisReportMapper.getLisReportDetail(bgdh); + public Result getLisReportDetail(String bgdh){ + List> lisReportDetailList = regLisReportMapper.getLisReportDetail(bgdh); + return new Result("0", "查询成功!", lisReportDetailList); } - @ApiOperation("获取细菌报告数据") + @ApiOperation("获取细菌报告明细数据") @GetMapping("/reportDetailMed") - public List> getRegGetresultmed(String bgdh,String xmdh){ - return regLisReportMapper.getRegGetresultmed(bgdh,xmdh); + public Result getRegGetresultmed(String bgdh,String xmdh){ + List> regGetresultmedList = regLisReportMapper.getRegGetresultmed(bgdh, xmdh); + return new Result("0","查询成功!",regGetresultmedList); + } + + @ApiOperation("打印报告单") + @GetMapping("/printLisReport") + public Result printLisReport(String bgdh){ + //RegReportFile regReportFile = regLisReportMapper.getRegReportFile(bgdh); + return regLisReportService.printLisReport(bgdh); } } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegTransitSampleController.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegTransitSampleController.java index f88fc6c..d139d87 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegTransitSampleController.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/controller/RegTransitSampleController.java @@ -1,5 +1,6 @@ package com.transitPlatForm.transitPF.controller; +import cn.hutool.core.date.DateUtil; import com.transitPlatForm.common.annotation.Anonymous; import com.transitPlatForm.common.core.controller.BaseController; import com.transitPlatForm.common.core.domain.Result; @@ -38,6 +39,10 @@ public class RegTransitSampleController extends BaseController { @GetMapping("/querySample") public TableDataInfo getQuerySample(RegTransitSample regTransitSample) { startPage(); + String dateStart = DateUtil.format(regTransitSample.getDateStart(), "yyyy-MM-dd") + " 00:00:00"; + String dateEnd = DateUtil.format(regTransitSample.getDateEnd(), "yyyy-MM-dd") + " 23:59:59"; + regTransitSample.setDateStart(DateUtil.parse(dateStart,"yyyy-MM-dd HH:mm:ss")); + regTransitSample.setDateEnd(DateUtil.parse(dateEnd,"yyyy-MM-dd HH:mm:ss")); List regTransitSampleList = regTransitSampleService.getRegTransitSample(regTransitSample); return getDataTable(regTransitSampleList); } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/mapper/RegLisReportMapper.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/mapper/RegLisReportMapper.java index 1099692..48e46de 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/mapper/RegLisReportMapper.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/mapper/RegLisReportMapper.java @@ -1,6 +1,7 @@ package com.transitPlatForm.transitPF.mapper; +import com.transitPlatForm.common.core.domain.entity.reg.RegReportFile; import com.transitPlatForm.transitPF.pojo.RegGetReportsList; import org.apache.ibatis.annotations.Param; @@ -11,4 +12,5 @@ public interface RegLisReportMapper { List> getLisReportList(RegGetReportsList regGetReportsList); List> getLisReportDetail(String bgdh); List> getRegGetresultmed(@Param("bgdh") String bgdh ,@Param("xmdh") String xmdh); + RegReportFile getRegReportFile(String bgdh); } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/RegLisReportService.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/RegLisReportService.java new file mode 100644 index 0000000..9a15f9e --- /dev/null +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/RegLisReportService.java @@ -0,0 +1,9 @@ +package com.transitPlatForm.transitPF.service; + +import com.transitPlatForm.common.core.domain.Result; + +import java.util.List; + +public interface RegLisReportService { + Result printLisReport(String bgdh); +} diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegHospitalServiceImpl.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegHospitalServiceImpl.java index 155795f..f818495 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegHospitalServiceImpl.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegHospitalServiceImpl.java @@ -144,7 +144,7 @@ public class RegHospitalServiceImpl implements RegHospitalService { */ @Override public int insertHospital(RegHospital hospital) { - return regHospitalUtil.updateHospital(hospital); + return regHospitalUtil.insertHospital(hospital); } /** @@ -154,7 +154,6 @@ public class RegHospitalServiceImpl implements RegHospitalService { * @return 结果 */ @Override - public int updateHospital(RegHospital Hospital) { - return hospitalMapper.updateHospital(Hospital); + public int updateHospital(RegHospital Hospital) {return regHospitalUtil.updateHospital(Hospital); } } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegLisReportServiceImpl.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegLisReportServiceImpl.java new file mode 100644 index 0000000..fad3737 --- /dev/null +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/impl/RegLisReportServiceImpl.java @@ -0,0 +1,23 @@ +package com.transitPlatForm.transitPF.service.impl; + +import com.transitPlatForm.common.core.domain.Result; +import com.transitPlatForm.common.core.domain.entity.reg.RegReportFile; +import com.transitPlatForm.transitPF.mapper.RegLisReportMapper; +import com.transitPlatForm.transitPF.service.RegLisReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class RegLisReportServiceImpl implements RegLisReportService { + + @Autowired + RegLisReportMapper regLisReportMapper; + + @Override + public Result printLisReport(String bgdh) { + RegReportFile regReportFile = regLisReportMapper.getRegReportFile(bgdh); + return new Result("0","查询成功",regReportFile); + } +} diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegHospitalUtil.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegHospitalUtil.java index 80721b3..283b5dd 100644 --- a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegHospitalUtil.java +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegHospitalUtil.java @@ -18,7 +18,7 @@ public class RegHospitalUtil { private SysDeptMapper deptMapper; @Transactional(rollbackFor = Exception.class) - public int updateHospital(RegHospital hospital){ + public int insertHospital(RegHospital hospital){ //新增部门数据 SysDept sysDept = new SysDept(); sysDept.setParentId(202L); @@ -35,8 +35,15 @@ public class RegHospitalUtil { } + @Transactional(rollbackFor = Exception.class) + public int updateHospital(RegHospital regHospital){ + //修改部门数据 + SysDept sysDept = new SysDept(); + sysDept.setDeptId(Long.parseLong(regHospital.getDept())); + sysDept.setStatus(regHospital.getStatus()); + sysDept.setDeptName(regHospital.getHospitalName()); + deptMapper.updateDept(sysDept); + return hospitalMapper.updateHospital(regHospital); -// public String getDeptId(String hospitalName){ -// deptMapper.selectDeptList() -// } + } } diff --git a/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegLisReportUtil.java b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegLisReportUtil.java new file mode 100644 index 0000000..d5d245d --- /dev/null +++ b/pf_transitPF/src/main/java/com/transitPlatForm/transitPF/service/util/RegLisReportUtil.java @@ -0,0 +1,159 @@ +package com.transitPlatForm.transitPF.service.util; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.util.StrUtil; +import com.transitPlatForm.common.config.RuoYiConfig; +import com.transitPlatForm.common.core.domain.Result; +import com.transitPlatForm.common.core.domain.entity.reg.RegReportFile; +import com.transitPlatForm.common.utils.file.FileUtils; +import com.transitPlatForm.interfaceCommon.utils.LisUtil; +import com.transitPlatForm.interfaceCommon.utils.PdfPaperConverter; +import com.transitPlatForm.interfaceCommon.utils.ReportUtil; +import com.transitPlatForm.transitPF.mapper.RegLisReportMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class RegLisReportUtil { + + @Autowired + RegLisReportMapper regLisReportMapper; + @Autowired + ReportUtil reportUtil; + + /** + * 打印报告单 + * @param bgdhList + * @return + */ + public Result printReport(List bgdhList) { + List> bgdhBase64List = new ArrayList<>(); + List mergeBgdhList = new ArrayList<>(); + int j = 0; + for (String bgdh : bgdhList) { + String[] stringParam = StrUtil.splitToArray(bgdh, "|"); + if(stringParam.length != 3) return new Result("-1","传入的报告单号不对!"+ Arrays.toString(stringParam)); + RegReportFile regReportFile = regLisReportMapper.getRegReportFile(bgdh); + if(regReportFile == null) return new Result("-1","没有找到对应的pdf报告信息!"); + + String base64PDF = regReportFile.getReport(); + if(base64PDF == null || base64PDF.equals("")) continue; + mergeBgdhList.add(bgdh); + } + //log.info("bgdhBase64List:"+bgdhBase64List); + //过滤A4的报告单 + List> collectA4 = bgdhBase64List.stream().filter(bgdhBase64 -> bgdhBase64.get("pageType").equals("A4")).collect(Collectors.toList()); + for (Map stringObjectMap : collectA4) { + mergeBgdhList.add(stringObjectMap.get("data").toString()); + } + + //过滤A5格式报告单 + List> collectA5 = bgdhBase64List.stream().filter(bgdhBase64 -> bgdhBase64.get("pageType").equals("A5")).collect(Collectors.toList()); + //其中有可能格式虽然是A5,实际尺寸是A4,需要进行处理 + for (Map stringObjectMap : collectA5) { + String bas64Str = stringObjectMap.get("data").toString(); + if(!PdfPaperConverter.isBase64PdfA4(bas64Str)) continue; + try { + String base64_A5 = PdfPaperConverter.convertBase64PdfToA5IfConfigured(bas64Str, "A5"); + stringObjectMap.put("data", base64_A5); + } catch (Exception e) { + log.error("裁剪pdf出错:",e); + return new Result("0","裁剪pdf出错!"+e.getMessage()); + } + } + + //log.info("collectA5:"+collectA5); + + //对A5格式的报告单进行排序 + collectA5.sort(new Comparator>() { + @Override + public int compare(Map o1, Map o2) { + String brdh1 = o1.get("brdh").toString().trim() ; + String brdh2 = o2.get("brdh").toString().trim() ; + int i = brdh1.compareTo(brdh2); + if(i == 0){ + Date confirmdt1 = (Date) o1.get("confirmdt"); + Date confirmdt2 = (Date) o2.get("confirmdt"); + return confirmdt1.compareTo(confirmdt2); + }else{ + return i; + } + } + }); + + + //合并A5格式的pdf为A4格式 + String A5BlankStr = ""; + for (int i = 0; i < collectA5.size(); i++) { + if(i+1 >= collectA5.size()){ + //代表到了最后一个单数,把这个A5格式的先转换成A4格式的pdf + try { + A5BlankStr = reportUtil.convertA5ToA4Blank(collectA5.get(i).get("data").toString()); + //旋转90度,把之前的文件变成pdf + String path2 = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf"; + String path3 = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf"; + cn.hutool.core.codec.Base64.decodeToFile(A5BlankStr,new File(path2)); + reportUtil.rotatePdf90Degrees(path2,path3,1); + A5BlankStr = cn.hutool.core.codec.Base64.encode(new File(path3)); + //删除文件 + FileUtils.deleteFile(path2); + FileUtils.deleteFile(path3); + } catch (IOException e) { + log.error("把A5格式的pdf增加空白变成A4格式的pdf失败:",e); + } + mergeBgdhList.add(A5BlankStr); + break; + } + String path = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf"; + String path1 = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf"; + try { + reportUtil.mergePdfsHorizontally(collectA5.get(i).get("data").toString(),collectA5.get(i+1).get("data").toString(),path); + //旋转90度 + reportUtil.rotatePdf90Degrees(path,path1,1); + File file = new File(path1); + mergeBgdhList.add(cn.hutool.core.codec.Base64.encode(file)); + //删除文件 + FileUtils.deleteFile(path); + FileUtils.deleteFile(path1); + } catch (IOException e) { + e.printStackTrace(); + log.error("合并报告单出错:",e); + return new Result("-1","合并报告单出错"+e.getMessage()); + } + i=i+1; + } + + String encode = ""; + try { + //合并成一个pdf交给前端 + String pdfName = UUID.randomUUID().toString(); + String path = RuoYiConfig.getProfile() +"/config/static/printPDF/"+pdfName+".pdf"; + LisUtil.mergeToFile(mergeBgdhList,path); + //String httpPath = reportUtil.getPrintURL(pdfName); + //转成base64字符串 + File file = new File(path); + encode = Base64.encode(file); + //删除pdf文件 + FileUtils.deleteFile(path); + } catch (Exception e) { + e.printStackTrace(); + //log.error("合并pdf:{}报告失败:{}",bgdh,e); + return new Result("-1",e.getMessage()); + } + + //修改打印标志 +// for (String string : bgdh) { +// updatePrintStatus(string); +// } + + + return new Result("0","打印成功!",encode); + } +} diff --git a/pf_transitPF/src/main/resources/mapper/RegLisReportMapper.xml b/pf_transitPF/src/main/resources/mapper/RegLisReportMapper.xml index 0e81e9b..6f13597 100644 --- a/pf_transitPF/src/main/resources/mapper/RegLisReportMapper.xml +++ b/pf_transitPF/src/main/resources/mapper/RegLisReportMapper.xml @@ -25,4 +25,8 @@ and xmdh = #{xmdh} + + \ No newline at end of file