Ver Fonte

仅能查看自己租户下的专题库 2022/9/21

lwhhszx há 3 anos atrás
pai
commit
ff7e9a8d50

+ 16 - 0
PAS/pom.xml

@@ -141,6 +141,22 @@
 <!--            <version>15.3</version>-->
 <!--        </dependency>-->
 <!--      jdk17后需要此依赖-->
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-scratchpad</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 28 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PoiVO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PoiVO {
+    private Pg title;
+    private List<Pg> pgs;
+    @Data
+    public static class Pg {
+        private String type;
+        private Integer alignment;
+        private String text;
+        private Boolean bold;
+        private String color;
+        private Integer fontSize;
+        private Boolean addCarriageReturn;
+        private String fontFamily;
+        private Integer id;
+        private String imgUrl;
+        private Integer height;
+        private Integer weight;
+    }
+
+
+}

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectVO.java

@@ -20,7 +20,7 @@ public class ProjectVO extends BaseVO {
     private List<Department> departmentList;
     private List<Personnel> personnelList;
     private Integer departmentId;
-
+    private List<Integer> personnelIds;
     @Data
     public static class Sort {
         private String order;

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/utils/auth/AuthAop.java

@@ -88,7 +88,7 @@ public class AuthAop {
         else if (jsonArray.size() == 1 && jsonArray.get(0).equals("0")) {
             return joinPoint.proceed();
         }
-        if (jsonArray.size() > 0) {   // 如果查询结果的size大于0证明有限制逻辑
+     if (jsonArray.size() > 0) {   // 如果查询结果的size大于0证明有限制逻辑
             RequestBody reBodySource = new FormBody.Builder()
                     .add("tableName", "local")
                     .build();

+ 18 - 1
PAS/src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -2,11 +2,13 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.PoiVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.auth.checkAuth;
 import cn.cslg.pas.domain.SystemDict;
 import cn.cslg.pas.domain.SystemDictAssociate;
 import cn.cslg.pas.service.AreaService;
+import cn.cslg.pas.service.PoiService;
 import cn.cslg.pas.service.SystemDictAssociateService;
 import cn.cslg.pas.service.SystemDictService;
 import cn.hutool.core.collection.CollUtil;
@@ -22,6 +24,7 @@ import cn.hutool.poi.excel.ExcelWriter;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.HttpHeaders;
@@ -45,11 +48,11 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CommonController {
 
-    private final CacheUtils cacheUtils;
     private final AreaService areaService;
     private final SystemDictService systemDictService;
     private final SystemDictAssociateService systemDictAssociateService;
     private final FileUtils fileUtils;
+    private final PoiService poiService;
 
     @GetMapping("area")
     @Operation(summary = "获取区域")
@@ -209,4 +212,18 @@ public class CommonController {
         FileUtil.del(saveTempPath);
         return Response.success(saveUrl);
     }
+
+    @GetMapping("downloadPoi")
+    @Operation(summary = "下载word文件")
+    public  void  downloadPoi( @RequestBody PoiVO poiVO) throws IOException, InvalidFormatException {
+
+        poiService.writeFile(poiVO);
+    }
+
+    @GetMapping("readPoi")
+    @Operation(summary = "回显word文件")
+    public  PoiVO  readPoi() throws IOException {
+
+     return    poiService.readWordFile();
+    }
 }

+ 2 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectController.java

@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -45,7 +46,7 @@ public class ProjectController {
     @PostMapping("list")
     @checkAuth(FunId = "/workspace/project/check")
     @Operation(summary = "专题库列表")
-    public String getPageList(@RequestBody ProjectVO params) {
+    public String getPageList(@RequestBody ProjectVO params) throws IOException {
         return Response.success(projectService.getPageList(params));
     }
 

+ 2 - 3
PAS/src/main/java/cn/cslg/pas/controller/ProjectUserController.java

@@ -35,7 +35,6 @@ public class ProjectUserController {
         return Response.success(projectUserService.getPageList(params));
     }
 
-    @Permission()
     @checkAuth(FunId = "/workspace/project/assign_participants/add")
     @PostMapping("add")
     @Operation(summary = "新增成员")
@@ -43,7 +42,7 @@ public class ProjectUserController {
         return projectUserService.add(projectUser);
     }
 
-    @Permission()
+
     @checkAuth(FunId = "/workspace/project/assign_participants/modify")
     @PostMapping("edit")
     @Operation(summary = "编辑成员")
@@ -51,7 +50,7 @@ public class ProjectUserController {
         return projectUserService.edit(projectUser);
     }
 
-    @Permission()
+
     @checkAuth(FunId = "/workspace/project/assign_participants/remove")
     @PostMapping("delete")
     @Operation(summary = "删除成员")

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/controller/ReportTemplateController.java

@@ -30,7 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
 public class ReportTemplateController {
     private final ReportTemplateService reportTemplateService;
     
-    @checkAuth(FunId = "/workspace/folder/analyticSystem/templateManager/check")
+//    @checkAuth(FunId = "/workspace/folder/analyticSystem/templateManager/check")
     @Permission(roles = {1})
     @GetMapping("list")
     @Operation(summary = "模板列表")

+ 379 - 0
PAS/src/main/java/cn/cslg/pas/service/PoiService.java

@@ -0,0 +1,379 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.vo.PoiVO;
+import cn.cslg.pas.domain.PatentPledge;
+import cn.cslg.pas.mapper.PatentPledgeMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.apache.poi.hwpf.extractor.WordExtractor;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.Units;
+import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
+import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
+import org.apache.poi.xwpf.usermodel.*;
+import org.apache.xmlbeans.impl.xb.xmlschema.SpaceAttribute;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import sun.misc.BASE64Decoder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 专利信息质押质权人表 服务类
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-24
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PoiService extends ServiceImpl<PatentPledgeMapper, PatentPledge> {
+    public PoiVO readWordFile() throws IOException {
+        PoiVO poiVO =new PoiVO();
+        InputStream is = new FileInputStream("C:\\\\BaiduNetdiskDownload\\\\生成\\\\first.docx");
+        XWPFDocument doc = new XWPFDocument(is);
+    List<XWPFParagraph> ps=doc.getParagraphs();
+        PoiVO.Pg title = new PoiVO.Pg();
+        List<PoiVO.Pg> pgs =new ArrayList<>();
+        title.setAlignment(ps.get(0).getFontAlignment());
+        XWPFRun r = ps.get(0).getRuns().get(0);
+      title.setColor(r.getColor());
+      title.setText(r.getText(0));
+      title.setFontSize(r.getFontSize());
+
+for(int i=1 ;i<ps.size();i++)
+{ PoiVO.Pg pg = new PoiVO.Pg();
+    if(ps.get(i).getStyle().equals("Word")) {
+        XWPFRun rh = ps.get(i).getRuns().get(0);
+        pg.setFontSize(rh.getFontSize());
+        pg.setFontFamily(rh.getFontFamily());
+        pg.setText(rh.getText(0));
+        pg.setColor(rh.getColor());
+        pg.setAlignment(ps.get(i).getFontAlignment());
+        pg.setType(ps.get(i).getStyle());
+        pgs.add(pg);
+    }
+    else if(ps.get(i).getStyle().equals("picture")) {
+        XWPFRun rh = ps.get(i).getRuns().get(0);
+        rh.getPictureText();
+    }
+
+}
+poiVO.setPgs(pgs);
+poiVO.setTitle(title);
+        return poiVO;
+    }
+
+    public  void writeFile(PoiVO poiVO) throws IOException, InvalidFormatException {
+        XWPFDocument doc = new XWPFDocument();// 创建Word文件
+        PoiVO.Pg title =poiVO.getTitle();
+        // 标题
+        XWPFParagraph p = doc.createParagraph();// 新建段落
+        p.setFontAlignment(title.getAlignment());// 设置段落的对齐方式
+        XWPFRun r = p.createRun();//创建标题
+        r.setText(title.getText());
+        r.setBold(title.getBold());//设置为粗体
+        r.setColor(title.getColor());//设置颜色
+        r.setFontSize(title.getFontSize());//设置字体大小
+        if(title.getAddCarriageReturn()){
+        r.addCarriageReturn();//回车换行
+             }
+        List<PoiVO.Pg> pgs = poiVO.getPgs();
+
+        CTSdtBlock ctSdtBlock =doc.getDocument().getBody().addNewSdt();
+           this.CustomTOC(ctSdtBlock);
+  for(int i=0;i<pgs.size();i++){
+   if(pgs.get(i).getType().equals("word")) {
+       XWPFParagraph tm = doc.createParagraph();
+       tm.setStyle("word");
+       XWPFRun rh = tm.createRun();
+       rh.setFontSize(pgs.get(i).getFontSize());
+       rh.setFontFamily(pgs.get(i).getFontFamily());
+       rh.setText(pgs.get(i).getText());
+       rh.setColor(pgs.get(i).getColor());
+       tm.setFontAlignment(pgs.get(i).getAlignment());
+       rh.setFontFamily(pgs.get(i).getFontFamily());
+       if (pgs.get(i).getAddCarriageReturn()) {
+           rh.addCarriageReturn();//回车换行
+       }
+   }
+   else if(pgs.get(i).getType().equals("picture")) {
+       XWPFParagraph pImg = doc.createParagraph();
+       pImg.setStyle("picture");
+       pImg.setFontAlignment(pgs.get(i).getAlignment());
+       XWPFRun rImg = pImg.createRun();//创建标题
+       rImg.addCarriageReturn();//回车换行
+       String imgData = pgs.get(i).getImgUrl();
+       // 转为数据流
+       InputStream stream = new FileInputStream(imgData);
+       // 向段落中插入图片
+       rImg.addPicture(stream, Document.PICTURE_TYPE_PNG, pgs.get(i).getImgUrl(), Units.toEMU(pgs.get(i).getWeight()), Units.toEMU(pgs.get(i).getHeight()));
+
+   }
+   else if(pgs.get(i).getType().equals("table")) {
+  String org =pgs.get(i).getText();
+  int rows =0;
+  int cols =0;
+String[] row =org.split("\\|\\|");
+ rows=row.length;
+ for(int t=0;t<row.length;t++){
+  String[] tem =   row[t].split(",");
+     cols= cols> tem.length ? cols: tem.length;
+ }
+
+       XWPFTable table1 = doc.createTable(rows, cols);
+ table1.setStyleID("");
+       table1.setWidthType(TableWidthType.AUTO);
+       for(int t=0;t<row.length;t++){
+           String[] tem =   row[t].split(",");
+           XWPFTableRow row1 = table1.getRow(t);
+           for(int q=0;q<tem.length;q++){
+               row1.getCell(q).setText(tem[q]);
+           }
+
+       }
+       doc.setTable(0, table1);
+
+   }
+   else if(pgs.get(i).getType().equals("Heading1")){
+       XWPFParagraph Paragraph = doc.createParagraph();
+       CTBookmark ctBookmark1 = Paragraph.getCTP().addNewBookmarkStart();//开始书签
+       ctBookmark1.setId(BigInteger.valueOf(i));//开始书签和结束书签通过ID关联
+       ctBookmark1.setName("书签"+ i);//书签名称
+       Paragraph.setStyle(pgs.get(i).getType());
+       XWPFRun run1 = Paragraph.createRun();
+       run1.setText(pgs.get(i).getText());
+       run1.setColor(pgs.get(i).getColor());
+       run1.setFontSize(pgs.get(i).getFontSize());
+       run1.setBold(true);
+       Paragraph.getCTP().addNewBookmarkEnd().setId(BigInteger.valueOf(i));
+       this.addItem2TOC(doc,ctSdtBlock);
+
+   }
+  }
+
+
+        FileOutputStream out = new FileOutputStream("C:\\\\BaiduNetdiskDownload\\\\生成\\\\first.docx");
+        CTSectPr sectPr = doc.getDocument().getBody().addNewSectPr();
+        XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(doc, sectPr);
+        //添加页脚
+        CTP ctpFooter = CTP.Factory.newInstance();
+        CTR ctrFooter = ctpFooter.addNewR();
+        CTText ctFooter = ctrFooter.addNewT();
+        String footerText = "ctpFooter";
+        ctFooter.setStringValue(footerText);
+        XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, doc);
+        XWPFParagraph[] parsFooter = new XWPFParagraph[1];
+        parsFooter[0] = footerParagraph;
+        policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);
+        doc.write(out);
+        out.close();
+
+        System.out.println("Process Completed Successfully");
+
+    }
+
+
+    public void addItem2TOC( XWPFDocument doc ,CTSdtBlock block) {
+        List<XWPFParagraph> paragraphs = doc.getParagraphs();
+        for (XWPFParagraph par : paragraphs) {
+            String parStyle = par.getStyle();
+            if (parStyle != null && parStyle.startsWith("Heading")) {
+                List<CTBookmark> bookmarkList=par.getCTP().getBookmarkStartList();
+                try {
+                    int level = Integer.parseInt(parStyle.substring("Heading".length()));
+
+                        //添加标题
+                       this.addRow(level, par.getText(), 2,  bookmarkList.get(0).getName(),block);
+                } catch (NumberFormatException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+
+    //生成页脚
+    public void createFooter(XWPFDocument doc){
+        /*
+         * 生成页脚段落
+         * 给段落设置宽度为占满一行
+         * */
+        CTSectPr sectPr=doc.getDocument().getBody().addNewSectPr();
+        XWPFHeaderFooterPolicy headerFooterPolicy=new XWPFHeaderFooterPolicy(doc,sectPr);
+        try {
+            XWPFFooter footer=headerFooterPolicy.createFooter(STHdrFtr.DEFAULT);
+            XWPFParagraph paragraph = footer.getParagraphArray(0);
+            paragraph.setAlignment(ParagraphAlignment.LEFT);
+            paragraph.setVerticalAlignment(TextAlignment.CENTER);
+            paragraph.setBorderTop(Borders.THICK);
+            CTTabStop tabStop = paragraph.getCTP().getPPr().addNewTabs().addNewTab();
+            tabStop.setVal(STTabJc.RIGHT);
+            int twipsPerInch =  1440;
+            tabStop.setPos(BigInteger.valueOf(6 * twipsPerInch));
+            /*
+             * 给段落创建元素
+             * 设置元素字面为公司地址+公司电话
+             * */
+            XWPFRun run = paragraph.createRun();
+            run.addTab();
+            String s=run.getFontFamily();
+            /*
+             * 生成页码
+             * 页码右对齐
+             * */
+            run = paragraph.createRun();
+            run.setText("第");
+            run = paragraph.createRun();
+            CTFldChar fldChar = run.getCTR().addNewFldChar();
+            fldChar.setFldCharType(STFldCharType.Enum.forString("begin"));
+            run = paragraph.createRun();
+            CTText ctText = run.getCTR().addNewInstrText();
+            ctText.setStringValue("PAGE  \\* MERGEFORMAT");
+            ctText.setSpace(SpaceAttribute.Space.Enum.forString("preserve"));
+            fldChar = run.getCTR().addNewFldChar();
+            fldChar.setFldCharType(STFldCharType.Enum.forString("end"));
+
+            run = paragraph.createRun();
+            run.setText("页/共");
+
+            run = paragraph.createRun();
+            fldChar = run.getCTR().addNewFldChar();
+            fldChar.setFldCharType(STFldCharType.Enum.forString("begin"));
+
+            run = paragraph.createRun();
+            ctText = run.getCTR().addNewInstrText();
+            ctText.setStringValue("NUMPAGES  \\* MERGEFORMAT ");
+            ctText.setSpace(SpaceAttribute.Space.Enum.forString("preserve"));
+
+            fldChar = run.getCTR().addNewFldChar();
+            fldChar.setFldCharType(STFldCharType.Enum.forString("end"));
+
+            run = paragraph.createRun();
+            run.setText("页");;
+        } catch (Exception e) {
+
+        }
+    }
+
+    // 目录添加行
+    public void addRow(int level, String title, int page, String bookmarkRef, CTSdtBlock block) {
+        CTSdtContentBlock contentBlock = block.getSdtContent();
+        CTP p = contentBlock.addNewP();
+        p.setRsidR("00EF7E24".getBytes(LocaleUtil.CHARSET_1252));
+        p.setRsidRDefault("00EF7E24".getBytes(LocaleUtil.CHARSET_1252));
+        CTPPr pPr = p.addNewPPr();
+        pPr.addNewPStyle().setVal("TOC" + level);
+        CTTabs tabs = pPr.addNewTabs();//Set of Custom Tab Stops自定义制表符集合
+        CTTabStop tab = tabs.addNewTab();//Custom Tab Stop自定义制表符
+        tab.setVal(STTabJc.RIGHT);
+        tab.setLeader(STTabTlc.DOT);
+        tab.setPos(new BigInteger("9100"));//默认为8290,因为调整过页边距,所有需要调整,手动设置找出最佳值
+        pPr.addNewRPr().addNewNoProof();//不检查语法
+        CTR run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        run.addNewT().setStringValue(title);//添加标题文字
+        //设置标题字体
+        CTRPr pRpr = run.getRPr();
+        CTFonts fonts = pRpr.isSetRFonts() ? pRpr.getRFonts() : pRpr.addNewRFonts();
+        fonts.setAscii("Times New Roman");
+        fonts.setEastAsia("楷体");
+        fonts.setHAnsi("楷体");
+        // 设置标题字体大小
+        CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
+        sz.setVal(new BigInteger("21"));
+        CTHpsMeasure szCs = pRpr.isSetSzCs() ? pRpr.getSzCs() : pRpr.addNewSzCs();
+        szCs.setVal(new BigInteger("21"));
+        //添加制表符
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        run.addNewTab();
+        //添加页码左括号
+        p.addNewR().addNewT().setStringValue("(");
+        //STFldCharType.BEGIN标识与结尾处STFldCharType.END相对应
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        run.addNewFldChar().setFldCharType(STFldCharType.BEGIN);//Field Character Type
+        // pageref run
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        CTText text = run.addNewInstrText();//Field Code 添加域代码文本控件
+        text.setSpace(SpaceAttribute.Space.PRESERVE);
+        // bookmark reference
+        //源码的域名为" PAGEREF _Toc","\h"含义为在目录内建立目录项与页码的超链接
+        text.setStringValue(" PAGEREF "+bookmarkRef + " \\h ");
+        p.addNewR().addNewRPr().addNewNoProof();
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        run.addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
+        // page number run
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        run.addNewT().setStringValue(Integer.toString(page));
+        run = p.addNewR();
+        run.addNewRPr().addNewNoProof();
+        //STFldCharType.END标识与上面STFldCharType.BEGIN相对应
+        run.addNewFldChar().setFldCharType(STFldCharType.END);
+        //添加页码右括号
+        p.addNewR().addNewT().setStringValue(")");
+        //设置行间距
+        CTSpacing pSpacing = pPr.getSpacing() != null ? pPr.getSpacing(): pPr.addNewSpacing();
+        pSpacing.setLineRule(STLineSpacingRule.AUTO);//行间距类型:多倍
+        pSpacing.setLine(new BigInteger("360"));//此处1.5倍行间距
+    }
+
+    //添加目录
+    public void CustomTOC(CTSdtBlock block) {
+        CTSdtPr sdtPr = block.addNewSdtPr();
+        CTDecimalNumber id = sdtPr.addNewId();
+        id.setVal(new BigInteger("4844945"));
+        sdtPr.addNewDocPartObj().addNewDocPartGallery().setVal("Table of contents");
+        CTSdtEndPr sdtEndPr = block.addNewSdtEndPr();
+        CTRPr rPr = sdtEndPr.addNewRPr();
+        CTFonts fonts = rPr.addNewRFonts();
+        fonts.setAsciiTheme(STTheme.MINOR_H_ANSI);
+        fonts.setEastAsiaTheme(STTheme.MINOR_H_ANSI);
+        fonts.setHAnsiTheme(STTheme.MINOR_H_ANSI);
+        fonts.setCstheme(STTheme.MINOR_BIDI);
+        rPr.addNewB().setVal(STOnOff.OFF);
+        rPr.addNewBCs().setVal(STOnOff.OFF);
+        rPr.addNewColor().setVal("auto");
+        rPr.addNewSz().setVal(new BigInteger("24"));
+        rPr.addNewSzCs().setVal(new BigInteger("24"));
+        CTSdtContentBlock content = block.addNewSdtContent();
+        CTP p = content.addNewP();
+        p.setRsidR("00EF7E24".getBytes(LocaleUtil.CHARSET_1252));
+        p.setRsidRDefault("00EF7E24".getBytes(LocaleUtil.CHARSET_1252));
+        p.addNewPPr().addNewPStyle().setVal("TOCHeading");
+        p.addNewR().addNewT().setStringValue("目     录");//源码中为"Table of contents"
+        //设置段落对齐方式,即将“目录”二字居中
+        CTPPr pr = p.getPPr();
+        CTJc jc = pr.isSetJc() ? pr.getJc() : pr.addNewJc();
+        STJc.Enum en = STJc.Enum.forInt(ParagraphAlignment.CENTER.getValue());
+        jc.setVal(en);
+        //"目录"二字的字体
+        CTRPr pRpr = p.getRArray(0).addNewRPr();
+        fonts = pRpr.isSetRFonts() ? pRpr.getRFonts() : pRpr.addNewRFonts();
+        fonts.setAscii("Times New Roman");
+        fonts.setEastAsia("华文中宋");
+        fonts.setHAnsi("华文中宋");
+        //"目录"二字加粗
+        CTOnOff bold = pRpr.isSetB() ? pRpr.getB() : pRpr.addNewB();
+        bold.setVal(STOnOff.TRUE);
+        // 设置“目录”二字字体大小为24号
+        CTHpsMeasure sz = pRpr.isSetSz() ? pRpr.getSz() : pRpr.addNewSz();
+        sz.setVal(new BigInteger("36"));
+    }
+
+}

+ 41 - 1
PAS/src/main/java/cn/cslg/pas/service/ProjectService.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.core.exception.CustomException;
+import cn.cslg.pas.common.model.DataSource;
 import cn.cslg.pas.common.model.PersonnelVO;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.model.params.*;
@@ -33,9 +34,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
+import okhttp3.FormBody;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
 import org.apache.poi.ss.usermodel.PictureData;
 import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -105,6 +111,8 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     private final UserService userService;
     private final ApiUtils apiUtils;
     private final LoginUtils loginUtils;
+    @Value("${authorUrl}")
+    private String url;
 
     public Project getProjectByName(String name) {
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
@@ -113,7 +121,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         return this.getOne(queryWrapper);
     }
 
-    public IPage<Project> getPageList(ProjectVO params) {
+    public IPage<Project> getPageList(ProjectVO params) throws IOException {
         Map<String, Object> m = new HashMap<>();
         m.put("token", LoginUtils.getToken());
         m.put("loginId", loginUtils.getId());
@@ -130,6 +138,38 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         }
         params.setProIds(projectIds);
         params.setCreateBy(loginUtils.getId());
+
+        //判断登录人员是否含有系统管理员角色
+         Boolean flag=false;
+        List<PersonnelVO.PerRole> roles =user.getRList();
+       for(PersonnelVO.PerRole perRole : roles){
+           if(perRole.getRoleId()==1)
+           { flag=true;
+               break;
+           }
+       }
+       //如果没有的话,只能查询自己租户人员创建的专题库
+   if(!flag){
+       RequestBody reBodySource = new FormBody.Builder()
+               .add("tenantId", user.getTenantId().toString())
+               .build();
+       //建立连接
+       OkHttpClient okHttpClientSou = new OkHttpClient();
+       Request requestSou = new Request.Builder()
+               .url(url + "/permission/api/personnel/getPersonnelIds")
+               .post(reBodySource)
+               .addHeader("Cookie", LoginUtils.getToken())
+               .build();
+       //获得请求返回
+       String resSource = Objects.requireNonNull(okHttpClientSou.newCall(requestSou).execute().body()).string();
+
+       JSONArray jsonArray1 = JSON.parseArray(resSource);
+       // 获得字典
+       List<Integer> personnelIds = jsonArray1;
+       params.setPersonnelIds(personnelIds);
+   }
+
+
         SecurityUtils.startDataScope(m);
         IPage<Project> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
         List<Project> dataList = pageList.getRecords();

+ 1 - 1
PAS/src/main/resources/application-dev.yml

@@ -2,7 +2,7 @@ spring:
   redis:
     host: 47.101.137.223
     port: 6379
-    database: 8
+    database: 9
     password: Xx0GWxdWQJxx6Swe
     timeout: 1000
   datasource:

+ 7 - 0
PAS/src/main/resources/mapper/ProjectMapper.xml

@@ -30,6 +30,13 @@
             <if test="params.departmentId != '' and params.departmentId != null">
                 and a.department_id = #{params.departmentId}
             </if>
+            <if test="params.personnelIds != null and params.personnelIds.size() != 0">
+             and  a.creat_id in
+                <foreach  item="item" collection="params.personnelIds" index="index"  open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+
+            </if>
             <if test="params.myself == true">
                 and ((a.id in
                 <foreach item="item" index="index" collection="params.proIds" open="(" separator="," close=")">