package com.fdkankan.fusion.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.TextRenderData;
import com.deepoove.poi.data.style.Style;
import com.fdkankan.fusion.common.ResultCode;
import com.fdkankan.fusion.entity.CaseInquest;
import com.fdkankan.fusion.exception.BusinessException;
import com.fdkankan.fusion.mapper.ICaseInquestMapper;
import com.fdkankan.fusion.response.CaseInquestVo;
import com.fdkankan.fusion.response.WitnessVo;
import com.fdkankan.fusion.service.ICaseInquestService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.poi.xwpf.usermodel.UnderlinePatterns;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.InputStream;
/**
*
* 服务实现类
*
*
* @author
* @since 2024-07-04
*/
@Service
public class CaseInquestServiceImpl extends ServiceImpl implements ICaseInquestService {
@Override
public CaseInquest getByCaseId(Integer caseId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CaseInquest::getCaseId,caseId);
return this.getOne(wrapper);
}
@Override
public void saveByParam(CaseInquest caseInquest) {
if(caseInquest.getCaseId() == null){
throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
}
CaseInquest dbCaseInquest = this.getByCaseId(caseInquest.getCaseId());
if(dbCaseInquest != null){
caseInquest.setId(dbCaseInquest.getId());
}
this.saveOrUpdate(caseInquest);
}
@Override
public XWPFTemplate getWordByTemplate(CaseInquest caseInquest) {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/inquest-template.docx");
// 渲染模板
CaseInquestVo vo = new CaseInquestVo();
BeanUtils.copyProperties(caseInquest,vo);
String info = "证人或当事人(签名):%s %s年 %s月 %s日 身份证件号码:%s\n"
+" 单位或住址:%s\n";
StringBuilder msg = new StringBuilder();
for (Object object : vo.getWitnessInfo()) {
JSONObject obj = (JSONObject) object;
WitnessVo witnessVo = JSONObject.toJavaObject(obj,WitnessVo.class);
String format = String.format(info, witnessVo.getName(), witnessVo.getYear(), witnessVo.getMonth(), witnessVo.getDay(), witnessVo.getId(), witnessVo.getAddress());
msg.append(format);
}
TextRenderData text = new TextRenderData("000000",msg.toString());
Style style = text.getStyle();
style.setUnderlinePatterns(UnderlinePatterns.SINGLE);
vo.setText(text);
XWPFTemplate template = XWPFTemplate.compile(inputStream).render(vo);
return template;
}
}