瀏覽代碼

文印申请

sangwenwei 1 年之前
父節點
當前提交
a62be7040b

+ 20 - 0
jeeplus-modules/jeeplus-business/pom.xml

@@ -127,6 +127,26 @@
             <version>9.0</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.5.13.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.9</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 161 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/controller/InscriptionController.java

@@ -0,0 +1,161 @@
+package com.jeeplus.business.inscription.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.assess.utils.FreemarkerUtil;
+import com.jeeplus.business.goOut.service.dto.GoOutDTO;
+import com.jeeplus.business.inscription.domain.Inscription;
+import com.jeeplus.business.inscription.service.InscriptionService;
+import com.jeeplus.business.inscription.service.dto.InscriptionDTO;
+import com.jeeplus.business.project.domain.JyProject;
+import com.jeeplus.business.project.utils.JyResponseUtil;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Api(tags ="文印申请")
+@RestController
+@RequestMapping(value = "/inscription")
+public class InscriptionController {
+
+    @Resource
+    private InscriptionService inscriptionService;
+
+
+    /**
+     * 文印申请列表
+     */
+    @ApiOperation(value = "文印申请列表")
+    @GetMapping(value = "/findList")
+    public ResponseEntity<IPage<InscriptionDTO>> applyList(InscriptionDTO inscriptionDTO, Page<InscriptionDTO> page) throws Exception {
+        IPage<InscriptionDTO> pageList=inscriptionService.findPageList(inscriptionDTO,page);
+        return ResponseEntity.ok(pageList);
+    }
+
+    /**
+     * 获取附件总页数
+     */
+    @ApiOperation(value = "获取附件总页数")
+    @PostMapping(value = "/getPageTotal")
+    public Integer getPageTotal(@RequestBody InscriptionDTO inscriptionDTO) throws IOException {
+        Integer total=inscriptionService.getPageTotal(inscriptionDTO);
+        return total;
+    }
+
+
+    /**
+     * 新增/修改
+     */
+    @ApiOperation(value = "新增或修改")
+    @PostMapping(value = "/saveForm")
+    public ResponseEntity saveForm(@RequestBody InscriptionDTO inscriptionDTO){
+        String id=inscriptionService.save(inscriptionDTO);
+        return ResponseUtil.newInstance().add("businessTable","jy_inscription").add("businessId",id).ok("操作成功");
+    }
+
+    /**
+     * 根据id查找文印信息
+     */
+    @ApiOperation(value = "根据id查找文印信息")
+    @GetMapping(value = "findById")
+    public ResponseEntity<InscriptionDTO> findById(@RequestParam String id){
+        InscriptionDTO inscriptionDTO=inscriptionService.findById(id);
+        return ResponseEntity.ok(inscriptionDTO);
+    }
+
+    /**
+     * 根据id修改状态status
+     * @param
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "/updateStatusById")
+    public void updateStatusById(@RequestBody InscriptionDTO inscriptionDTO) {
+        inscriptionService.updateStatusById(inscriptionDTO);
+    }
+
+    /**
+     * 根据id进行删除
+     */
+    @ApiOperation(value = "根据id进行删除")
+    @DeleteMapping(value = "/delete")
+    public ResponseEntity<String> deleteById(@RequestParam String id){
+        String s = inscriptionService.deleteById(id);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 下载文印申请表
+     */
+    @RequestMapping(value="downloadInscription")
+    @ResponseBody
+    public void downloadInscription(HttpServletResponse response, Inscription inscription) throws ParseException {
+        Map data = inscriptionService.getAuditInfoMap(inscription);
+        //模板对象
+        Template template=null;
+        //下载文件地址
+        String filePath = null;
+        if(System.getProperty("os.name").toLowerCase().contains("win")){
+            filePath = this.getClass().getResource("/").getPath()+"/freemarker";
+        }else{
+            filePath = "/mnt/project/cloud/freemarker";
+        }
+        //freemaker模板路径
+        File path = new File(filePath);
+
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("文印申请单.ftl","UTF-8");
+            File docFile = new File("文印申请单.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            JyResponseUtil.docResponse("文印申请单.doc",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            if(System.getProperty("os.name").toLowerCase().contains("win")){
+                //获取tomcat的路径
+                String tomcatFilePath=System.getProperty("catalina.home");
+                //删除tomcat目录下的处理后的文件信息
+                File tomcatFile = new File(tomcatFilePath+"/bin/文印申请单.doc");
+                if (tomcatFile.isFile()) {
+                    tomcatFile.delete();
+                }
+            }else{
+                //删除目录下的处理后的文件信息
+                File tomcatFile = new File("/mnt/project/cloud/文印申请单.doc");
+                if (tomcatFile.isFile()) {
+                    tomcatFile.delete();
+                }
+            }
+        }
+    }
+
+    /**
+     * 管理员修改
+     */
+    @ApiOperation(value = "管理员修改")
+    @PostMapping(value = "/adminEditForm")
+    public ResponseEntity adminEditForm(@RequestBody InscriptionDTO inscriptionDTO){
+        inscriptionService.adminEditForm(inscriptionDTO);
+        return ResponseEntity.ok("操作成功");
+    }
+
+
+}

+ 64 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/domain/Inscription.java

@@ -0,0 +1,64 @@
+package com.jeeplus.business.inscription.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("jy_inscription")
+public class Inscription extends BaseEntity {
+
+    /**
+     * 关联项目
+     */
+    private String projectId;
+    private String projectName;
+
+    /**
+     * 黑白页数量
+     */
+    private Integer normalPage;
+
+    /**
+     * 彩页数量
+     */
+    private Integer colorPage;
+
+    /**
+     * 装订数量
+     */
+    private Integer bookbindingNum;
+
+    /**
+     * 其他
+     */
+    private Integer otherNum;
+
+    /**
+     * 文印内容
+     */
+    private String content;
+
+    /**
+     * 部长
+     */
+    private String minister;
+
+    /**
+     * 核准人
+     */
+    private String examiner;
+
+    //批准人
+    private String approver;
+
+    //流程
+    private String procInsId;
+    private String processDefinitionId;
+
+    //状态
+    private String status;
+
+
+
+}

