|
@@ -8,10 +8,7 @@ import com.aspose.words.Font;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.rongwe.scentity.domian.AspSafetyDrillProgrammeDo;
|
|
|
-import com.rongwe.scentity.domian.AspSafetyDrillProgrammeMsgNotifyRecordDo;
|
|
|
-import com.rongwe.scentity.domian.AspSafetyEmergencyDrillPlan;
|
|
|
-import com.rongwe.scentity.domian.AspSafetyEmergencyPlan;
|
|
|
+import com.rongwe.scentity.domian.*;
|
|
|
import com.rongwe.scentity.vo.AspSafetyEmergencyDrillPlanVo;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysDictDo;
|
|
|
import com.rongwei.rwadmincommon.system.service.SysDictService;
|
|
@@ -31,6 +28,8 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.awt.*;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileOutputStream;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
import java.util.List;
|
|
@@ -281,6 +280,254 @@ public class AspSafetyDrillProgrammeServiceImpl extends ServiceImpl<AspSafetyDri
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void exportAnnualDrillPlanWord(String id, HttpServletResponse response) throws Exception {
|
|
|
+ boolean wordLicense = AsposeWordsUtils.getWordLicense();
|
|
|
+ //获取数据
|
|
|
+ //1、固定数据
|
|
|
+ List<AspSafetyOnsiteDisposalPlan> onsiteDisposalPlanList = this.baseMapper.selectOnsiteDisposalPlan();
|
|
|
+
|
|
|
+ //2、主表数据
|
|
|
+ AspSafetyAnnualDrillPlan annualDrillPlan = this.baseMapper.selectAnnualDrillPlanById(id);
|
|
|
+
|
|
|
+ //3、月表数据
|
|
|
+ List<AspSafetyAnnualDrillPlanMonth> annualDrillPlanMonthList = this.baseMapper.selectAnnualDrillPlanMonthById(id);
|
|
|
+
|
|
|
+ // 创建空白文档
|
|
|
+ Document doc = new Document();
|
|
|
+
|
|
|
+ DocumentBuilder builder = new DocumentBuilder(doc);
|
|
|
+
|
|
|
+ builder.getPageSetup().setPaperSize(PaperSize.A4);//A4纸
|
|
|
+ builder.getPageSetup().setOrientation(Orientation.PORTRAIT);//方向
|
|
|
+ builder.getPageSetup().setVerticalAlignment(PageVerticalAlignment.TOP); //垂直对准
|
|
|
+ builder.getPageSetup().setLeftMargin(42);//页面左边距
|
|
|
+ builder.getPageSetup().setRightMargin(42);//页面右边距
|
|
|
+
|
|
|
+ //获取ParagraphFormat对象,关于行的样式基本都在这里
|
|
|
+ ParagraphFormat ph = builder.getParagraphFormat();
|
|
|
+ //文字对齐方式
|
|
|
+ ph.setAlignment(ParagraphAlignment.CENTER);
|
|
|
+ // 单倍行距 = 12 , 1.5 倍 = 18
|
|
|
+ ph.setLineSpacing(12);
|
|
|
+ Font font = builder.getFont();
|
|
|
+ //大小22
|
|
|
+ font.setSize(22);
|
|
|
+ //粗体
|
|
|
+ font.setBold(true);
|
|
|
+ //颜色
|
|
|
+ font.setColor(Color.BLACK);
|
|
|
+ //字体
|
|
|
+ font.setNameFarEast("宋体");
|
|
|
+ //添加文字
|
|
|
+ String title = annualDrillPlan.getYyyy() + "年现场处置方案演练计划";
|
|
|
+ builder.writeln(title);
|
|
|
+
|
|
|
+
|
|
|
+ font.setSize(10);
|
|
|
+ font.setBold(false);
|
|
|
+
|
|
|
+
|
|
|
+ //开始添加表格
|
|
|
+ Table table = builder.startTable();
|
|
|
+ //开始添加第一行,并设置表格行高
|
|
|
+ RowFormat rowf = builder.getRowFormat();
|
|
|
+ rowf.setHeight(40);
|
|
|
+ // ....这里rowf可以有很多的设置
|
|
|
+ //插入一个单元格
|
|
|
+ builder.insertCell();
|
|
|
+ //设置单元格是否水平合并
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
|
|
|
+// //设置单元格是否垂直合并,None为不合并
|
|
|
+// builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
|
|
|
+ //设置单元格宽
|
|
|
+ builder.getCellFormat().setWidth(40);
|
|
|
+ //单元格垂直对齐方向
|
|
|
+ builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
|
|
|
+ //单元格水平对齐方向
|
|
|
+ builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
|
|
|
+
|
|
|
+ //单元格内添加文字
|
|
|
+ builder.write("部门");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setWidth(-1);//当不需要规定这个单元格的宽度的时候,设置成-1,会是自动宽度
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
|
|
|
+ builder.write("月份");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
|
|
|
+ builder.getCellFormat().setWidth(-1);//当不需要规定这个单元格的宽度的时候,设置成-1,会是自动宽度
|
|
|
+ builder.write("负责人");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
|
|
|
+ builder.getCellFormat().setWidth(-1);//当不需要规定这个单元格的宽度的时候,设置成-1,会是自动宽度
|
|
|
+ builder.write("演练内容及代码");
|
|
|
+ //结束第一行
|
|
|
+ builder.endRow();
|
|
|
+ //第二行开始
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
|
|
|
+ builder.write("1");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("2");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("3");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("4");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("5");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("6");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("7");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("8");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("9");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("10");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("11");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("12");
|
|
|
+
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.endRow();
|
|
|
+
|
|
|
+ for (int i = 0;i<annualDrillPlanMonthList.size();i++) {
|
|
|
+ AspSafetyAnnualDrillPlanMonth item = annualDrillPlanMonthList.get(i);
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
|
|
|
+ builder.write(item.getDeptname());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getJan());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getFeb());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getMar());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getApr());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getMay());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getJun());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getJul());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getAug());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getSept());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getOct());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getNov());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getDdec());
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write(item.getDirector());
|
|
|
+ if(i == 0) {
|
|
|
+ //插入合并大型固定数据
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.FIRST);
|
|
|
+ for (AspSafetyOnsiteDisposalPlan item2 : onsiteDisposalPlanList) {
|
|
|
+ String word = item2.getTreatment() + " " + item2.getNo();
|
|
|
+ builder.writeln(word);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ }
|
|
|
+ builder.endRow();
|
|
|
+ }
|
|
|
+ //结尾
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
|
|
|
+ builder.getCellFormat().setVerticalMerge(CellMerge.NONE);
|
|
|
+ builder.write("共计");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
|
|
|
+ builder.write("各类现场处置方案演练共计"+annualDrillPlan.getDrillplancount()+"次");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.insertCell();
|
|
|
+ builder.write("");
|
|
|
+ builder.endRow();
|
|
|
+
|
|
|
+ //结束表格
|
|
|
+ builder.endTable();
|
|
|
+ response.setContentType("application/octet-stream;charset=UTF-8");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(title+".docx", "UTF-8"));
|
|
|
+ doc.save(response.getOutputStream(), com.aspose.words.SaveFormat.DOCX);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 消息提醒
|