Parcourir la source

导出年度演练计划WORD

sucheng il y a 1 an
Parent
commit
5c19f893e9

+ 10 - 2
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSafetyDrillProgrammeDao.java

@@ -1,8 +1,7 @@
 package com.rongwei.sfcommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.rongwe.scentity.domian.AspSafetyDrillProgrammeDo;
-import com.rongwe.scentity.domian.AspSafetyEmergencyDrillPlan;
+import com.rongwe.scentity.domian.*;
 import com.rongwe.scentity.vo.AspSafetyEmergencyDrillPlanVo;
 import org.apache.ibatis.annotations.Select;
 
@@ -20,4 +19,13 @@ public interface AspSafetyDrillProgrammeDao extends BaseMapper<AspSafetyDrillPro
 
     @Select("select a.*,b.`NAME` AS 'drillCategoryName' from asp_safety_emergency_drill_plan a LEFT JOIN (select * from sys_dict where DELETED = 0 AND DICTTYPE='satefy_drill_type') b ON a.DRILLCATEGORY = b.`VALUE` where a.DELETED = 0 AND DRILLDATE >= #{startDate} AND DRILLDATE <= #{endDate}")
     List<AspSafetyEmergencyDrillPlanVo> selectSafetyEmergencyDrillPlanByDate(String startDate, String endDate);
+
+    @Select("select * from asp_safety_onsite_disposal_plan where DELETED = 0 order by NO")
+    List<AspSafetyOnsiteDisposalPlan> selectOnsiteDisposalPlan();
+
+    @Select("select * from asp_safety_annual_drill_plan where DELETED = 0 AND ID = #{id}")
+    AspSafetyAnnualDrillPlan selectAnnualDrillPlanById(String id);
+
+    @Select("select * from asp_safety_annual_drill_plan_month where DELETED = 0 AND ANNUALDRILLPLANID = #{id}")
+    List<AspSafetyAnnualDrillPlanMonth> selectAnnualDrillPlanMonthById(String id);
 }

+ 2 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyDrillProgrammeService.java

@@ -40,4 +40,6 @@ public interface AspSafetyDrillProgrammeService extends IService<AspSafetyDrillP
     void notifyCurrentDay();
 
     void exportEmergencyDrillPlanWord(String startDate, String endDate, HttpServletResponse response) throws Exception;
+
+    void exportAnnualDrillPlanWord(String id, HttpServletResponse response) throws Exception;
 }

+ 251 - 4
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyDrillProgrammeServiceImpl.java

@@ -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);
+
+    }
 
     /**
      * 消息提醒

+ 91 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyAnnualDrillPlan.java

@@ -0,0 +1,91 @@
+package com.rongwe.scentity.domian;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * asp_safety_annual_drill_plan
+ * @author 
+ */
+@Data
+public class AspSafetyAnnualDrillPlan implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展预留
+     */
+    private String roption;
+
+    /**
+     * 删除标记
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建人ID
+     */
+    private String createuserid;
+
+    /**
+     * 创建人姓名
+     */
+    private String createusername;
+
+    /**
+     * 创建日期
+     */
+    private Date createdate;
+
+    /**
+     * 修改人ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 修改人姓名
+     */
+    private String modifyusername;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 组织ID
+     */
+    private String orgid;
+
+    /**
+     * 年份
+     */
+    private Date yyyy;
+
+    /**
+     * 现场处置演练方案总数
+     */
+    private Integer drillplancount = 0;
+
+    /**
+     * 类型
+     */
+    private String plantype;
+
+    /**
+     * 公司类型
+     */
+    private String companytype;
+
+    private static final long serialVersionUID = 1L;
+}

+ 156 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyAnnualDrillPlanMonth.java

@@ -0,0 +1,156 @@
+package com.rongwe.scentity.domian;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * asp_safety_annual_drill_plan_month
+ * @author 
+ */
+@Data
+public class AspSafetyAnnualDrillPlanMonth implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展预留
+     */
+    private String roption;
+
+    /**
+     * 删除标记
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建人ID
+     */
+    private String createuserid;
+
+    /**
+     * 创建人姓名
+     */
+    private String createusername;
+
+    /**
+     * 创建日期
+     */
+    private Date createdate;
+
+    /**
+     * 修改人ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 修改人姓名
+     */
+    private String modifyusername;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 组织ID
+     */
+    private String orgid;
+
+    /**
+     * 年度演练计划ID
+     */
+    private String annualdrillplanid;
+
+    /**
+     * 部门id
+     */
+    private String deptid;
+
+    /**
+     * 部门名称
+     */
+    private String deptname = "";
+
+    /**
+     * 一月
+     */
+    private String jan = "";
+
+    /**
+     * 二月
+     */
+    private String feb = "";
+
+    /**
+     * 三月
+     */
+    private String mar = "";
+
+    /**
+     * 四月
+     */
+    private String apr = "";
+
+    /**
+     * 五月
+     */
+    private String may = "";
+
+    /**
+     * 六月
+     */
+    private String jun = "";
+
+    /**
+     * 七月
+     */
+    private String jul = "";
+
+    /**
+     * 八月
+     */
+    private String aug = "";
+
+    /**
+     * 九月
+     */
+    private String sept = "";
+
+    /**
+     * 十月
+     */
+    private String oct = "";
+
+    /**
+     * 十一月
+     */
+    private String nov = "";
+
+    /**
+     * 十二月
+     */
+    private String ddec = "";
+
+    /**
+     * 负责人ID
+     */
+    private String directorid;
+
+    /**
+     * 负责人
+     */
+    private String director = "";
+
+    private static final long serialVersionUID = 1L;
+}

