123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package com.fdkankan.fusion.service.impl;
- import cn.dev33.satoken.stp.StpUtil;
- import cn.hutool.core.date.DatePattern;
- import cn.hutool.core.date.DateUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.deepoove.poi.XWPFTemplate;
- import com.deepoove.poi.config.Configure;
- import com.deepoove.poi.config.ConfigureBuilder;
- import com.deepoove.poi.data.TextRenderData;
- import com.deepoove.poi.data.style.Style;
- import com.deepoove.poi.xwpf.NiceXWPFDocument;
- import com.fdkankan.fusion.common.FilePath;
- import com.fdkankan.fusion.common.ResultCode;
- import com.fdkankan.fusion.common.util.DateUtils;
- import com.fdkankan.fusion.common.util.ShellUtil;
- import com.fdkankan.fusion.common.util.XwpTemplateUtils;
- import com.fdkankan.fusion.entity.*;
- import com.fdkankan.fusion.exception.BusinessException;
- import com.fdkankan.fusion.mapper.ICaseInquestCriminalMapper;
- import com.fdkankan.fusion.response.CaseInquestCriminalVo;
- import com.fdkankan.fusion.response.CaseInquestVo;
- import com.fdkankan.fusion.response.WitnessVo;
- import com.fdkankan.fusion.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.poi.xwpf.usermodel.UnderlinePatterns;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.InputStream;
- import java.util.Date;
- import java.util.List;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author
- * @since 2024-10-18
- */
- @Service
- @Slf4j
- public class CaseInquestCriminalServiceImpl extends ServiceImpl<ICaseInquestCriminalMapper, CaseInquestCriminal> implements ICaseInquestCriminalService {
- @Autowired
- ITmUserService tmUserService;
- @Autowired
- ICaseService caseService;
- @Autowired
- ITmDepartmentService tmDepartmentService;
- @Autowired
- ICaseNumService caseNumService;
- @Autowired
- IScenePlusService scenePlusService;
- @Autowired
- ICaseFilesService caseFilesService;
- @Override
- public CaseInquestCriminal getByInquestFileId(Integer caseId) {
- LambdaQueryWrapper<CaseInquestCriminal> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(CaseInquestCriminal::getInquestFileId,caseId);
- CaseInquestCriminal caseInquestCriminal = this.getOne(wrapper);
- return caseInquestCriminal;
- }
- @Override
- public void saveByParam(CaseInquestCriminal caseInquestCriminal) {
- if(caseInquestCriminal.getInquestFileId() == null){
- CaseFiles caseFiles = caseFilesService.addByInquest(caseInquestCriminal);
- caseInquestCriminal.setInquestFileId(caseFiles.getFilesId());
- }else {
- CaseInquestCriminal byInquestFileId = getByInquestFileId(caseInquestCriminal.getInquestFileId());
- caseInquestCriminal.setId(byInquestFileId.getId());
- }
- this.saveOrUpdate(caseInquestCriminal);
- //生产doc文档
- try {
- Integer inquestFileId = caseInquestCriminal.getInquestFileId();
- CaseFiles caseFiles = caseFilesService.getById(inquestFileId);
- XWPFTemplate template = this.getWordByTemplate(caseInquestCriminal);
- String localPath = String.format(FilePath.MNTPATH+FilePath.DOC_OSS_PATH,caseFiles.getFilesId(),caseFiles.getFilesTitle()+".docx");
- template.writeToFile(localPath );
- ShellUtil.yunUpload(localPath,localPath.replace(FilePath.MNTPATH,""));
- }catch (Exception e){
- log.info("caseInquestCriminal-保存生成doc文档出错:error",e);
- }
- }
- @Override
- public XWPFTemplate getWordByTemplate(CaseInquestCriminal caseInquest) {
- InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/inquest_criminal-template.docx");
- // 渲染模板
- CaseInquestCriminalVo vo = new CaseInquestCriminalVo();
- BeanUtils.copyProperties(caseInquest,vo);
- //[{"unit":"四维","name":"张三","typeLabel":"笔录人","type":0,"job":"植物一"}]
- String recorderInfo = "%s:姓名 %s 单位 %s 职务 %s\n";
- StringBuilder recorderInfoMsg = new StringBuilder();
- for (Object object : vo.getRecorderInfo()) {
- JSONObject obj = (JSONObject) object;
- String format = String.format(recorderInfo,obj.getString("typeLabel"), obj.getString("name"), obj.getString("unit"), obj.getString("job"));
- recorderInfoMsg.append(format);
- }
- TextRenderData text = new TextRenderData("000000",recorderInfoMsg.toString());
- Style style = text.getStyle();
- style.setUnderlinePatterns(UnderlinePatterns.SINGLE);
- vo.setRecorderInfoText(text);
- //[{"unit":"四维","job":"植物一"}]
- String signatureInfo = "本人签名: 单位 %s 职务 %s\n";
- StringBuilder signatureInfoMsg = new StringBuilder();
- for (Object object : vo.getSignatureInfo()) {
- JSONObject obj = (JSONObject) object;
- String format = String.format(signatureInfo, obj.getString("unit"), obj.getString("job"));
- signatureInfoMsg.append(format);
- }
- TextRenderData text2 = new TextRenderData("000000",signatureInfoMsg.toString());
- Style style2 = text2.getStyle();
- style2.setUnderlinePatterns(UnderlinePatterns.SINGLE);
- vo.setSignatureInfoText(text2);
- //[{"birthday":"2024-10-15T16:00:00.000Z","address":"dfsdfdsdsdsdsds","sex":0}]
- //[{"sex":0,"birthday":"","address":""},{"sex":0,"birthday":"","address":""}]
- String witnessInfo = "本人签名: 性别 %s 出生日期 %s 住址 %s\n";
- StringBuilder witnessInfoMsg = new StringBuilder();
- for (Object object : vo.getWitnessInfo()) {
- JSONObject obj = (JSONObject) object;
- String birthday = DateUtil.format(obj.getDate("birthday"), DatePattern.CHINESE_DATE_FORMAT) == null?"":DateUtil.format(obj.getDate("birthday"), DatePattern.CHINESE_DATE_FORMAT);
- String format = String.format(witnessInfo, XwpTemplateUtils.getSexStr(obj.getInteger("sex")), birthday,obj.getString("address"));
- witnessInfoMsg.append(format);
- }
- TextRenderData text3 = new TextRenderData("000000",witnessInfoMsg.toString());
- Style style3 = text3.getStyle();
- style3.setUnderlinePatterns(UnderlinePatterns.SINGLE);
- vo.setWitnessInfoText(text3);
- ConfigureBuilder builder = Configure.builder();
- builder.useSpringEL(false);
- //builder.setValidErrorHandler(new Configure.DiscardHandler());
- XWPFTemplate compile = XWPFTemplate.compile(inputStream, builder.build());
- compile.render(vo);
- return compile;
- }
- }
|