| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718 |
- package cn.com.goldenwater.dcproj.service.impl;
- import cn.com.goldenwater.core.service.AbstractCrudService;
- import cn.com.goldenwater.dcproj.common.WtprjConvert;
- import cn.com.goldenwater.dcproj.dao.BisInspPblmDao;
- import cn.com.goldenwater.dcproj.dao.BisInspWtprjUnitDao;
- import cn.com.goldenwater.dcproj.model.*;
- import cn.com.goldenwater.dcproj.param.BisInspPblmParam;
- import cn.com.goldenwater.dcproj.param.BisInspWtprjUnitParam;
- import cn.com.goldenwater.dcproj.param.GwComFileParam;
- import cn.com.goldenwater.dcproj.service.*;
- import cn.com.goldenwater.dcproj.util.PdfPTableUtil;
- import cn.com.goldenwater.dcproj.utils.Builder;
- import cn.com.goldenwater.dcproj.utils.Constant;
- import cn.com.goldenwater.dcproj.utils.DateUtils;
- import cn.com.goldenwater.dcproj.utils.InspPblmUtils;
- import cn.com.goldenwater.id.util.UuidUtil;
- import com.itextpdf.text.*;
- import com.itextpdf.text.pdf.BaseFont;
- import com.itextpdf.text.pdf.PdfPCell;
- import com.itextpdf.text.pdf.PdfPTable;
- import com.itextpdf.text.pdf.PdfWriter;
- import org.apache.commons.collections.MapUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.URLEncoder;
- import java.util.List;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * @author lhc
- * @date 2021-4-14
- */
- @Service
- @Transactional
- public class BisInspWtprjUnitServiceImpl extends AbstractCrudService<BisInspWtprjUnit, BisInspWtprjUnitParam> implements BisInspWtprjUnitService {
- private Logger logger = LoggerFactory.getLogger(getClass());
- @Autowired
- private BisInspWtprjUnitDao bisInspWtprjUnitDao;
- @Autowired
- private BisInspWtprjSectionService bisInspWtprjSectionService;
- @Autowired
- private BisInspWtprjRegisterService bisInspWtprjRegisterService;
- @Autowired
- private BisInspPblmService bisInspPblmService;
- @Autowired
- private GwComFileService gwComFileService;
- @Value("${web.upload-path}")
- public String webUploadPath;
- @Value("${export.templatePath}")
- private String templatePath;
- @Autowired
- private BisInspPblmDao bisInspPblmDao;
- public BisInspWtprjUnitServiceImpl(BisInspWtprjUnitDao bisInspWtprjUnitDao) {
- super(bisInspWtprjUnitDao);
- this.bisInspWtprjUnitDao = bisInspWtprjUnitDao;
- }
- @Override
- public int insert(BisInspWtprjUnit bisInspWtprjUnit) {
- String uuid = UuidUtil.uuid(); // 生成uuid
- bisInspWtprjUnit.setId(uuid);
- bisInspWtprjUnit.setIntm(new Date());
- bisInspWtprjUnit.setUptm(new Date());
- bisInspWtprjUnit.setDataStat("0");
- int ret = this.bisInspWtprjUnitDao.insert(bisInspWtprjUnit);
- updateRgstrState(bisInspWtprjUnit.getId());
- return ret;
- }
- @Override
- public int update(BisInspWtprjUnit bisInspWtprjUnit) {
- // 更新登记表
- bisInspWtprjUnit.setUptm(new Date());
- int ret = this.bisInspWtprjUnitDao.update(bisInspWtprjUnit);
- updateRgstrState(bisInspWtprjUnit.getId());
- return ret;
- }
- void updateRgstrState(String unitId) {
- BisInspWtprjRegister rgstr = bisInspWtprjUnitDao.getRgstrById(unitId);
- Optional.ofNullable(rgstr).ifPresent(r -> {
- if (!Constant.STRING_TWO.equals(r.getState()) &&
- !Constant.STRING_ONE.equals(r.getState())) {
- r.setUptm(new Date());
- r.setState(Constant.STRING_ONE);
- // 更新登记表状态
- bisInspWtprjRegisterService.update(r);
- }
- });
- }
- @Override
- public int delete(String id) {
- BisInspWtprjRegister bisInspWtprjRegister = bisInspWtprjUnitDao.getRgstrById(id);
- if (bisInspWtprjRegister != null) {
- bisInspPblmService.deleteBy(Builder.of(BisInspPblmParam::new)
- .with(BisInspPblmParam::setObjId, bisInspWtprjRegister.getObjId())
- .with(BisInspPblmParam::setRegid, id)
- .build());
- }
- return this.bisInspWtprjUnitDao.delete(id);
- }
- @Override
- public List<BisInspWtprjUnit> listBySecId(String secId) {
- return bisInspWtprjUnitDao.findList(Builder.of(BisInspWtprjUnitParam::new).with(BisInspWtprjUnitParam::setSecId, secId).build());
- }
- @Override
- public List<Map<String, Object>> getResponsibility(String id) {
- // 1. 获取 公司信息
- BisInspWtprjUnit unit = get(id);
- BisInspWtprjSection section = bisInspWtprjSectionService.get(unit.getSecId());
- List<BisInspPblm> bisInspPblmList = bisInspPblmDao.list(Builder.of(BisInspPblmParam::new)
- .with(BisInspPblmParam::setObjId, section.getObjId())
- .with(BisInspPblmParam::setRegid, id).build());
- List<Map<String, Object>> res = new ArrayList<>();
- int index = 0;
- while (index < 3) {
- int finalIndex = index;
- Long yibanCount = bisInspPblmList.stream().filter(p -> String.valueOf(finalIndex).equals(p.getInspPblmCate())).count();
- Map<String, Object> map = new HashMap(5);
- map.put("level", String.valueOf(finalIndex));
- map.put("count", yibanCount);
- zhenggai(map, unit.getNature());
- res.add(map);
- index++;
- }
- return res;
- }
- // 责任追究方式监理、施工、质量检测
- // 1:责令整改 2:约谈 3:停工整改 4:经济责任 5:通报批评 6:建议解除合同 7:降低资质
- // 项目法人 8:责令整改 9:约谈 10 通报批评
- // 1:项目法人(建设单位) 2:施工单位 3:监理单位 4:勘测设计单位
- private void zhenggai(Map<String, Object> map, String type) {
- if ("1".equals(type)) {
- xiangmufaren(map);
- } else {
- sjg(map);
- }
- }
- private void xiangmufaren(Map<String, Object> map) {
- String level = MapUtils.getString(map, "level");
- int count = MapUtils.getIntValue(map, "count");
- if (count == 0) {
- return;
- }
- String max = "";
- String chose = "";
- Set<String> set = new HashSet<>();
- switch (level) {
- case "0":
- if (count <= 15) {
- max = "责令整改";
- set.add("8");
- } else {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- }
- break;
- case "1":
- if (count <= 10) {
- max = "责令整改";
- set.add("8");
- } else if (count <= 20) {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- } else {
- max = "通报批评";
- chose = "责令整改、约谈";
- set.add("10");
- set.add("8");
- set.add("9");
- }
- break;
- case "2":
- if (count <= 7) {
- max = "责令整改";
- set.add("8");
- } else if (count <= 15) {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- } else {
- max = "通报批评";
- chose = "责令整改、约谈";
- set.add("10");
- set.add("8");
- set.add("9");
- }
- default:
- }
- map.put("chose", chose);
- map.put("max", max);
- map.put("set", set);
- }
- private void sjg(Map<String, Object> map) {
- String level = MapUtils.getString(map, "level");
- int count = MapUtils.getIntValue(map, "count");
- if (count == 0) {
- return;
- }
- String max = "";
- String chose = "";
- Set<String> set = new HashSet<>();
- switch (level) {
- case "0":
- if (count <= 20) {
- max = "责令整改";
- set.add("8");
- } else {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- }
- break;
- case "1":
- if (count <= 6) {
- max = "责令整改";
- set.add("8");
- } else if (count <= 12) {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- } else if (count <= 20) {
- max = "停工整改";
- chose = "责令整改、约谈";
- set.add("3");
- set.add("8");
- set.add("9");
- } else {
- max = "通报批评";
- chose = "责令整改、停工整改、经济责任";
- set.add("10");
- set.add("8");
- set.add("3");
- set.add("4");
- }
- break;
- case "2":
- if (count <= 5) {
- max = "责令整改";
- set.add("8");
- } else if (count <= 10) {
- max = "约谈";
- chose = "责令整改";
- set.add("9");
- set.add("8");
- } else if (count <= 15) {
- max = "停工整改";
- chose = "责令整改";
- set.add("3");
- set.add("8");
- } else if (count <= 20) {
- max = "通报批评";
- chose = "责令整改、经济责任";
- set.add("10");
- set.add("8");
- set.add("4");
- } else {
- max = "建议解除合同";
- chose = "责令整改、经济责任、通报批评、降低资质";
- set.add("6");
- set.add("8");
- set.add("4");
- set.add("10");
- set.add("7");
- }
- default:
- }
- map.put("chose", chose);
- map.put("max", max);
- map.put("set", set);
- }
- /**
- * 水利项目安全生产巡检样表
- *
- * @param id 公司ID
- * @param response 导出PDF版检样表文件
- */
- @Override
- public void exportCheckList(String id, String orgId, HttpServletResponse response) {
- response.setContentType("application/x-msdownload");
- try (OutputStream out = response.getOutputStream()) {
- Map<String, Object> checkListData = getCheckListData(id, orgId);
- String fileName = MapUtils.getString(checkListData, "unitNm") + "检查表.pdf";
- String fileNameURL = URLEncoder.encode(fileName, "UTF-8");
- response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";filename*=utf-8''" + fileNameURL);
- // 1.获取数据
- updateCheckList(checkListData, out);
- out.flush();
- } catch (IOException | DocumentException e) {
- e.printStackTrace();
- }
- }
- private void updateCheckList(Map<String, Object> checkListData, OutputStream out) throws IOException, DocumentException {
- BaseFont bfCN = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
- // 正文的字体
- Font topFont = new Font(bfCN, 24f, Font.BOLD);
- Font headFont = new Font(bfCN, 12f, Font.BOLD);
- Font textFont = new Font(bfCN, 12f, Font.NORMAL);
- Document document = new Document();
- PdfWriter.getInstance(document, out);
- document.open();
- //建立一个4列的表格
- PdfPTableUtil table = new PdfPTableUtil(new PdfPTable(new float[]{6f, 20f, 20f, 40f, 14f}));
- table.getTable().setTotalWidth(PageSize.A4.getWidth() - 20f);
- table.getTable().setLockedWidth(true);
- table.addNoBorderPCell(new Paragraph(MapUtils.getString(checkListData, "title"), topFont),
- PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, 5);
- table.addNoBorderPCell(new Paragraph(" ", topFont),
- PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, 5);
- // 在相应的单元格进行赋值
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "name"), 3, 0, Element.ALIGN_LEFT);
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "time"), 2, 0, Element.ALIGN_LEFT);
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "unit"), 5, 0, Element.ALIGN_LEFT);
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "prjCtgy"), 5, 0, Element.ALIGN_LEFT);
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "prjType"), 5, 0, Element.ALIGN_LEFT);
- setPdfPCell(table.getTable(), MapUtils.getString(checkListData, "prjRisk"), 5, 0, Element.ALIGN_LEFT);
- //加表格头部序号 类别 巡查项目 严重程度 问题描述
- String[] titleArr = {"序号", "类别", "项目", "发现问题", "严重程度"};
- for (String aTitleArr : titleArr) {
- table.addPCell(new Paragraph(aTitleArr, headFont), PdfPCell.ALIGN_CENTER);
- }
- //遍历问题
- List<Map<String, String>> bisInspPblmList = (List<Map<String, String>>) checkListData.get("pblms");
- int index = 0;
- //计算'合并列'的合并相关集合
- List<Integer> indexs;
- //每个'合并列'的初始下标集合
- List<Integer> spanStartIndex;
- //每个'合并列'的合并数量集合
- List<Integer> spanNumList;
- //取出'合并列'的所有数据计算
- List<String> ListIn = new ArrayList<>();
- for (Map<String, String> res : bisInspPblmList) {
- ListIn.add(MapUtils.getString(res, "SEQ"));
- }
- spanNumList = getSpanNumList(ListIn);
- spanStartIndex = getStartIndexList(ListIn, spanNumList);
- indexs = getIndexs(bisInspPblmList.size(), spanNumList, spanStartIndex);
- for (Map<String, String> pblm : bisInspPblmList) {
- PdfPCell cell1 = new PdfPCell(new Paragraph(MapUtils.getString(pblm, "SEQ"), textFont));
- cell1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
- cell1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
- setRowsSpan(indexs, spanStartIndex, spanNumList, table.getTable(), cell1, index);
- //合并列
- PdfPCell cell2 = new PdfPCell(new Paragraph(MapUtils.getString(pblm, "CHECK_POINT", ""), textFont));
- cell2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
- cell2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
- setRowsSpan(indexs, spanStartIndex, spanNumList, table.getTable(), cell2, index);
- if ("true".equals(MapUtils.getString(pblm, "CHECK", ""))) {
- table.addPCell(new Paragraph(" ", textFont), PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, 3);
- } else {
- table.addPCell(new Paragraph(MapUtils.getString(pblm, "PBLM_DESC", ""), textFont));
- table.addPCell(new Paragraph(MapUtils.getString(pblm, "desc", ""), textFont));
- table.addPCell(new Paragraph(MapUtils.getString(pblm, "level", ""), textFont));
- }
- index++;
- }
- table.addPCell(new Paragraph("整改意见", textFont), PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, 2);
- table.addPCell(new Paragraph(MapUtils.getString(checkListData, "mendNote", ""), textFont),
- PdfPCell.ALIGN_LEFT, PdfPCell.ALIGN_MIDDLE, 3);
- PdfPCell leftTitle3 = new PdfPCell();
- leftTitle3.setColspan(3);
- leftTitle3.setMinimumHeight(28f);
- leftTitle3.setLeading(0, 1.2F);
- leftTitle3.addElement(new Paragraph("督查人员签字:", textFont));
- if (StringUtils.isNotBlank(MapUtils.getString(checkListData, "ducha"))) {
- String imgPath = webUploadPath.replace("/upload/", "") + MapUtils.getString(checkListData, "ducha");
- logger.info("督查人员签字:" + imgPath);
- Image img = Image.getInstance(imgPath);
- img.setRotation((float) Math.PI / 2);
- img.setAlignment(Image.RIGHT);
- img.scaleAbsolute(100,50);
- leftTitle3.addElement(img);
- }
- table.getTable().addCell(leftTitle3);
- PdfPCell leftTitle4 = new PdfPCell();
- leftTitle4.setColspan(2);
- leftTitle4.setMinimumHeight(28f);
- leftTitle4.setLeading(0, 1.2F);
- leftTitle4.addElement(new Paragraph("被检查单位负责人签字:", textFont));
- if (StringUtils.isNotBlank(MapUtils.getString(checkListData, "beijiancha"))) {
- String imgPath = webUploadPath.replace("/upload/", "") + MapUtils.getString(checkListData, "beijiancha");
- logger.info("被检查单位负责人签字:" + imgPath);
- Image img = Image.getInstance(imgPath);
- img.setRotation((float) Math.PI / 2);
- img.setAlignment(Image.RIGHT);
- img.scaleAbsolute(100,50);
- leftTitle4.addElement(img);
- }
- table.getTable().addCell(leftTitle4);
- document.add(table.getTable());
- document.close();
- out.flush();
- out.close();
- }
- private Map<String, Object> getCheckListData(String id, String orgId) {
- // 获取数据
- BisInspWtprjUnit bisInspWtprjUnit = bisInspWtprjUnitDao.get(id);
- BisInspWtprjSection bisInspWtprjSection = bisInspWtprjSectionService.get(bisInspWtprjUnit.getSecId());
- BisInspWtprjRegister bisInspWtprjRegister = bisInspWtprjRegisterService.get(bisInspWtprjSection.getRgstrId());
- List<BisInspPblm> bisInspPblmList = bisInspPblmDao.list(Builder.of(BisInspPblmParam::new)
- .with(BisInspPblmParam::setObjId, bisInspWtprjSection.getObjId())
- .with(BisInspPblmParam::setRegid, id).build());
- String duchaImage = "";
- String beijianchaImage = "";
- List<GwComFile> ducha = gwComFileService.findList(Builder.of(GwComFileParam::new).with(GwComFileParam::setBizId, bisInspWtprjUnit.getId() + orgId).with(GwComFileParam::setBizType, "liableSignature1").build());
- logger.info("督查人员:{}", ducha);
- if (ducha != null && ducha.size() > 0) {
- duchaImage = ducha.get(0).getFilePath();
- }
- List<GwComFile> beijiancha = gwComFileService.findList(Builder.of(GwComFileParam::new).with(GwComFileParam::setBizId, bisInspWtprjUnit.getId() + orgId).with(GwComFileParam::setBizType, "liableSignature2").build());
- logger.info("被检查人员:{}", beijiancha);
- if (beijiancha != null && beijiancha.size() > 0) {
- beijianchaImage = beijiancha.get(0).getFilePath();
- }
- Map<String, Object> checkListMap = new HashMap<>(6);
- checkListMap.put("title", "水利项目" + WtprjConvert.nature(bisInspWtprjUnit.getNature()) + "安全生产巡查检查表");
- checkListMap.put("name", "工程名称:" + bisInspWtprjRegister.getNm());
- checkListMap.put("time", "巡查时间:" + DateUtils.Date2Str(bisInspWtprjRegister.getUptm(), "yyyy-MM-dd"));
- checkListMap.put("unit", "被检查单位:" + bisInspWtprjUnit.getNm());
- checkListMap.put("unitNm", bisInspWtprjUnit.getNm());
- checkListMap.put("prjCtgy", "工程类别:" + WtprjConvert.prjType(bisInspWtprjRegister.getPrjType()));
- checkListMap.put("prjType", "工程类型:" + WtprjConvert.prjCtgy(bisInspWtprjRegister.getPrjCtgy()));
- checkListMap.put("prjRisk", "所包含的危险性较大工程:" + WtprjConvert.prjRisk(bisInspWtprjRegister.getPrjRisk()));
- checkListMap.put("ducha", duchaImage);
- checkListMap.put("beijiancha", beijianchaImage);
- checkListMap.put("mendNote", bisInspWtprjUnit.getMendNote());
- checkListMap.put("pblms", getPblmData(bisInspPblmList, bisInspWtprjUnit.getNature()));
- return checkListMap;
- }
- private List<Map<String, String>> getPblmData(List<BisInspPblm> bisInspPblmList, String type) {
- List<Map<String, String>> pblmDataList = new ArrayList<>();
- if (StringUtils.isBlank(type)) {
- return null;
- }
- List<String> checkPointList = new ArrayList<>();
- switch (type) {
- case "1":
- checkPointList.add("安全管理体系");
- checkPointList.add("安全技术管理");
- checkPointList.add("安全过程控制");
- checkPointList.add("事故隐患排查与治理");
- checkPointList.add("危险源管理");
- checkPointList.add("安全事故处理");
- checkPointList.add("项目法人安全责任");
- checkPointList.add("其他");
- break;
- case "2":
- checkPointList.add("安全管理体系");
- checkPointList.add("技术方案管理");
- checkPointList.add("设施、设备、材料管理");
- checkPointList.add("施工作业管理");
- checkPointList.add("施工环境管理");
- checkPointList.add("危险源、隐患及事故处理");
- checkPointList.add("防洪度汛与应急管理");
- checkPointList.add("安全培训教育");
- checkPointList.add("档案管理");
- checkPointList.add("其他");
- break;
- case "3":
- checkPointList.add("安全控制体系");
- checkPointList.add("安全过程控制");
- checkPointList.add("安全检查");
- checkPointList.add("其他");
- break;
- case "4":
- checkPointList.add("安全管理体系");
- checkPointList.add("勘察设计文件");
- checkPointList.add("勘察设计服务");
- checkPointList.add("其他");
- break;
- default:
- return null;
- }
- for (int i = 1; i <= checkPointList.size(); i++) {
- String checkPoint = checkPointList.get(i - 1);
- List<BisInspPblm> pblmList = new ArrayList<>();
- if (bisInspPblmList != null && bisInspPblmList.size() > 0) {
- pblmList = bisInspPblmList.stream()
- .filter(p -> checkPoint.equals(p.getCheckPointBz()))
- .collect(Collectors.toList());
- }
- if (pblmList == null || pblmList.size() == 0) {
- Map<String, String> pblm = new HashMap<>(5);
- pblm.put("SEQ", String.valueOf(i));
- pblm.put("CHECK_POINT", checkPoint);
- pblm.put("CHECK", "true");
- pblmDataList.add(pblm);
- continue;
- }
- List<String> pblmsTypeIdList = pblmList.stream().map(BisInspPblm::getPblmsTypeId).distinct().collect(Collectors.toList());
- for (String pblmsTypeId : pblmsTypeIdList) {
- Map<String, String> pblm = new HashMap<>(5);
- pblm.put("SEQ", String.valueOf(i));
- pblm.put("CHECK_POINT", checkPoint);
- pblm.put("PBLM_DESC", bisInspPblmList.stream()
- .filter(p -> pblmsTypeId.equals(p.getPblmsTypeId()))
- .map(BisInspPblm::getPblmDescBz)
- .findFirst().orElse(""));
- pblm.put("desc", bisInspPblmList.stream()
- .filter(p -> pblmsTypeId.equals(p.getPblmsTypeId()))
- .map(BisInspPblm::getInspPblmDesc)
- .collect(Collectors.joining(";")));
- pblm.put("level", bisInspPblmList.stream()
- .filter(p -> pblmsTypeId.equals(p.getPblmsTypeId()))
- .map(o -> InspPblmUtils.plbmCateDesc(o.getInspPblmCate()))
- .distinct()
- .collect(Collectors.joining("、")));
- pblmDataList.add(pblm);
- }
- }
- return pblmDataList;
- }
- private void setPdfPCell(PdfPTable table, String value, int colspan, int border, int horizontalAlignment) {
- Font fontZh = FontFactory.getFont("STSongStd-Light", "UniGB-UCS2-H", 14);
- PdfPCell leftTitleOne = new PdfPCell(new Paragraph(value, fontZh));
- leftTitleOne.setColspan(colspan);
- leftTitleOne.setBorder(border);
- leftTitleOne.setHorizontalAlignment(horizontalAlignment);
- leftTitleOne.setMinimumHeight(28f);
- leftTitleOne.setLeading(0, 1.2F);
- table.addCell(leftTitleOne);
- }
- /**
- * 获取某列要合并的单元格数量
- *
- * @param list 内容必须符合'A,A,B,C,D,D,D,E' 而不是 'A,A,B,C,A,D,D,D,E' ,即所有相同的值必须在一起不能分散
- * @return
- */
- private List<Integer> getSpanNumList(List<String> list) {
- LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
- if (list.size() > 0) {
- for (int i = 0; i < list.size(); i = i + 1) {
- map.put(list.get(i), i);
- }
- }
- //修改对应key值的value
- Set<String> s = map.keySet();//获取KEY集合
- List<String> strings = new ArrayList<>(s);
- int spanNum = 0;
- for (String string : strings) {
- int tmpSpanNum = map.get(string) - spanNum + 1;
- map.put(string, tmpSpanNum);
- spanNum += tmpSpanNum;
- }
- List<Integer> res = new ArrayList<>();
- for (String string : strings) {
- res.add(map.get(string));
- }
- return res;
- }
- /**
- * 获取某列要合并的单元格初始下标
- *
- * @param list 内容必须符合'A,A,B,C,D,D,D,E' 而不是 'A,A,B,C,A,D,D,D,E' ,即所有相同的值必须在一起不能分散
- * @param resSpanNumList
- * @return
- */
- private List<Integer> getStartIndexList(List<String> list, List<Integer> resSpanNumList) {
- LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
- if (list.size() > 0) {
- for (int i = 0; i < list.size(); i = i + 1) {
- map.put(list.get(i), i);
- }
- }
- Set<String> keys = map.keySet();//获取KEY集合
- List<String> stringKeys = new ArrayList<>(keys);
- List<Integer> res = new ArrayList<>();
- if (stringKeys.size() == resSpanNumList.size()) {
- for (int i = 0; i < stringKeys.size(); i++) {
- res.add(map.get(stringKeys.get(i)) - resSpanNumList.get(i) + 1);
- }
- }
- return res;
- }
- /**
- * 不加某字段的索引集合
- *
- * @param listLength
- * @param resSpanNumList
- * @param resStartIndexList
- * @return
- */
- private List<Integer> getIndexs(int listLength,
- List<Integer> resSpanNumList, List<Integer> resStartIndexList) {
- List<Integer> indexs = new ArrayList<>();
- for (int i = 0; i < listLength; i++) {
- for (int j = 0; j < resStartIndexList.size(); j++) {
- if (i == resStartIndexList.get(j)) {
- for (int k = i + 1; k < i + resSpanNumList.get(j); k++) {
- indexs.add(k);
- }
- }
- }
- }
- return indexs;
- }
- /**
- * 设置恰当位置的setRowSpan属性
- *
- * @param indexs 不加单元格的索引集合
- * @param spanStartIndex 要加的单元格开始索引集合
- * @param spanNumList 要加的单元格合并的值集合
- * @param table table
- * @param cell cell
- * @param i 索引
- */
- private void setRowsSpan(List<Integer> indexs, List<Integer> spanStartIndex,
- List<Integer> spanNumList, PdfPTable table, PdfPCell cell, int i) {
- if (indexs != null) {
- boolean isAllNotEqual = true;
- for (Integer index : indexs) {
- if (i == index) {
- isAllNotEqual = false;
- break;
- }
- }
- //没有不加的下标
- if (isAllNotEqual) {
- // 判断在哪里设置span值
- if (spanStartIndex != null) {
- boolean isSpan = false;
- int copyJ = 0;
- for (int j = 0; j < spanStartIndex.size(); j++) {
- if (i == spanStartIndex.get(j)) {
- isSpan = true;
- copyJ = j;
- break;
- }
- }
- if (isSpan) {
- int spanNum = spanNumList.get(copyJ);
- cell.setRowspan(spanNum);
- }
- }
- table.addCell(cell);
- }
- } else {
- table.addCell(cell);
- }
- }
- }
|