+ 22 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/mapper/InscriptionMapper.java

@@ -0,0 +1,22 @@
+package com.jeeplus.business.inscription.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.business.inscription.domain.Inscription;
+import com.jeeplus.business.inscription.service.dto.InscriptionDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface InscriptionMapper extends BaseMapper<Inscription> {
+    @InterceptorIgnore(tenantLine = "true")
+    IPage<InscriptionDTO> findPageList(@Param(Constants.WRAPPER) QueryWrapper<InscriptionDTO> queryWrapper, Page<InscriptionDTO> page);
+    @InterceptorIgnore(tenantLine = "true")
+    InscriptionDTO findById(@Param("id") String id);
+    @InterceptorIgnore(tenantLine = "true")
+    void updateInfoById(@Param("inscription") Inscription inscription);
+}

+ 80 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/mapper/xml/InscriptionMapper.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.business.inscription.mapper.InscriptionMapper">
+
+    <select id="findPageList" resultType="com.jeeplus.business.inscription.service.dto.InscriptionDTO">
+        select
+            a.id,
+            a.create_by_id,
+            su.name as createName,
+            a.create_time,
+            so.name as officeName,
+            a.project_id,
+            pr.name as projectName,
+            art1.ID_ as task_id,
+            a.process_definition_id,
+            a.proc_ins_id,
+            a.status
+        from
+            jy_inscription a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        left join sys_office so on su.office_id = so.id and so.del_flag = '0'
+        LEFT JOIN act_ru_task art1 ON a.proc_ins_id = art1.PROC_INST_ID_
+        left join jy_project_record pr on a.project_id = pr.id
+        ${ew.customSqlSegment}
+        ORDER BY a.update_time DESC
+    </select>
+
+    <select id="findById" resultType="com.jeeplus.business.inscription.service.dto.InscriptionDTO">
+        select
+            a.id,
+            a.create_by_id,
+            su.name as createName,
+            a.create_time,
+            so.name as officeName,
+            a.project_id,
+            pr.name as projectName,
+            art1.ID_ as task_id,
+            a.process_definition_id,
+            a.proc_ins_id,
+            a.status,
+            a.normal_page,
+            a.color_page,
+            a.bookbinding_num,
+            a.other_num,
+            a.content,
+            su1.name as minister,
+            su2.name as examiner,
+            su3.name as approver
+        from
+            jy_inscription a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        left join sys_user su1 on a.minister = su1.id and su.del_flag = '0'
+        left join sys_user su2 on a.examiner = su2.id and su.del_flag = '0'
+        left join sys_user su3 on a.approver = su3.id and su.del_flag = '0'
+        left join sys_office so on su.office_id = so.id and so.del_flag = '0'
+        LEFT JOIN act_ru_task art1 ON a.proc_ins_id = art1.PROC_INST_ID_
+        left join jy_project_record pr on a.project_id = pr.id
+        where a.id=#{id}
+    </select>
+
+    <update id="updateInfoById">
+        update
+            jy_inscription
+        set
+            update_by_id =#{inscription.updateById},
+            update_time = #{inscription.updateTime},
+            normal_page = #{inscription.normalPage},
+            color_page = #{inscription.colorPage},
+            bookbinding_num = #{inscription.bookbindingNum},
+            other_num = #{inscription.otherNum},
+            content = #{inscription.content},
+            project_id = #{inscription.projectId}
+        where
+            id = #{inscription.id}
+    </update>
+
+
+</mapper>

+ 530 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/service/InscriptionService.java