+ 81 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyOnsiteDisposalPlan.java

@@ -0,0 +1,81 @@
+package com.rongwe.scentity.domian;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * asp_safety_onsite_disposal_plan
+ * @author 
+ */
+@Data
+public class AspSafetyOnsiteDisposalPlan implements Serializable {
+    /**
+     * 主键
+     */
+    private String id;
+
+    private String tenantid;
+
+    /**
+     * 扩展预留
+     */
+    private String roption;
+
+    /**
+     * 删除标记
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建人ID
+     */
+    private String createuserid;
+
+    /**
+     * 创建人姓名
+     */
+    private String createusername;
+
+    /**
+     * 创建日期
+     */
+    private Date createdate;
+
+    /**
+     * 修改人ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 修改人姓名
+     */
+    private String modifyusername;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 组织ID
+     */
+    private String orgid;
+
+    /**
+     * 序号
+     */
+    private Integer no;
+
+    /**
+     * 处理方式
+     */
+    private String treatment;
+
+    private static final long serialVersionUID = 1L;
+}

+ 14 - 6
cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/AspSafetyDrillProgrammeController.java

@@ -29,7 +29,7 @@ public class AspSafetyDrillProgrammeController {
      * @return
      */
     @PostMapping("/publish")
-    public R publish(){
+    public R publish() {
         aspSafetyDrillProgrammeService.publish();
         return R.ok();
     }
@@ -40,7 +40,7 @@ public class AspSafetyDrillProgrammeController {
      * @return
      */
     @PostMapping("/notify3DayAndNow")
-    public R notify3DayAndNow(){
+    public R notify3DayAndNow() {
         aspSafetyDrillProgrammeService.notify3Day();
         return R.ok();
     }
@@ -51,7 +51,7 @@ public class AspSafetyDrillProgrammeController {
      * @return
      */
     @PostMapping("/notify")
-    public R notify(@RequestBody Map<String, String> map){
+    public R notify(@RequestBody Map<String, String> map) {
         aspSafetyDrillProgrammeService.sendMsg(map.get("id"));
         return R.ok();
     }
@@ -62,7 +62,7 @@ public class AspSafetyDrillProgrammeController {
      * @return
      */
     @PostMapping("/notifyNow")
-    public R notifyNow(){
+    public R notifyNow() {
         aspSafetyDrillProgrammeService.notifyCurrentDay();
         return R.ok();
     }
@@ -72,10 +72,18 @@ public class AspSafetyDrillProgrammeController {
      */
     @PostMapping("/exportEmergencyDrillPlanWord")
     public void exportEmergencyDrillPlanWord(@RequestParam String startDate,
-                                          @RequestParam String endDate,
-                                          HttpServletResponse response) throws Exception {
+                                             @RequestParam String endDate,
+                                             HttpServletResponse response) throws Exception {
         aspSafetyDrillProgrammeService.exportEmergencyDrillPlanWord(startDate, endDate, response);
     }
 
+    /**
+     * 导出年度演练计划WORD
+     */
+    @PostMapping("/exportAnnualDrillPlanWord")
+    public void exportAnnualDrillPlanWord(@RequestParam String id,
+                                          HttpServletResponse response) throws Exception {
+        aspSafetyDrillProgrammeService.exportAnnualDrillPlanWord(id, response);
+    }
 }
 

+ 11 - 0
cx-safe-check/pom.xml

@@ -27,6 +27,17 @@
             <groupId>com.rongwei</groupId>
             <artifactId>rw-common-utils</artifactId>
             <version>1.1-SNAPSHOT</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.aspose</groupId>
+                    <artifactId>aspose-words</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.aspose.words</groupId>
+            <artifactId>aspose-words</artifactId>
+            <version>21.1</version>
         </dependency>
     </dependencies>
 </project>