@@ -0,0 +1,530 @@
+package com.jeeplus.business.inscription.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.business.goOut.mapper.GoOutMapper;
+import com.jeeplus.business.inscription.domain.Inscription;
+import com.jeeplus.business.inscription.mapper.InscriptionMapper;
+import com.jeeplus.business.inscription.service.dto.InscriptionDTO;
+import com.jeeplus.business.project.domain.JyProject;
+import com.jeeplus.business.project.mapper.JyProjectMapper;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.flowable.feign.IFlowableApi;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.utils.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
+import org.springframework.beans.BeanUtils;
+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 org.springframework.web.bind.annotation.RequestBody;
+
+import javax.annotation.Resource;
+import javax.swing.text.Document;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+@Service
+public class InscriptionService {
+
+    @Resource
+    private InscriptionMapper inscriptionMapper;
+
+    @Resource
+    private GoOutMapper goOutMapper;
+
+    @Resource
+    private JyProjectMapper jyProjectMapper;
+
+    @Autowired
+    private IFlowableApi flowTaskService;
+
+    @Value("${config.accessory.aliyun.endpoint}")
+    private String endpoint;
+
+    @Value("${config.accessory.aliyun.accessKeyId}")
+    private String accessKeyId;
+
+    @Value("${config.accessory.aliyun.accessKeySecret}")
+    private String accessKeySecret;
+
+    @Value("${config.accessory.aliyun.bucketName}")
+    private String bucketName;
+
+
+    /**
+     * 文印申请列表
+     * @param inscriptionDTO
+     * @param page
+     * @return
+     */
+    public IPage<InscriptionDTO> findPageList(InscriptionDTO inscriptionDTO, Page<InscriptionDTO> page) throws Exception {
+        QueryWrapper<InscriptionDTO> queryWrapper = QueryWrapperGenerator.buildQueryCondition(inscriptionDTO, InscriptionDTO.class);
+        queryWrapper.eq("a.del_flag",0);
+        //关联项目
+        if (StringUtils.isNotBlank(inscriptionDTO.getProjectName())){
+            queryWrapper.like("pr.name",inscriptionDTO.getProjectName());
+        }
+        //申请人
+        if (StringUtils.isNotBlank(inscriptionDTO.getCreateById())){
+            queryWrapper.eq("a.create_by_id",inscriptionDTO.getCreateById());
+        }
+        //申请人部门
+        if (StringUtils.isNotBlank(inscriptionDTO.getOfficeId())){
+            queryWrapper.eq("so.id",inscriptionDTO.getOfficeId());
+        }
+        //申请时间
+        if (inscriptionDTO.getCreateDates() != null && inscriptionDTO.getCreateDates().length > 0) {
+            queryWrapper.between("a.create_time", inscriptionDTO.getCreateDates()[0], inscriptionDTO.getCreateDates()[1]);
+        }
+
+        IPage<InscriptionDTO> iPage=inscriptionMapper.findPageList(queryWrapper,page);
+        return iPage;
+    }
+
+    /**
+     * 获取附件总页数
+     * @param
+     * @return
+     */
+    public Integer getPageTotal( InscriptionDTO inscriptionDTO) throws IOException {
+        Integer total=0;
+        String path="D:/localpath/";
+        File dir = new File(path);
+        if (!dir.exists()) {
+            boolean result = dir.mkdirs();  // 使用 mkdirs,不仅可以创建最后一层目录,还会创建所有父目录。
+
+            if (result) {
+                System.out.println("文件夹创建成功!");
+            } else {
+                System.out.println("文件夹创建失败!");
+            }
+        } else {
+            System.out.println("文件夹已存在!");
+        }
+
+        String aliyunUrl = "http://cdn.gangwaninfo.com";
+        String aliDownloadUrl = "http://oss.gangwaninfo.com";
+
+        for (WorkAttachmentInfo info : inscriptionDTO.getFiles()) {
+            String deleteFile = null;
+            try {
+                String file = aliyunUrl + info.getUrl();
+
+                file = file.replace("amp;","");
+                String fileName = file.substring(file.lastIndexOf("/") + 1, file.length());
+                String cons = "";
+                if (file.contains(aliyunUrl)){
+                    cons = aliyunUrl;
+                }else if (file.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")){
+                    cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+                }else {
+                    cons = aliDownloadUrl;
+                }
+                String ossKey = file.split(cons+"/")[1];
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).downByStreamSaveLocal(ossKey,fileName,path+fileName);
+                //将下载下来的文件转换为file文件
+                File srcFile = new File(path+fileName);
+                deleteFile = path+fileName;
+                //截取文件后缀名
+                String substring = srcFile.getName().substring(srcFile.getName().lastIndexOf(".")+1, srcFile.getName().length());
+    //            //判断附件类型是doc,pdf,xls格式
+    //            //word文件
+                if (substring.equals("doc") || substring.equals("docx")){
+                    //读取文件信息
+                    FileInputStream inputStream = new FileInputStream(srcFile);
+                    XWPFDocument xwpfDocument = new XWPFDocument(inputStream);
+                    total+=xwpfDocument.getProperties().getExtendedProperties().getUnderlyingProperties().getPages();
+                    xwpfDocument.close();
+                }
+                //excel文件
+                if (substring.equals("xls") || substring.equals("xlsx")){
+                    Workbook sheets = WorkbookFactory.create(new FileInputStream(srcFile));
+                    int numberOfSheets = sheets.getNumberOfSheets();
+                    total+=numberOfSheets;
+                }
+                //pdf文件
+                if (substring.equals("pdf")){
+                    PDDocument load = PDDocument.load(srcFile);
+                    int numberOfPages = load.getNumberOfPages();
+                    total+=numberOfPages;
+                }
+            }catch (Exception e){
+
+            }finally {
+                if(StringUtils.isNotBlank(path)){
+                    //根据路径创建文件对象
+                    File file = new File(path);
+                    //路径是个文件且不为空时删除文件
+                    if(file.isFile()&&file.exists()){
+                        file.delete();
+                    }
+                }
+            }
+
+        }
+        return total;
+
+
+    }
+
+    /**
+     * 新增或修改
+     * @param inscriptionDTO
+     * @return
+     */
+    public String save(InscriptionDTO inscriptionDTO) {
+        if (StringUtils.isNotBlank(inscriptionDTO.getId())){
+            return update(inscriptionDTO);
+        }
+        return add(inscriptionDTO);
+    }
+
+    private String update(InscriptionDTO inscriptionDTO) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        Inscription inscription = new Inscription();
+        for (JyProject jyProject : inscriptionDTO.getProjectList()) {
+            inscription.setProjectId(jyProject.getProjectId());
+        }
+        BeanUtils.copyProperties(inscriptionDTO,inscription);
+        inscription.setUpdateById(userDTO.getId());
+        inscription.setUpdateTime(new Date());
+        inscriptionMapper.updateById(inscription);
+        //修改附件
+        List<WorkAttachmentInfo> files = inscriptionDTO.getFiles();
+        updateFiles(files, userDTO, inscriptionDTO.getId());
+        return inscriptionDTO.getId();
+    }
+
+    /**
+     * 修改附件信息
+     * @param list 待修改的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {
+        int j = 1;
+        String names = new String();
+        //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
+        for (WorkAttachmentInfo dto : list) {
+            names = names + "," +dto.getUrl();
+        }
+        //查询保存的附件信息
+        List<WorkAttachmentInfo> infoList = goOutMapper.findList(id);
+        if (CollectionUtil.isNotEmpty(infoList)) {
+            for (WorkAttachmentInfo i : infoList) {
+                if (!names.contains(i.getUrl())) {
+                    SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteById(i.getId());
+                }
+            }
+        }
+        //保存信息
+        for (WorkAttachmentInfo dto : list) {
+            //判断是否存在
+            Integer isExit = goOutMapper.findIsExit(id, dto.getName());
+            if (isExit == 0) {
+                WorkAttachmentInfo i = new WorkAttachmentInfo();
+                //包含了url、size、name
+                i.setId(UUID.randomUUID().toString().replace("-", ""));
+//                i.getCreateBy().setId(userDTO.getId());
+                i.setCreateTime(new Date());
+//                i.getUpdateBy().setId(userDTO.getId());
+                i.setUpdateTime(new Date());
+                i.setDelFlag(0);
+                i.setUrl(dto.getUrl());
+                //文件类型处理
+                List<String> strings = Arrays.asList(dto.getName().split("\\."));
+                if (CollectionUtil.isNotEmpty(strings)) {
+                    i.setType(strings.get(1));
+                }
+                i.setAttachmentId(id);
+                i.setAttachmentName(dto.getName());
+                i.setAttachmentFlag("inscription");
+                i.setFileSize(dto.getSize());
+                i.setSort(j);
+                Map<String,String> map = new HashMap<>();
+                String workAttachment = JSON.toJSONString((i));
+                String userDTOInfo = JSON.toJSONString((userDTO));
+                map.put("workAttachment",workAttachment);
+                map.put("userDTO",userDTOInfo);
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+                j++;
+            }
+        }
+    }
+
+    private String add(InscriptionDTO inscriptionDTO) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        Inscription inscription = new Inscription();
+        for (JyProject jyProject : inscriptionDTO.getProjectList()) {
+            inscription.setProjectId(jyProject.getProjectId());
+        }
+        //id
+        String id = UUID.randomUUID().toString().replace("-", "");
+
+        inscription.setId(id);
+        inscription.setCreateById(userDTO.getId());
+        inscription.setCreateTime(new Date());
+        inscription.setUpdateById(userDTO.getId());
+        inscription.setUpdateTime(new Date());
+        inscription.setNormalPage(inscriptionDTO.getNormalPage());//黑白页数量
+        inscription.setColorPage(inscriptionDTO.getColorPage()); //彩页数量
+        inscription.setBookbindingNum(inscriptionDTO.getBookbindingNum()); //装订数量
+        inscription.setOtherNum(inscriptionDTO.getOtherNum()); //其他
+        inscription.setContent(inscriptionDTO.getContent()); //文印内容
+        inscription.setStatus(inscriptionDTO.getStatus());
+        inscriptionMapper.insert(inscription);
+        //保存附件
+        List<WorkAttachmentInfo> files = inscriptionDTO.getFiles();
+        if (CollectionUtil.isNotEmpty(files)) {
+            saveFiles(files, userDTO, id);
+        }
+        return id;
+
+    }
+
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentInfo dto : list) {
+            WorkAttachmentInfo i = new WorkAttachmentInfo();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateTime(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateTime(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getName().split("\\."));
+            if (CollectionUtil.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getName());
+            i.setAttachmentFlag("inscription");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+            Map<String,String> map = new HashMap<>();
+            String workAttachment = JSON.toJSONString((i));
+            String userDTOInfo = JSON.toJSONString((userDTO));
+            map.put("workAttachment",workAttachment);
+            map.put("userDTO",userDTOInfo);
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+            j++;
+        }
+    }
+
+    /**
+     * 根据id查找文印信息
+     * @param id
+     * @return
+     */
+    public InscriptionDTO findById(String id) {
+        InscriptionDTO inscriptionDTO = new InscriptionDTO();
+        InscriptionDTO dto=inscriptionMapper.findById(id);
+        BeanUtils.copyProperties(dto,inscriptionDTO);
+        if (ObjectUtil.isNotEmpty(dto)){
+            ArrayList<JyProject> projects = new ArrayList<>();
+            //查询项目信息
+            if (StringUtils.isNotBlank(dto.getProjectId())){
+                JyProject jyProject=jyProjectMapper.getById(dto.getProjectId());
+                projects.add(jyProject);
+                inscriptionDTO.setProjectList(projects);
+            }
+        }
+        // 查询附件信息
+        List<WorkAttachmentInfo> files = goOutMapper.findDtos(id);
+        if (CollectionUtils.isNotEmpty(files)) {
+            for (WorkAttachmentInfo i : files) {
+                i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+            }
+            inscriptionDTO.setFiles(files);
+        }
+
+        //用于管理员修改彩页数量时做的计算
+        inscriptionDTO.setPageTotal(dto.getNormalPage()+dto.getColorPage());
+
+        return inscriptionDTO;
+    }
+
+    /**
+     * 根据id修改状态
+     * @param inscriptionDTO
+     */
+    public void updateStatusById(InscriptionDTO inscriptionDTO) {
+        Inscription inscription = new Inscription();
+        inscription.setStatus(inscriptionDTO.getStatus());
+        inscription.setId(inscriptionDTO.getId());
+        inscription.setMinister(inscriptionDTO.getMinister());//部长
+        inscription.setApprover(inscriptionDTO.getApprover());//批准人
+        inscription.setExaminer(inscriptionDTO.getExaminer());//核准人
+        inscriptionMapper.updateById(inscription);
+    }
+
+    /**
+     * 根据id进行删除
+     * @param id
+     * @return
+     */
+    public String deleteById(String id) {
+        inscriptionMapper.deleteById(id);
+        return "操作成功";
+    }
+
+    /**
+     * 下载文印申请单
+     * @param inscription
+     * @return
+     */
+    public Map getAuditInfoMap(Inscription inscription) throws ParseException {
+        Map data = new HashMap();
+        InscriptionDTO inscriptionDTO = findById(inscription.getId());
+        //申请部门
+        if (StringUtils.isNotBlank(inscriptionDTO.getOfficeName())){
+            data.put("officeName",inscriptionDTO.getOfficeName());
+        }else {
+            data.put("officeName","");
+        }
+        //申请人
+        if (StringUtils.isNotBlank(inscriptionDTO.getCreateName())){
+            data.put("createName",inscriptionDTO.getCreateName());
+        }else {
+            data.put("createName","");
+        }
+        //申请时间
+        if (ObjectUtils.isNotEmpty(inscriptionDTO.getCreateTime())){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String format = simpleDateFormat.format(inscriptionDTO.getCreateTime());
+            Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(format );
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(date);
+            String year = String.valueOf(ca.get(Calendar.YEAR));
+            String month = String.valueOf(ca.get(Calendar.MONTH)+1);
+            String day = String.valueOf(ca.get(Calendar.DAY_OF_MONTH));
+            data.put("year",year);
+            data.put("month",month);
+            data.put("day",day);
+        }else {
+            data.put("year","");
+            data.put("month","");
+            data.put("day","");
+        }
+        //文印内容
+        if (StringUtils.isNotBlank(inscriptionDTO.getContent())){
+            data.put("content",inscriptionDTO.getContent());
+        }else {
+            data.put("content","");
+        }
+        //黑白页数量
+        if (ObjectUtils.isNotEmpty(inscriptionDTO.getNormalPage())){
+            data.put("normalPage",inscriptionDTO.getNormalPage());
+        }else {
+            data.put("normalPage","");
+        }
+        //彩页数量
+        if (ObjectUtils.isNotEmpty(inscriptionDTO.getColorPage())){
+            data.put("colorPage",inscriptionDTO.getColorPage());
+        }else {
+            data.put("colorPage","");
+        }
+        //装订数量
+        if (ObjectUtils.isNotEmpty(inscriptionDTO.getBookbindingNum())){
+            data.put("bookbindingNum",inscriptionDTO.getBookbindingNum());
+        }else {
+            data.put("bookbindingNum","");
+        }
+        //其他数量
+        if (ObjectUtils.isNotEmpty(inscriptionDTO.getOtherNum())){
+            data.put("otherNum",inscriptionDTO.getOtherNum());
+        }else {
+            data.put("otherNum","");
+        }
+        //部长
+        if (StringUtils.isNotBlank(inscriptionDTO.getMinister())){
+            data.put("minister",inscriptionDTO.getMinister());
+        }else {
+            data.put("minister","");
+        }
+        //核准人
+        if (StringUtils.isNotBlank(inscriptionDTO.getExaminer())){
+            data.put("examiner",inscriptionDTO.getExaminer());
+        }else {
+            data.put("examiner","");
+        }
+        //批准人
+        if (StringUtils.isNotBlank(inscriptionDTO.getApprover())){
+            data.put("approver",inscriptionDTO.getApprover());
+        }else {
+            data.put("approver","");
+        }
+        return data;
+
+    }
+
+    /**
+     * 管理员修改
+     * @param inscriptionDTO
+     */
+    public void adminEditForm(InscriptionDTO inscriptionDTO) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        Inscription inscription = new Inscription();
+        for (JyProject jyProject : inscriptionDTO.getProjectList()) {
+            inscription.setProjectId(jyProject.getProjectId());
+        }
+        inscription.setUpdateById(userDTO.getId());
+        inscription.setUpdateTime(new Date());
+        inscription.setNormalPage(inscriptionDTO.getNormalPage());//黑白页数量
+        inscription.setColorPage(inscriptionDTO.getColorPage()); //彩页数量
+        inscription.setBookbindingNum(inscriptionDTO.getBookbindingNum()); //装订数量
+        inscription.setOtherNum(inscriptionDTO.getOtherNum()); //其他
+        inscription.setContent(inscriptionDTO.getContent()); //文印内容
+        inscription.setId(inscriptionDTO.getId());
+        inscriptionMapper.updateInfoById(inscription);
+        //修改申请附件
+        List<WorkAttachmentInfo> files = inscriptionDTO.getFiles();
+        updateFiles(files, userDTO, inscriptionDTO.getId());
+    }
+}

+ 80 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/inscription/service/dto/InscriptionDTO.java

@@ -0,0 +1,80 @@
+package com.jeeplus.business.inscription.service.dto;
+
+import com.jeeplus.business.project.domain.JyProject;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InscriptionDTO extends BaseEntity {
+
+    /**
+     * 关联项目
+     */
+    private String projectId;
+    private String projectName;
+    private List<JyProject> projectList;
+
+    /**
+     * 黑白页数量
+     */
+    private Integer normalPage;
+
+    /**
+     * 彩页数量
+     */
+    private Integer colorPage;
+
+    /**
+     * 装订数量
+     */
+    private Integer bookbindingNum;
+
+    /**
+     * 其他
+     */
+    private Integer otherNum;
+
+    /**
+     * 文印内容
+     */
+    private String content;
+
+    /**
+     * 部长
+     */
+    private String minister;
+
+    /**
+     * 核准人
+     */
+    private String examiner;
+
+    //批准人
+    private String approver;
+
+    //流程
+    private String procInsId;
+    private String processDefinitionId;
+    private String taskId;
+
+    //状态
+    private String status;
+
+    //申请人部门
+    private String officeId;
+    private String officeName;
+    private String createName;
+
+    //申请时间
+    private String[] createDates;
+
+    private List<WorkAttachmentInfo> files;
+
+    //总页数
+    private Integer pageTotal;
+
+
+}

+ 971 - 0
jeeplus-modules/jeeplus-business/src/main/resources/freemarker/文印申请单.ftl

@@ -0,0 +1,971 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument
+        xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+        xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
+        xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:o="urn:schemas-microsoft-com:office:office"
+        xmlns:v="urn:schemas-microsoft-com:vml"
+        xmlns:w10="urn:schemas-microsoft-com:office:word"
+        xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
+        xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
+        xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"
+        xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
+        xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
+    <w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>
+    <o:DocumentProperties>
+        <o:Author>AAA</o:Author>
+        <o:LastAuthor>AAA</o:LastAuthor>
+        <o:Revision>2</o:Revision>
+        <o:TotalTime>0</o:TotalTime>
+        <o:Created>2023-12-04T12:07:00Z</o:Created>
+        <o:LastSaved>2023-12-04T12:07:00Z</o:LastSaved>
+        <o:Pages>1</o:Pages>
+        <o:Words>24</o:Words>
+        <o:Characters>138</o:Characters>
+        <o:Lines>1</o:Lines>
+        <o:Paragraphs>1</o:Paragraphs>
+        <o:CharactersWithSpaces>161</o:CharactersWithSpaces>
+        <o:Version>14</o:Version>
+    </o:DocumentProperties>
+    <o:CustomDocumentProperties>
+        <o:KSOProductBuildVer dt:dt="string">2052-12.1.0.15990</o:KSOProductBuildVer>
+        <o:ICV dt:dt="string">C7DB9F5DC9D8432EBA19B51677A9453E_12</o:ICV>
+    </o:CustomDocumentProperties>
+    <w:fonts>
+        <w:defaultFonts w:ascii="Calibri" w:fareast="宋体" w:h-ansi="Calibri" w:cs="Times New Roman"/>
+        <w:font w:name="Times New Roman">
+            <w:panose-1 w:val="02020603050405020304"/>
+            <w:charset w:val="00"/>
+            <w:family w:val="Roman"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="宋体">
+            <w:altName w:val="SimSun"/>
+            <w:panose-1 w:val="02010600030101010101"/>
+            <w:charset w:val="86"/>
+            <w:family w:val="auto"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="00000203" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="Cambria Math">
+            <w:panose-1 w:val="02040503050406030204"/>
+            <w:charset w:val="01"/>
+            <w:family w:val="Roman"/>
+            <w:notTrueType/>
+            <w:pitch w:val="variable"/>
+        </w:font>
+        <w:font w:name="Calibri">
+            <w:panose-1 w:val="020F0502020204030204"/>
+            <w:charset w:val="00"/>
+            <w:family w:val="Swiss"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="E4002EFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="@宋体">
+            <w:panose-1 w:val="02010600030101010101"/>
+            <w:charset w:val="86"/>
+            <w:family w:val="auto"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="00000203" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
+        </w:font>
+    </w:fonts>
+    <w:styles>
+        <w:versionOfBuiltInStylenames w:val="7"/>
+        <w:latentStyles w:defLockedState="off" w:latentStyleCount="267">
+            <w:lsdException w:name="Normal"/>
+            <w:lsdException w:name="heading 1"/>
+            <w:lsdException w:name="heading 2"/>
+            <w:lsdException w:name="heading 3"/>
+            <w:lsdException w:name="heading 4"/>
+            <w:lsdException w:name="heading 5"/>
+            <w:lsdException w:name="heading 6"/>
+            <w:lsdException w:name="heading 7"/>
+            <w:lsdException w:name="heading 8"/>
+            <w:lsdException w:name="heading 9"/>
+            <w:lsdException w:name="toc 1"/>
+            <w:lsdException w:name="toc 2"/>
+            <w:lsdException w:name="toc 3"/>
+            <w:lsdException w:name="toc 4"/>
+            <w:lsdException w:name="toc 5"/>
+            <w:lsdException w:name="toc 6"/>
+            <w:lsdException w:name="toc 7"/>
+            <w:lsdException w:name="toc 8"/>
+            <w:lsdException w:name="toc 9"/>
+            <w:lsdException w:name="caption"/>
+            <w:lsdException w:name="Title"/>
+            <w:lsdException w:name="Default Paragraph Font"/>
+            <w:lsdException w:name="Subtitle"/>
+            <w:lsdException w:name="Strong"/>
+            <w:lsdException w:name="Emphasis"/>
+            <w:lsdException w:name="Normal Table"/>
+            <w:lsdException w:name="Table Grid"/>
+            <w:lsdException w:name="Light Shading"/>
+            <w:lsdException w:name="Light List"/>
+            <w:lsdException w:name="Light Grid"/>
+            <w:lsdException w:name="Medium Shading 1"/>
+            <w:lsdException w:name="Medium Shading 2"/>
+            <w:lsdException w:name="Medium List 1"/>
+            <w:lsdException w:name="Medium List 2"/>
+            <w:lsdException w:name="Medium Grid 1"/>
+            <w:lsdException w:name="Medium Grid 2"/>
+            <w:lsdException w:name="Medium Grid 3"/>
+            <w:lsdException w:name="Dark List"/>
+            <w:lsdException w:name="Colorful Shading"/>
+            <w:lsdException w:name="Colorful List"/>
+            <w:lsdException w:name="Colorful Grid"/>
+            <w:lsdException w:name="Light Shading Accent 1"/>
+            <w:lsdException w:name="Light List Accent 1"/>
+            <w:lsdException w:name="Light Grid Accent 1"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 1"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 1"/>
+            <w:lsdException w:name="Medium List 1 Accent 1"/>
+            <w:lsdException w:name="Medium List 2 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 1"/>
+            <w:lsdException w:name="Dark List Accent 1"/>
+            <w:lsdException w:name="Colorful Shading Accent 1"/>
+            <w:lsdException w:name="Colorful List Accent 1"/>
+            <w:lsdException w:name="Colorful Grid Accent 1"/>
+            <w:lsdException w:name="Light Shading Accent 2"/>
+            <w:lsdException w:name="Light List Accent 2"/>
+            <w:lsdException w:name="Light Grid Accent 2"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 2"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 2"/>
+            <w:lsdException w:name="Medium List 1 Accent 2"/>
+            <w:lsdException w:name="Medium List 2 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 2"/>
+            <w:lsdException w:name="Dark List Accent 2"/>
+            <w:lsdException w:name="Colorful Shading Accent 2"/>
+            <w:lsdException w:name="Colorful List Accent 2"/>
+            <w:lsdException w:name="Colorful Grid Accent 2"/>
+            <w:lsdException w:name="Light Shading Accent 3"/>
+            <w:lsdException w:name="Light List Accent 3"/>
+            <w:lsdException w:name="Light Grid Accent 3"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 3"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 3"/>
+            <w:lsdException w:name="Medium List 1 Accent 3"/>
+            <w:lsdException w:name="Medium List 2 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 3"/>
+            <w:lsdException w:name="Dark List Accent 3"/>
+            <w:lsdException w:name="Colorful Shading Accent 3"/>
+            <w:lsdException w:name="Colorful List Accent 3"/>
+            <w:lsdException w:name="Colorful Grid Accent 3"/>
+            <w:lsdException w:name="Light Shading Accent 4"/>
+            <w:lsdException w:name="Light List Accent 4"/>
+            <w:lsdException w:name="Light Grid Accent 4"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 4"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 4"/>
+            <w:lsdException w:name="Medium List 1 Accent 4"/>
+            <w:lsdException w:name="Medium List 2 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 4"/>
+            <w:lsdException w:name="Dark List Accent 4"/>
+            <w:lsdException w:name="Colorful Shading Accent 4"/>
+            <w:lsdException w:name="Colorful List Accent 4"/>
+            <w:lsdException w:name="Colorful Grid Accent 4"/>
+            <w:lsdException w:name="Light Shading Accent 5"/>
+            <w:lsdException w:name="Light List Accent 5"/>
+            <w:lsdException w:name="Light Grid Accent 5"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 5"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 5"/>
+            <w:lsdException w:name="Medium List 1 Accent 5"/>
+            <w:lsdException w:name="Medium List 2 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 5"/>
+            <w:lsdException w:name="Dark List Accent 5"/>
+            <w:lsdException w:name="Colorful Shading Accent 5"/>
+            <w:lsdException w:name="Colorful List Accent 5"/>
+            <w:lsdException w:name="Colorful Grid Accent 5"/>
+            <w:lsdException w:name="Light Shading Accent 6"/>
+            <w:lsdException w:name="Light List Accent 6"/>
+            <w:lsdException w:name="Light Grid Accent 6"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 6"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 6"/>
+            <w:lsdException w:name="Medium List 1 Accent 6"/>
+            <w:lsdException w:name="Medium List 2 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 6"/>
+            <w:lsdException w:name="Dark List Accent 6"/>
+            <w:lsdException w:name="Colorful Shading Accent 6"/>
+            <w:lsdException w:name="Colorful List Accent 6"/>
+            <w:lsdException w:name="Colorful Grid Accent 6"/>
+            <w:lsdException w:name="Subtle Emphasis"/>
+            <w:lsdException w:name="Intense Emphasis"/>
+            <w:lsdException w:name="Subtle Reference"/>
+            <w:lsdException w:name="Intense Reference"/>
+            <w:lsdException w:name="Book Title"/>
+            <w:lsdException w:name="Bibliography"/>
+            <w:lsdException w:name="TOC Heading"/>
+        </w:latentStyles>
+        <w:style w:type="paragraph" w:default="on" w:styleId="a">
+            <w:name w:val="Normal"/>
+            <wx:uiName wx:val="正文"/>
+            <w:pPr>
+                <w:widowControl w:val="off"/>
+                <w:jc w:val="both"/>
+            </w:pPr>
+            <w:rPr>
+                <wx:font wx:val="Calibri"/>
+                <w:kern w:val="2"/>
+                <w:sz w:val="21"/>
+                <w:sz-cs w:val="22"/>
+                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
+            </w:rPr>
+        </w:style>
+        <w:style w:type="character" w:default="on" w:styleId="a0">
+            <w:name w:val="Default Paragraph Font"/>
+            <wx:uiName wx:val="默认段落字体"/>
+        </w:style>
+        <w:style w:type="table" w:default="on" w:styleId="a1">
+            <w:name w:val="Normal Table"/>
+            <wx:uiName wx:val="普通表格"/>
+            <w:rPr>
+                <wx:font wx:val="Calibri"/>
+                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
+            </w:rPr>
+            <w:tblPr>
+                <w:tblInd w:w="0" w:type="dxa"/>
+                <w:tblCellMar>
+                    <w:top w:w="0" w:type="dxa"/>
+                    <w:left w:w="108" w:type="dxa"/>
+                    <w:bottom w:w="0" w:type="dxa"/>
+                    <w:right w:w="108" w:type="dxa"/>
+                </w:tblCellMar>
+            </w:tblPr>
+        </w:style>
+        <w:style w:type="list" w:default="on" w:styleId="a2">
+            <w:name w:val="No List"/>
+            <wx:uiName wx:val="无列表"/>
+        </w:style>
+        <w:style w:type="table" w:styleId="a3">
+            <w:name w:val="Table Grid"/>
+            <wx:uiName wx:val="网格型"/>
+            <w:basedOn w:val="a1"/>
+            <w:rPr>
+                <wx:font wx:val="Calibri"/>
+            </w:rPr>
+            <w:tblPr>
+                <w:tblBorders>
+                    <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                </w:tblBorders>
+            </w:tblPr>
+        </w:style>
+    </w:styles>
+    <w:shapeDefaults>
+        <o:shapedefaults v:ext="edit" spidmax="1026"/>
+        <o:shapelayout v:ext="edit">
+            <o:idmap v:ext="edit" data="1"/>
+        </o:shapelayout>
+    </w:shapeDefaults>
+    <w:docPr>
+        <w:view w:val="print"/>
+        <w:zoom w:percent="120"/>
+        <w:dontDisplayPageBoundaries/>
+        <w:doNotEmbedSystemFonts/>
+        <w:bordersDontSurroundHeader/>
+        <w:bordersDontSurroundFooter/>
+        <w:defaultTabStop w:val="420"/>
+        <w:drawingGridVerticalSpacing w:val="156"/>
+        <w:displayHorizontalDrawingGridEvery w:val="0"/>
+        <w:displayVerticalDrawingGridEvery w:val="2"/>
+        <w:punctuationKerning/>
+        <w:characterSpacingControl w:val="CompressPunctuation"/>
+        <w:validateAgainstSchema/>
+        <w:saveInvalidXML w:val="off"/>
+        <w:ignoreMixedContent w:val="off"/>
+        <w:alwaysShowPlaceholderText w:val="off"/>
+        <w:compat>
+            <w:spaceForUL/>
+            <w:balanceSingleByteDoubleByteWidth/>
+            <w:doNotLeaveBackslashAlone/>
+            <w:ulTrailSpace/>
+            <w:doNotExpandShiftReturn/>
+            <w:adjustLineHeightInTable/>
+            <w:breakWrappedTables/>
+            <w:snapToGridInCell/>
+            <w:wrapTextWithPunct/>
+            <w:useAsianBreakRules/>
+            <w:dontGrowAutofit/>
+            <w:useFELayout/>
+        </w:compat>
+        <w:docVars>
+            <w:docVar w:name="commondata" w:val="eyJoZGlkIjoiOTM5OGQwZmFiZjM3NTBhNDVlYmU3Y2ZmOWI4NjVjYjEifQ=="/>
+        </w:docVars>
+        <wsp:rsids>
+            <wsp:rsidRoot wsp:val="005E38CF"/>
+            <wsp:rsid wsp:val="00034C19"/>
+            <wsp:rsid wsp:val="00491C20"/>
+            <wsp:rsid wsp:val="0057483D"/>
+            <wsp:rsid wsp:val="005E38CF"/>
+            <wsp:rsid wsp:val="00721CDD"/>
+            <wsp:rsid wsp:val="00D45DB0"/>
+            <wsp:rsid wsp:val="3BC00543"/>
+            <wsp:rsid wsp:val="4A6C18B2"/>
+        </wsp:rsids>
+    </w:docPr>
+    <w:body>
+        <wx:sect>
+            <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20">
+                <w:pPr>
+                    <w:jc w:val="center"/>
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:sz w:val="44"/>
+                        <w:sz-cs w:val="44"/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:sz w:val="44"/>
+                        <w:sz-cs w:val="44"/>
+                    </w:rPr>
+                    <w:t>文印申请单</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00721CDD">
+                <w:pPr>
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:sz w:val="11"/>
+                        <w:sz-cs w:val="11"/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20">
+                <w:pPr>
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>申请部门</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>:</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>${officeName}</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>         </w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>申请人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>:</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>${createName}</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>     </w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:tab/>
+                    <w:t>${year}</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>年</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>${month}</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>月</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>${day}</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00491C20">
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                    <w:t>日</w:t>
+                </w:r>
+            </w:p>
+            <w:tbl>
+                <w:tblPr>
+                    <w:tblW w:w="8532" w:type="dxa"/>
+                    <w:tblBorders>
+                        <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                        <w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                        <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                        <w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                        <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                        <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
+                    </w:tblBorders>
+                    <w:tblLook w:val="04A0"/>
+                </w:tblPr>
+                <w:tblGrid>
+                    <w:gridCol w:w="2383"/>
+                    <w:gridCol w:w="1240"/>
+                    <w:gridCol w:w="1240"/>
+                    <w:gridCol w:w="1240"/>
+                    <w:gridCol w:w="1240"/>
+                    <w:gridCol w:w="1189"/>
+                </w:tblGrid>
+                <w:tr wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidTr="00491C20">
+                    <w:trPr>
+                        <w:trHeight w:val="1615"/>
+                    </w:trPr>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="2383" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>文印内容</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="6149" w:type="dxa"/>
+                            <w:gridSpan w:val="5"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>${content}</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                </w:tr>
+                <w:tr wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidTr="00491C20">
+                    <w:trPr>
+                        <w:trHeight w:val="1641"/>
+                    </w:trPr>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="2383" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>文印类别及数量</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="6149" w:type="dxa"/>
+                            <w:gridSpan w:val="5"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20">
+                            <w:pPr>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>A4</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>黑白打印</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t>   ${normalPage}  </w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>张</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>;A4</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>彩色打印</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t>  ${colorPage}   </w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>张</w:t>
+                            </w:r>
+                        </w:p>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20">
+                            <w:pPr>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>装订</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t>       ${bookbindingNum}   </w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t></w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>份</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>;</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>其他</w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t>     ${otherNum}     </w:t>
+                            </w:r>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                    <w:u w:val="single"/>
+                                </w:rPr>
+                                <w:t></w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                </w:tr>
+                <w:tr wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidTr="00491C20">
+                    <w:trPr>
+                        <w:trHeight w:val="1615"/>
+                    </w:trPr>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="2383" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>部长</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="1240" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>${minister}</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="1240" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>核准人</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="1240" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>${examiner}</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="1240" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>批准人</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                    <w:tc>
+                        <w:tcPr>
+                            <w:tcW w:w="1187" w:type="dxa"/>
+                            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
+                            <w:vAlign w:val="center"/>
+                        </w:tcPr>
+                        <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00491C20" wsp:rsidP="00491C20">
+                            <w:pPr>
+                                <w:jc w:val="center"/>
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                            </w:pPr>
+                            <w:r wsp:rsidRPr="00491C20">
+                                <w:rPr>
+                                    <w:rFonts w:ascii="宋体" w:h-ansi="宋体" w:hint="fareast"/>
+                                    <wx:font wx:val="宋体"/>
+                                    <w:sz w:val="28"/>
+                                    <w:sz-cs w:val="28"/>
+                                </w:rPr>
+                                <w:t>${approver}</w:t>
+                            </w:r>
+                        </w:p>
+                    </w:tc>
+                </w:tr>
+            </w:tbl>
+            <w:p wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20" wsp:rsidRDefault="00721CDD">
+                <w:pPr>
+                    <w:rPr>
+                        <w:rFonts w:ascii="宋体" w:h-ansi="宋体"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:sz w:val="28"/>
+                        <w:sz-cs w:val="28"/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:sectPr wsp:rsidR="00721CDD" wsp:rsidRPr="00491C20">
+                <w:pgSz w:w="11906" w:h="16838"/>
+                <w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
+                <w:cols w:space="425"/>
+                <w:docGrid w:type="lines" w:line-pitch="312"/>
+            </w:sectPr>
+        </wx:sect>
+    </w:body>
+</w:wordDocument>