合并分支 'dev_third_stage' 到 'master'
Dev third stage 查看合并请求 laws-nio/laws-weilai!166
This commit is contained in:
@@ -1089,3 +1089,15 @@ INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_ti
|
|||||||
-- 增加 中国台湾 数据字典数据 2022-09-06
|
-- 增加 中国台湾 数据字典数据 2022-09-06
|
||||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1567085557701386242', '1493782108399820801', '中国台湾', '96d49ba5797d4791906ce2baee87d4bc', '中国台湾', 1, 1, 'admin', '2022-09-06 17:41:27', 'admin', '2022-09-06 17:41:35', 1, NULL, NULL, '0', 'Tai Wan China');
|
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1567085557701386242', '1493782108399820801', '中国台湾', '96d49ba5797d4791906ce2baee87d4bc', '中国台湾', 1, 1, 'admin', '2022-09-06 17:41:27', 'admin', '2022-09-06 17:41:35', 1, NULL, NULL, '0', 'Tai Wan China');
|
||||||
|
|
||||||
|
-- 问题知识库-评论回复表。 2022-09-07
|
||||||
|
CREATE TABLE `laws_weilai`.`problem_knowledge_base_reply` (
|
||||||
|
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||||
|
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
|
||||||
|
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
|
||||||
|
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属部门',
|
||||||
|
`comment_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '问题知识库-评论表id',
|
||||||
|
`reply_content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回复内容',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题知识库-评论回复表' ROW_FORMAT = Dynamic;
|
||||||
|
|||||||
+4
-4
@@ -1434,8 +1434,8 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
|||||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||||
String content = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter the link to handle it.";
|
String content = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter the link to handle it.";
|
||||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " please enter " + href + " to handle it.";
|
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||||
String msgTitle = "You have a homo parameter task to complete";
|
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||||
|
|
||||||
// 发送系统消息
|
// 发送系统消息
|
||||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||||
@@ -1563,7 +1563,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
|||||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||||
String msgTitle = "You have a homo parameter task to complete";
|
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||||
|
|
||||||
// 发送系统消息
|
// 发送系统消息
|
||||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||||
@@ -1697,7 +1697,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
|||||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||||
String msgTitle = "You have a homo parameter task to complete";
|
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||||
|
|
||||||
// 发送系统消息
|
// 发送系统消息
|
||||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||||
|
|||||||
@@ -70,6 +70,11 @@
|
|||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
<artifactId>spring-cloud-openfeign-core</artifactId>
|
<artifactId>spring-cloud-openfeign-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.itextpdf</groupId>
|
||||||
|
<artifactId>itext-asian</artifactId>
|
||||||
|
<version>5.2.0</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.lowagie</groupId>
|
<groupId>com.lowagie</groupId>
|
||||||
<artifactId>itext</artifactId>
|
<artifactId>itext</artifactId>
|
||||||
|
|||||||
+117
-14
@@ -1,26 +1,24 @@
|
|||||||
package com.jero.modules.system.util;
|
package com.jero.modules.system.util;
|
||||||
|
|
||||||
|
import com.itextpdf.text.BaseColor;
|
||||||
|
import com.itextpdf.text.DocumentException;
|
||||||
|
import com.itextpdf.text.Element;
|
||||||
|
import com.itextpdf.text.pdf.*;
|
||||||
import com.spire.pdf.PdfDocument;
|
import com.spire.pdf.PdfDocument;
|
||||||
import com.spire.pdf.PdfPageBase;
|
import com.spire.pdf.PdfPageBase;
|
||||||
import com.spire.pdf.graphics.PdfBrushes;
|
|
||||||
import com.spire.pdf.graphics.PdfFont;
|
import com.spire.pdf.graphics.PdfFont;
|
||||||
import com.spire.pdf.graphics.PdfFontFamily;
|
import com.spire.pdf.graphics.*;
|
||||||
import com.spire.pdf.graphics.PdfStringFormat;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import com.spire.pdf.graphics.PdfTextAlignment;
|
import org.apache.commons.io.IOUtils;
|
||||||
import com.spire.pdf.graphics.PdfTilingBrush;
|
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.geom.Dimension2D;
|
import java.awt.geom.Dimension2D;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
public class PDFUtils {
|
public class PDFUtils {
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
File file = new File("E:\\DeskTop\\动态资料\\加入IEEE会员 - 副本 - 副本.pdf");
|
File file = new File("E:\\DeskTop\\动态资料\\加入IEEE会员 - 副本 - 副本.pdf");
|
||||||
@@ -75,7 +73,7 @@ public class PDFUtils {
|
|||||||
brush.getGraphics().save();
|
brush.getGraphics().save();
|
||||||
brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 1.5, (float) brush.getSize().getHeight() / 3);
|
brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 1.5, (float) brush.getSize().getHeight() / 3);
|
||||||
brush.getGraphics().rotateTransform(-45);
|
brush.getGraphics().rotateTransform(-45);
|
||||||
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 10),
|
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Times_Roman, 10),
|
||||||
PdfBrushes.getViolet(), 0 , 0 , new PdfStringFormat(PdfTextAlignment.Center));
|
PdfBrushes.getViolet(), 0 , 0 , new PdfStringFormat(PdfTextAlignment.Center));
|
||||||
brush.getGraphics().restore();
|
brush.getGraphics().restore();
|
||||||
brush.getGraphics().setTransparency(1);
|
brush.getGraphics().setTransparency(1);
|
||||||
@@ -84,7 +82,7 @@ public class PDFUtils {
|
|||||||
page.getCanvas().drawRectangle(brush, loRect);
|
page.getCanvas().drawRectangle(brush, loRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File PDFWatermark(InputStream in,String uploadpath, String fileName,String waterMark) throws FileNotFoundException {
|
public static File PDFWatermarkInvalid(InputStream in,String uploadpath, String fileName,String waterMark) throws FileNotFoundException {
|
||||||
//创建PdfDocument类的对象
|
//创建PdfDocument类的对象
|
||||||
PdfDocument pdf = new PdfDocument();
|
PdfDocument pdf = new PdfDocument();
|
||||||
//加载测试文档
|
//加载测试文档
|
||||||
@@ -203,4 +201,109 @@ public class PDFUtils {
|
|||||||
// }
|
// }
|
||||||
// return buffer;
|
// return buffer;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
public static File PDFWatermark(InputStream in,String uploadpath, String fileName,String waterMark) {
|
||||||
|
|
||||||
|
String newFilePath = "";
|
||||||
|
// 待加水印的文件
|
||||||
|
PdfReader reader = null;
|
||||||
|
PdfStamper stamper = null;
|
||||||
|
FileOutputStream os = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
byte[] byes = IOUtils.toByteArray(in);
|
||||||
|
|
||||||
|
//生成临时文件 , 读取完删除
|
||||||
|
String path = uploadpath + File.separator + fileName;
|
||||||
|
newFilePath = path.replace(fileName, "transformation" + fileName);
|
||||||
|
reader = new PdfReader(byes);
|
||||||
|
|
||||||
|
// 加完水印的文件
|
||||||
|
os = new FileOutputStream(newFilePath);
|
||||||
|
stamper = new PdfStamper(reader, os);
|
||||||
|
|
||||||
|
int total = reader.getNumberOfPages() + 1;
|
||||||
|
BaseFont basefont = BaseFont.createFont("/static/times.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
|
||||||
|
// 方法二:这里的字体设置比较关键,这个设置是支持中文的写法
|
||||||
|
// BaseFont basefont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体
|
||||||
|
|
||||||
|
PdfContentByte under;
|
||||||
|
com.itextpdf.text.Rectangle pageRect = null;
|
||||||
|
|
||||||
|
//水印倾斜角度(0-360)
|
||||||
|
int angle = 45;
|
||||||
|
//数值越大每页竖向水印越少
|
||||||
|
int heightDensity = 10;
|
||||||
|
//数值越大每页横向水印越少
|
||||||
|
int widthDensity = 1;
|
||||||
|
int textH = 0;
|
||||||
|
int textW = 0;
|
||||||
|
JLabel label = new JLabel();
|
||||||
|
FontMetrics metrics;
|
||||||
|
label.setText(waterMark);
|
||||||
|
metrics = label.getFontMetrics(label.getFont());
|
||||||
|
//字符串的高, 只和字体有关
|
||||||
|
textH = metrics.getHeight();
|
||||||
|
//字符串的宽
|
||||||
|
textW = metrics.stringWidth(label.getText());
|
||||||
|
|
||||||
|
// 循环对每页插入水印
|
||||||
|
for (int i = 1; i < total; i++) {
|
||||||
|
pageRect = stamper.getReader().getPageSizeWithRotation(i);
|
||||||
|
|
||||||
|
// 获得PDF最顶层
|
||||||
|
under = stamper.getOverContent(i);
|
||||||
|
under.saveState();
|
||||||
|
// set Transparency
|
||||||
|
PdfGState gs = new PdfGState();
|
||||||
|
// 设置透明度
|
||||||
|
gs.setFillOpacity(0.5f);
|
||||||
|
under.setGState(gs);
|
||||||
|
under.restoreState();
|
||||||
|
under.beginText();
|
||||||
|
under.setFontAndSize(basefont, pageRect.getHeight() / 100);
|
||||||
|
under.setColorFill(BaseColor.PINK);
|
||||||
|
|
||||||
|
// 水印文字成45度角倾斜
|
||||||
|
for (int height = textH; height < pageRect.getHeight() * 3; height = height + textH * heightDensity) {
|
||||||
|
for (int width = textW; width < pageRect.getWidth() * 1.5 + textW; width = width + textW * widthDensity) {
|
||||||
|
// rotation:倾斜角度
|
||||||
|
under.showTextAligned(Element.ALIGN_CENTER, waterMark, width - textW, height - textH, angle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加水印文字
|
||||||
|
under.endText();
|
||||||
|
under.setLineWidth(1f);
|
||||||
|
under.stroke();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error(e.getMessage());
|
||||||
|
|
||||||
|
} catch (DocumentException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error(e.getMessage());
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
stamper.close();
|
||||||
|
if (os != null) {
|
||||||
|
os.close();
|
||||||
|
}
|
||||||
|
if (reader != null) {
|
||||||
|
reader.close();
|
||||||
|
}
|
||||||
|
} catch (DocumentException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error(e.getMessage());
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new File(newFilePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
@@ -167,4 +167,16 @@ public class SarFileCompareItemController extends JeroController<SarFileCompareI
|
|||||||
return super.importExcel(request, response, SarFileCompareItem.class);
|
return super.importExcel(request, response, SarFileCompareItem.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 条款对比高亮
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "文档对比信息条款表-条款对比高亮")
|
||||||
|
@ApiOperation(value="文档对比信息条款表-条款对比高亮", notes="文档对比信息条款表-条款对比高亮")
|
||||||
|
@GetMapping(value = "/clauseComparison")
|
||||||
|
public Result<?> clauseComparison(@RequestParam(name="leftId",required=true) String leftId,
|
||||||
|
@RequestParam(name="rightId",required=true) String rightId) {
|
||||||
|
List<String> res = sarFileCompareItemService.clauseComparison(leftId,rightId);
|
||||||
|
return Result.OK(res);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -1,5 +1,7 @@
|
|||||||
package com.jero.modules.compare.entity;
|
package com.jero.modules.compare.entity;
|
||||||
|
|
||||||
|
import com.jero.modules.system.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -25,7 +27,10 @@ public class SarFileCompareMenuVo extends SarFileCompareMenu {
|
|||||||
this.setLeftOrRight(menu.getLeftOrRight());
|
this.setLeftOrRight(menu.getLeftOrRight());
|
||||||
this.setItemName(menu.getItemName());
|
this.setItemName(menu.getItemName());
|
||||||
this.setKey(menu.getId());
|
this.setKey(menu.getId());
|
||||||
this.setTitle(menu.getName() + menu.getItemName());
|
this.setTitle(menu.getName());
|
||||||
|
if(StringUtils.isNoneBlank(menu.getItemName())){
|
||||||
|
this.setTitle(menu.getName() + menu.getItemName());
|
||||||
|
}
|
||||||
this.setRemarks(menu.getRemarks());
|
this.setRemarks(menu.getRemarks());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -72,4 +72,6 @@ public interface ISarFileCompareItemService extends IService<SarFileCompareItem>
|
|||||||
List<SarFileCompareItem> queryListByInfoId(String infoId);
|
List<SarFileCompareItem> queryListByInfoId(String infoId);
|
||||||
|
|
||||||
Map<String, SarFileCompareItem> queryMapByInfoId(String infoId);
|
Map<String, SarFileCompareItem> queryMapByInfoId(String infoId);
|
||||||
|
|
||||||
|
List<String> clauseComparison(String lid,String rid);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -6,6 +6,7 @@ import com.jero.modules.compare.entity.SarFileCompareItem;
|
|||||||
import com.jero.modules.compare.mapper.SarFileCompareItemMapper;
|
import com.jero.modules.compare.mapper.SarFileCompareItemMapper;
|
||||||
import com.jero.modules.compare.service.ISarFileCompareItemService;
|
import com.jero.modules.compare.service.ISarFileCompareItemService;
|
||||||
import com.jero.modules.compare.utils.CompareConst;
|
import com.jero.modules.compare.utils.CompareConst;
|
||||||
|
import com.jero.modules.compare.utils.DiffUtils;
|
||||||
import com.jero.modules.system.util.StringUtils;
|
import com.jero.modules.system.util.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -122,4 +123,13 @@ public class SarFileCompareItemServiceImpl extends ServiceImpl<SarFileCompareIte
|
|||||||
}
|
}
|
||||||
return resMap;
|
return resMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> clauseComparison(String lid, String rid) {
|
||||||
|
SarFileCompareItem leftItem = this.queryById(lid);
|
||||||
|
SarFileCompareItem rightItem = this.queryById(rid);
|
||||||
|
DiffUtils dmp = new DiffUtils();
|
||||||
|
List<String> htmlDiffStr = dmp.getHtmlDiffStr(leftItem.getItemsText(), rightItem.getItemsText());
|
||||||
|
return htmlDiffStr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2312
File diff suppressed because it is too large
Load Diff
+1
@@ -81,6 +81,7 @@ public class ExtRepoDataServiceImpl extends ServiceImpl<ExtRepoDataMapper, ExtRe
|
|||||||
public void editById(ExtRepoData extRepoData) {
|
public void editById(ExtRepoData extRepoData) {
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
extRepoData.setUpdateTime(now);
|
extRepoData.setUpdateTime(now);
|
||||||
|
extRepoData.setCreateTime(null);
|
||||||
saveOrUpdate(extRepoData);
|
saveOrUpdate(extRepoData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+56
-2
@@ -45,6 +45,9 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -298,10 +301,12 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
|||||||
cell.setCellValue(titleArr[i]);
|
cell.setCellValue(titleArr[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<FileSplitValImgExportDto> allImgList = new ArrayList<>(); // 存储文件数据
|
||||||
|
|
||||||
//设置导出数据
|
//设置导出数据
|
||||||
if(CollectionUtils.isNotEmpty(exportData)) {
|
if(CollectionUtils.isNotEmpty(exportData)) {
|
||||||
List<FileSpiltValTableExportDto> allTableList = new ArrayList<>(); // 存储表格数据
|
List<FileSpiltValTableExportDto> allTableList = new ArrayList<>(); // 存储表格数据
|
||||||
List<FileSplitValImgExportDto> allImgList = new ArrayList<>(); // 存储文件数据
|
|
||||||
SarFileSplitItemsEOPage page = new SarFileSplitItemsEOPage();
|
SarFileSplitItemsEOPage page = new SarFileSplitItemsEOPage();
|
||||||
|
|
||||||
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
|
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
|
||||||
@@ -318,7 +323,11 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
|||||||
List<SarFileSplitItemsValEO> getValList = this.sarFileSplitItemsValEOService.queryByList(valEOPage);
|
List<SarFileSplitItemsValEO> getValList = this.sarFileSplitItemsValEOService.queryByList(valEOPage);
|
||||||
List<FileSplitValExportDto> valContentList = this.fileSplitItemsEOService.combineItemValInfo(getValList,allTableList,allImgList,page); //TODO
|
List<FileSplitValExportDto> valContentList = this.fileSplitItemsEOService.combineItemValInfo(getValList,allTableList,allImgList,page); //TODO
|
||||||
if(CollectionUtils.isNotEmpty(valContentList)){
|
if(CollectionUtils.isNotEmpty(valContentList)){
|
||||||
itemContent = valContentList.get(0).getValContent();
|
String contents = "";
|
||||||
|
for (FileSplitValExportDto fileSplitValExportDto : valContentList) {
|
||||||
|
contents += fileSplitValExportDto.getValContent() + "\n";
|
||||||
|
}
|
||||||
|
itemContent = contents;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,6 +350,12 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
|||||||
fileTemp.delete();
|
fileTemp.delete();
|
||||||
}
|
}
|
||||||
fileTemp.mkdirs();
|
fileTemp.mkdirs();
|
||||||
|
|
||||||
|
//下载图片内容到导出的压缩包中
|
||||||
|
if (allImgList != null && !allImgList.isEmpty()) {
|
||||||
|
downLoadImgList(allImgList,path);
|
||||||
|
}
|
||||||
|
|
||||||
//excel
|
//excel
|
||||||
OutputStream excelOS = new FileOutputStream(path + File.separator + fileName);
|
OutputStream excelOS = new FileOutputStream(path + File.separator + fileName);
|
||||||
workbook.write(excelOS);
|
workbook.write(excelOS);
|
||||||
@@ -434,4 +449,43 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
|||||||
}
|
}
|
||||||
return evaluationMethodsName;
|
return evaluationMethodsName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void downLoadImgList(List<FileSplitValImgExportDto> allImgList, String fileNowPath) {
|
||||||
|
for(FileSplitValImgExportDto imgExportDto : allImgList){
|
||||||
|
String oldPath = imgExportDto.getImgPath();
|
||||||
|
String newPath = fileNowPath + File.separator + imgExportDto.getImgName();
|
||||||
|
if (CosBootUtil.doesObjectExist(oldPath)){
|
||||||
|
try (InputStream in = CosBootUtil.download(oldPath);) {
|
||||||
|
copyFile1(in, newPath);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void copyFile1(InputStream in, String destPath) throws IOException {
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(in);
|
||||||
|
BufferedOutputStream bos =
|
||||||
|
new BufferedOutputStream(Files.newOutputStream(Paths.get(destPath),
|
||||||
|
StandardOpenOption.CREATE,
|
||||||
|
StandardOpenOption.TRUNCATE_EXISTING,
|
||||||
|
StandardOpenOption.WRITE));
|
||||||
|
// 打开输入流
|
||||||
|
// FileInputStream fis = new FileInputStream(srcPath);
|
||||||
|
// 打开输出流
|
||||||
|
// FileOutputStream fos = new FileOutputStream(destPath);
|
||||||
|
// 读取和写入信息
|
||||||
|
byte[] bytes = new byte[1024 * 1024];
|
||||||
|
int len;
|
||||||
|
while ((len = bis.read(bytes)) > 0) {
|
||||||
|
bos.write(bytes, 0, len);
|
||||||
|
}
|
||||||
|
// 关闭流 先开后关 后开先关
|
||||||
|
// 先开后关,先开的输入流,再开的输出流,那么应该先关输出流,再关输入流
|
||||||
|
// 先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先关BufferedInputStream,再关FileInputStream。
|
||||||
|
bos.close(); // 后开先关
|
||||||
|
bis.close(); // 先开后关
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -11,6 +11,7 @@ import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommen
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import com.jero.common.system.base.controller.JeroController;
|
import com.jero.common.system.base.controller.JeroController;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -67,8 +68,8 @@ public class ProblemKnowledgeBaseCommentEOController extends JeroController<Prob
|
|||||||
@AutoLog(value = "问题知识库评论表-列表查询")
|
@AutoLog(value = "问题知识库评论表-列表查询")
|
||||||
@ApiOperation(value="问题知识库评论表-列表查询", notes="问题知识库评论表-列表查询")
|
@ApiOperation(value="问题知识库评论表-列表查询", notes="问题知识库评论表-列表查询")
|
||||||
@GetMapping(value = "/list")
|
@GetMapping(value = "/list")
|
||||||
public Result<List<ProblemKnowledgeBaseCommentEO>> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO,HttpServletRequest req) {
|
public Result<List<ProblemKnowledgeBaseCommentVO>> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req) {
|
||||||
List<ProblemKnowledgeBaseCommentEO> list = problemKnowledgeBaseCommentEOService.queryList(problemKnowledgeBaseCommentEO,req);
|
List<ProblemKnowledgeBaseCommentVO> list = this.problemKnowledgeBaseCommentEOService.getInfoList(problemKnowledgeBaseCommentEO,req);
|
||||||
return Result.OK(list);
|
return Result.OK(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
@@ -2,6 +2,7 @@ package com.jero.modules.problemKnowledgeBase.service;
|
|||||||
|
|
||||||
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -60,4 +61,6 @@ public interface IProblemKnowledgeBaseCommentEOService extends IService<ProblemK
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<ProblemKnowledgeBaseCommentEO> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req);
|
List<ProblemKnowledgeBaseCommentEO> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req);
|
||||||
|
|
||||||
|
List<ProblemKnowledgeBaseCommentVO> getInfoList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req);
|
||||||
}
|
}
|
||||||
|
|||||||
+45
@@ -5,9 +5,20 @@ import com.jero.common.system.query.QueryGenerator;
|
|||||||
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
||||||
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseCommentEOMapper;
|
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseCommentEOMapper;
|
||||||
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommentEOService;
|
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommentEOService;
|
||||||
|
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||||
|
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||||
|
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -24,6 +35,8 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||||
public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseCommentEOMapper, ProblemKnowledgeBaseCommentEO> implements IProblemKnowledgeBaseCommentEOService {
|
public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseCommentEOMapper, ProblemKnowledgeBaseCommentEO> implements IProblemKnowledgeBaseCommentEOService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IProblemKnowledgeBaseReplyEOService problemKnowledgeBaseReplyEOService;
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*
|
*
|
||||||
@@ -96,4 +109,36 @@ public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl<Proble
|
|||||||
List<ProblemKnowledgeBaseCommentEO> result = this.list(queryWrapper);
|
List<ProblemKnowledgeBaseCommentEO> result = this.list(queryWrapper);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ProblemKnowledgeBaseCommentVO> getInfoList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req) {
|
||||||
|
List<ProblemKnowledgeBaseCommentVO> result = new ArrayList<>();
|
||||||
|
List<ProblemKnowledgeBaseCommentEO> problemKnowledgeBaseCommentEOList = this.queryList(problemKnowledgeBaseCommentEO, req);
|
||||||
|
|
||||||
|
if(CollectionUtils.isNotEmpty(problemKnowledgeBaseCommentEOList)){
|
||||||
|
List<String> commentIdList = problemKnowledgeBaseCommentEOList.stream().map(ProblemKnowledgeBaseCommentEO::getId).distinct().collect(Collectors.toList());
|
||||||
|
QueryWrapper<ProblemKnowledgeBaseReplyEO> replyQueryWrapper = new QueryWrapper<>();
|
||||||
|
replyQueryWrapper.lambda().in(ProblemKnowledgeBaseReplyEO::getCommentId,commentIdList);
|
||||||
|
List<ProblemKnowledgeBaseReplyEO> problemKnowledgeBaseReplyEOList = this.problemKnowledgeBaseReplyEOService.list(replyQueryWrapper);
|
||||||
|
|
||||||
|
problemKnowledgeBaseCommentEOList.forEach(commentEO -> {
|
||||||
|
List<ProblemKnowledgeBaseCommentVO> commentVOList = new ArrayList<>();
|
||||||
|
|
||||||
|
problemKnowledgeBaseReplyEOList.forEach(replyEO -> {
|
||||||
|
if(StringUtils.equals(commentEO.getId(),replyEO.getCommentId())){
|
||||||
|
ProblemKnowledgeBaseCommentVO commentVO = new ProblemKnowledgeBaseCommentVO();
|
||||||
|
BeanUtils.copyProperties(replyEO, commentVO);
|
||||||
|
commentVO.setCommentContent(replyEO.getReplyContent());
|
||||||
|
commentVOList.add(commentVO);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ProblemKnowledgeBaseCommentVO commentVO = new ProblemKnowledgeBaseCommentVO();
|
||||||
|
BeanUtils.copyProperties(commentEO, commentVO);
|
||||||
|
commentVO.setProblemKnowledgeBaseCommentVOList(commentVOList);
|
||||||
|
result.add(commentVO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
package com.jero.modules.problemKnowledgeBase.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@ApiModel(value="problem_knowledge_base_comment对象", description="问题知识库评论表")
|
||||||
|
public class ProblemKnowledgeBaseCommentVO implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**主键*/
|
||||||
|
@ApiModelProperty(value = "主键")
|
||||||
|
private java.lang.String id;
|
||||||
|
|
||||||
|
/**创建人*/
|
||||||
|
@ApiModelProperty(value = "创建人")
|
||||||
|
private java.lang.String createBy;
|
||||||
|
|
||||||
|
/**创建日期*/
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "创建日期")
|
||||||
|
private java.util.Date createTime;
|
||||||
|
|
||||||
|
/**更新人*/
|
||||||
|
@ApiModelProperty(value = "更新人")
|
||||||
|
private java.lang.String updateBy;
|
||||||
|
|
||||||
|
/**更新日期*/
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "更新日期")
|
||||||
|
private java.util.Date updateTime;
|
||||||
|
|
||||||
|
/**所属部门*/
|
||||||
|
@ApiModelProperty(value = "所属部门")
|
||||||
|
private java.lang.String sysOrgCode;
|
||||||
|
|
||||||
|
/**问题知识库id*/
|
||||||
|
@ApiModelProperty(value = "问题知识库id")
|
||||||
|
private java.lang.String problemKnowledgeBaseId;
|
||||||
|
|
||||||
|
/**评论内容*/
|
||||||
|
@ApiModelProperty(value = "评论内容")
|
||||||
|
private java.lang.String commentContent;
|
||||||
|
|
||||||
|
/**评论用户id*/
|
||||||
|
@ApiModelProperty(value = "评论用户id")
|
||||||
|
private java.lang.String commentUserId;
|
||||||
|
|
||||||
|
private List<ProblemKnowledgeBaseCommentVO> problemKnowledgeBaseCommentVOList;
|
||||||
|
}
|
||||||
+170
@@ -0,0 +1,170 @@
|
|||||||
|
package com.jero.modules.project.controller;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import com.jero.common.api.vo.Result;
|
||||||
|
import com.jero.common.system.query.QueryGenerator;
|
||||||
|
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||||
|
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import com.jero.common.system.base.controller.JeroController;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 问题知识库-评论回复表
|
||||||
|
* @Author: jero-boot
|
||||||
|
* @Date: 2022-09-07
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Api(tags="问题知识库-评论回复表")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/project/problemKnowledgeBaseReplyEO")
|
||||||
|
@Slf4j
|
||||||
|
public class ProblemKnowledgeBaseReplyEOController extends JeroController<ProblemKnowledgeBaseReplyEO, IProblemKnowledgeBaseReplyEOService> {
|
||||||
|
@Autowired
|
||||||
|
private IProblemKnowledgeBaseReplyEOService problemKnowledgeBaseReplyEOService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页列表查询
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @param pageNo
|
||||||
|
* @param pageSize
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-分页列表查询")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-分页列表查询", notes="问题知识库-评论回复表-分页列表查询")
|
||||||
|
@GetMapping(value = "/page")
|
||||||
|
public Result<?> queryPageList(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO,
|
||||||
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||||
|
HttpServletRequest req) {
|
||||||
|
QueryWrapper<ProblemKnowledgeBaseReplyEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseReplyEO, req.getParameterMap());
|
||||||
|
Page<ProblemKnowledgeBaseReplyEO> page = new Page<ProblemKnowledgeBaseReplyEO>(pageNo, pageSize);
|
||||||
|
IPage<ProblemKnowledgeBaseReplyEO> pageList = problemKnowledgeBaseReplyEOService.page(page, queryWrapper);
|
||||||
|
return Result.OK(pageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-列表查询")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-列表查询", notes="问题知识库-评论回复表-列表查询")
|
||||||
|
@GetMapping(value = "/list")
|
||||||
|
public Result<List<ProblemKnowledgeBaseReplyEO>> queryList() {
|
||||||
|
List<ProblemKnowledgeBaseReplyEO> list = problemKnowledgeBaseReplyEOService.queryList();
|
||||||
|
return Result.OK(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-添加")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-添加", notes="问题知识库-评论回复表-添加")
|
||||||
|
@PostMapping(value = "/add")
|
||||||
|
public Result<?> add(@Validated @RequestBody ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||||
|
problemKnowledgeBaseReplyEOService.add(problemKnowledgeBaseReplyEO);
|
||||||
|
return Result.OK("添加成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-编辑")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-编辑", notes="问题知识库-评论回复表-编辑")
|
||||||
|
@PutMapping(value = "/edit")
|
||||||
|
public Result<?> edit(@Validated @RequestBody ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||||
|
problemKnowledgeBaseReplyEOService.editById(problemKnowledgeBaseReplyEO);
|
||||||
|
return Result.OK("编辑成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id删除
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-通过id删除")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-通过id删除", notes="问题知识库-评论回复表-通过id删除")
|
||||||
|
@DeleteMapping(value = "/delete")
|
||||||
|
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
|
||||||
|
problemKnowledgeBaseReplyEOService.deleteById(id);
|
||||||
|
return Result.OK("删除成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-批量删除")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-批量删除", notes="问题知识库-评论回复表-批量删除")
|
||||||
|
@DeleteMapping(value = "/deleteBatch")
|
||||||
|
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||||
|
this.problemKnowledgeBaseReplyEOService.deleteByIds(Arrays.asList(ids.split(",")));
|
||||||
|
return Result.OK("批量删除成功!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id查询
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "问题知识库-评论回复表-通过id查询")
|
||||||
|
@ApiOperation(value="问题知识库-评论回复表-通过id查询", notes="问题知识库-评论回复表-通过id查询")
|
||||||
|
@GetMapping(value = "/queryById")
|
||||||
|
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
|
||||||
|
ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO = problemKnowledgeBaseReplyEOService.queryById(id);
|
||||||
|
if(problemKnowledgeBaseReplyEO==null) {
|
||||||
|
return Result.error("未找到对应数据");
|
||||||
|
}
|
||||||
|
return Result.OK(problemKnowledgeBaseReplyEO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出excel
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/exportXls")
|
||||||
|
public ModelAndView exportXls(HttpServletRequest request, ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||||
|
return super.exportXls(request, problemKnowledgeBaseReplyEO, ProblemKnowledgeBaseReplyEO.class, "问题知识库-评论回复表");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过excel导入数据
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||||
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
return super.importExcel(request, response, ProblemKnowledgeBaseReplyEO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+74
@@ -0,0 +1,74 @@
|
|||||||
|
package com.jero.modules.project.entity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import com.jero.common.aspect.annotation.Dict;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 问题知识库-评论回复表
|
||||||
|
* @Author: jero-boot
|
||||||
|
* @Date: 2022-09-07
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("problem_knowledge_base_reply")
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@ApiModel(value="problem_knowledge_base_reply对象", description="问题知识库-评论回复表")
|
||||||
|
public class ProblemKnowledgeBaseReplyEO implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**主键*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
@ApiModelProperty(value = "主键")
|
||||||
|
private java.lang.String id;
|
||||||
|
|
||||||
|
/**创建人*/
|
||||||
|
@ApiModelProperty(value = "创建人")
|
||||||
|
private java.lang.String createBy;
|
||||||
|
|
||||||
|
/**创建日期*/
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "创建日期")
|
||||||
|
private java.util.Date createTime;
|
||||||
|
|
||||||
|
/**更新人*/
|
||||||
|
@ApiModelProperty(value = "更新人")
|
||||||
|
private java.lang.String updateBy;
|
||||||
|
|
||||||
|
/**更新日期*/
|
||||||
|
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "更新日期")
|
||||||
|
private java.util.Date updateTime;
|
||||||
|
|
||||||
|
/**所属部门*/
|
||||||
|
@ApiModelProperty(value = "所属部门")
|
||||||
|
private java.lang.String sysOrgCode;
|
||||||
|
|
||||||
|
/**问题知识库-评论表id*/
|
||||||
|
@Excel(name = "问题知识库-评论表id", width = 15)
|
||||||
|
@ApiModelProperty(value = "问题知识库-评论表id")
|
||||||
|
private java.lang.String commentId;
|
||||||
|
|
||||||
|
/**回复内容*/
|
||||||
|
@Excel(name = "回复内容", width = 15)
|
||||||
|
@ApiModelProperty(value = "回复内容")
|
||||||
|
private java.lang.String replyContent;
|
||||||
|
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.jero.modules.project.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 问题知识库-评论回复表
|
||||||
|
* @Author: jero-boot
|
||||||
|
* @Date: 2022-09-07
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
public interface ProblemKnowledgeBaseReplyEOMapper extends BaseMapper<ProblemKnowledgeBaseReplyEO> {
|
||||||
|
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
<?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.jero.modules.project.mapper.ProblemKnowledgeBaseReplyEOMapper">
|
||||||
|
<resultMap id="ProblemKnowledgeBaseReplyEOResultMap" type="com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO">
|
||||||
|
<id column="id" property="id" />
|
||||||
|
<result column="create_by" property="createBy" />
|
||||||
|
<result column="create_time" property="createTime" />
|
||||||
|
<result column="update_by" property="updateBy" />
|
||||||
|
<result column="update_time" property="updateTime" />
|
||||||
|
<result column="sys_org_code" property="sysOrgCode" />
|
||||||
|
<result column="comment_id" property="commentId" />
|
||||||
|
<result column="reply_content" property="replyContent" />
|
||||||
|
</resultMap>
|
||||||
|
</mapper>
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
package com.jero.modules.project.service;
|
||||||
|
|
||||||
|
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 问题知识库-评论回复表
|
||||||
|
* @Author: jero-boot
|
||||||
|
* @Date: 2022-09-07
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
public interface IProblemKnowledgeBaseReplyEOService extends IService<ProblemKnowledgeBaseReplyEO> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void add(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void editById(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id删除
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void deleteById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void deleteByIds(List<String> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id查询
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ProblemKnowledgeBaseReplyEO queryById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ProblemKnowledgeBaseReplyEO> queryList();
|
||||||
|
}
|
||||||
+89
@@ -0,0 +1,89 @@
|
|||||||
|
package com.jero.modules.project.service.impl;
|
||||||
|
|
||||||
|
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||||
|
import com.jero.modules.project.mapper.ProblemKnowledgeBaseReplyEOMapper;
|
||||||
|
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 问题知识库-评论回复表
|
||||||
|
* @Author: jero-boot
|
||||||
|
* @Date: 2022-09-07
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ProblemKnowledgeBaseReplyEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseReplyEOMapper, ProblemKnowledgeBaseReplyEO> implements IProblemKnowledgeBaseReplyEOService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void add(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||||
|
Date now = new Date();
|
||||||
|
problemKnowledgeBaseReplyEO.setCreateTime(now);
|
||||||
|
problemKnowledgeBaseReplyEO.setUpdateTime(now);
|
||||||
|
save(problemKnowledgeBaseReplyEO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
*
|
||||||
|
* @param problemKnowledgeBaseReplyEO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void editById(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||||
|
Date now = new Date();
|
||||||
|
problemKnowledgeBaseReplyEO.setUpdateTime(now);
|
||||||
|
saveOrUpdate(problemKnowledgeBaseReplyEO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id删除
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void deleteById(String id) {
|
||||||
|
removeById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void deleteByIds(List<String> ids) {
|
||||||
|
removeByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id查询
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProblemKnowledgeBaseReplyEO queryById(String id) {
|
||||||
|
return getById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<ProblemKnowledgeBaseReplyEO> queryList() {
|
||||||
|
return list();
|
||||||
|
}
|
||||||
|
}
|
||||||
+40
-12
@@ -216,6 +216,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
|||||||
@Autowired
|
@Autowired
|
||||||
ProjectRelatedPersonnelServiceImpl projectRelatedPersonnelService;
|
ProjectRelatedPersonnelServiceImpl projectRelatedPersonnelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IProjectLawsInventoryRejectCauseEOService projectLawsInventoryRejectCauseEOService;
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*
|
*
|
||||||
@@ -597,9 +599,14 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
|||||||
removeById(id);
|
removeById(id);
|
||||||
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(Arrays.asList(id.split(",")));
|
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(Arrays.asList(id.split(",")));
|
||||||
|
|
||||||
QueryWrapper<ConditionAssessmentEO> removeWrapper = new QueryWrapper<>();
|
//删除该条法规清单数据的 项目当前状态数据
|
||||||
removeWrapper.lambda().eq(ConditionAssessmentEO::getProjectLawsInventoryId,id);
|
QueryWrapper<ConditionAssessmentEO> conditionAssessmentRemoveWrapper = new QueryWrapper<>();
|
||||||
this.conditionAssessmentEOService.remove(removeWrapper);
|
conditionAssessmentRemoveWrapper.lambda().eq(ConditionAssessmentEO::getProjectLawsInventoryId,id);
|
||||||
|
this.conditionAssessmentEOService.remove(conditionAssessmentRemoveWrapper);
|
||||||
|
//删除该条法规清单数据的拒绝原因。
|
||||||
|
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
|
||||||
|
rejectCauseRemoveWrapper.lambda().eq(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,id);
|
||||||
|
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -635,9 +642,15 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
|||||||
removeByIds(ids);
|
removeByIds(ids);
|
||||||
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(ids);
|
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(ids);
|
||||||
|
|
||||||
QueryWrapper<ConditionAssessmentEO> removeWrapper = new QueryWrapper<>();
|
//删除该条法规清单数据的 项目当前状态数据
|
||||||
removeWrapper.lambda().in(ConditionAssessmentEO::getProjectLawsInventoryId,ids);
|
QueryWrapper<ConditionAssessmentEO> conditionAssessmentRemoveWrapper = new QueryWrapper<>();
|
||||||
this.conditionAssessmentEOService.remove(removeWrapper);
|
conditionAssessmentRemoveWrapper.lambda().in(ConditionAssessmentEO::getProjectLawsInventoryId,ids);
|
||||||
|
this.conditionAssessmentEOService.remove(conditionAssessmentRemoveWrapper);
|
||||||
|
|
||||||
|
//删除该条法规清单数据的拒绝原因。
|
||||||
|
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
|
||||||
|
rejectCauseRemoveWrapper.lambda().in(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,ids);
|
||||||
|
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1385,14 +1398,29 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
|||||||
projectLawsInventoryEO.setInventoryAffirmStatus(InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue());
|
projectLawsInventoryEO.setInventoryAffirmStatus(InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue());
|
||||||
projectLawsInventoryEO.setInventoryAffirmDueDate(sdf.parse(inventoryAffirmDueDate));
|
projectLawsInventoryEO.setInventoryAffirmDueDate(sdf.parse(inventoryAffirmDueDate));
|
||||||
LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.set(ProjectLawsInventoryEO::getRegulationOwnerSubmitStatus,null);
|
|
||||||
updateWrapper.set(ProjectLawsInventoryEO::getHomologationEngineerSubmitStatus,null);
|
|
||||||
updateWrapper.eq(ProjectLawsInventoryEO::getId,projectLawsInventoryEO.getId());
|
updateWrapper.eq(ProjectLawsInventoryEO::getId,projectLawsInventoryEO.getId());
|
||||||
super.update(projectLawsInventoryEO, updateWrapper);
|
//认证工程师标识 如果认证工程师提交状态为空, 或认证工程师拒绝过,给认证工程师任务,让他处理
|
||||||
|
boolean homologationEngineerFlag = (
|
||||||
userIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
|
StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())
|
||||||
userIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
|
|| StringUtils.equals(projectLawsInventoryEO.getHomologationEngineerSubmitStatus(),"1")
|
||||||
|
);
|
||||||
|
//法规工程师标识 如果法规工程师提交状态为空, 或法规工程师拒绝过,给法规工程师任务,让他处理
|
||||||
|
boolean regulationOwnerFlag = (
|
||||||
|
StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())
|
||||||
|
|| StringUtils.equals(projectLawsInventoryEO.getRegulationOwnerSubmitStatus(),"1")
|
||||||
|
);
|
||||||
|
if(homologationEngineerFlag){
|
||||||
|
updateWrapper.set(ProjectLawsInventoryEO::getHomologationEngineerSubmitStatus,null);
|
||||||
|
userIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
|
||||||
|
}
|
||||||
|
if(regulationOwnerFlag){
|
||||||
|
updateWrapper.set(ProjectLawsInventoryEO::getRegulationOwnerSubmitStatus,null);
|
||||||
|
userIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(homologationEngineerFlag || regulationOwnerFlag){
|
||||||
|
super.update(projectLawsInventoryEO, updateWrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -494,7 +494,7 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
|
|||||||
os.close();
|
os.close();
|
||||||
fis.close();
|
fis.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}finally {
|
}finally {
|
||||||
IOUtils.closeQuietly(os);
|
IOUtils.closeQuietly(os);
|
||||||
File file = new File(uploadpath + "/tempZip"+l);
|
File file = new File(uploadpath + "/tempZip"+l);
|
||||||
|
|||||||
+92
-54
@@ -28,17 +28,22 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFldChar;
|
|||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblLayoutType;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblLayoutType;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WordUtil {
|
public class WordUtil {
|
||||||
@@ -410,11 +415,12 @@ public class WordUtil {
|
|||||||
String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue());
|
String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue());
|
||||||
String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue());
|
String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue());
|
||||||
|
|
||||||
|
|
||||||
XWPFTable table = document.createTable(12, 2);
|
XWPFTable table = document.createTable(12, 2);
|
||||||
|
|
||||||
//表格属性
|
//表格属性
|
||||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||||
|
//固定列宽(英文和数字的时候自动换行)
|
||||||
|
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||||
|
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||||
//表格宽度
|
//表格宽度
|
||||||
CTJc cTJc = tablePr.addNewJc();
|
CTJc cTJc = tablePr.addNewJc();
|
||||||
//居中
|
//居中
|
||||||
@@ -478,57 +484,62 @@ public class WordUtil {
|
|||||||
//第12行
|
//第12行
|
||||||
setCell(table, 11,"Link",link);
|
setCell(table, 11,"Link",link);
|
||||||
}
|
}
|
||||||
// if(CutEnum.CN.getValue().equals(cut)){
|
// ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||||
// //第1行
|
|
||||||
// setCell(table.getRow(0), "相关领域",technologyTerritoryName);
|
}
|
||||||
// //第2行
|
|
||||||
// setCell(table.getRow(1), "适用车型",applyCarName);
|
/**
|
||||||
// //第3行
|
* 已固定长度分隔字符串
|
||||||
// setCell(table.getRow(2), "适用范围",applyScopeName);
|
* @param str
|
||||||
// //第4行
|
* @return
|
||||||
// setCell(table.getRow(3), "状态",stateName);
|
*/
|
||||||
// //第5行
|
public List<String> splitStr(String str){
|
||||||
// setCell(table.getRow(4), "用法",useMethodName);
|
//检查参数是否合法
|
||||||
// //第6行
|
if (null == str || str.equals("")) {
|
||||||
// setCell(table.getRow(5), "实施车型",implementCar);
|
return new ArrayList<>();
|
||||||
// //第7行
|
}
|
||||||
// setCell(table.getRow(6), "新车型实施日期",newCarImplementTime);
|
int length = 3;
|
||||||
// //第8行
|
int n = (str.length() + length - 1) / length; //获取整个字符串可以被切割成字符子串的个数
|
||||||
// setCell(table.getRow(7), "在产车实施日期",productionCarImplementTime);
|
List<String> list = new ArrayList<>();
|
||||||
// //第9行
|
for (int i = 0; i < n; i++) {
|
||||||
// setCell(table.getRow(8), "主要内容",contentCn);
|
if (i < (n - 1)) {
|
||||||
// //第10行
|
list.add(str.substring(i * length, (i + 1) * length)) ;
|
||||||
// setCell(table.getRow(9), "NIO工作进展",workProgressCn);
|
} else {
|
||||||
// //第11行
|
list.add(str.substring(i * length));
|
||||||
// setCell(table.getRow(10), "法规联系人",lawsContact);
|
}
|
||||||
// //第12行
|
}
|
||||||
// setCell(table.getRow(11), "链接",link);
|
return list;
|
||||||
// }else{
|
}
|
||||||
// //第1行
|
|
||||||
// setCell(table.getRow(0), "Related Areas",technologyTerritoryName);
|
/**
|
||||||
// //第2行
|
* 判断字符串是否完全由数字组成
|
||||||
// setCell(table.getRow(1), "Vehicle Type",applyCarName);
|
* @param str
|
||||||
// //第3行
|
* @return
|
||||||
// setCell(table.getRow(2), "Scope",applyScopeName);
|
*/
|
||||||
// //第4行
|
public boolean verifyFigure(String str){
|
||||||
// setCell(table.getRow(3), "Status",stateName);
|
Pattern p = Pattern.compile("[0-9]*");
|
||||||
// //第5行
|
Matcher m = p.matcher(str);
|
||||||
// setCell(table.getRow(4), "usage",useMethodName);
|
return m.matches();
|
||||||
// //第6行
|
}
|
||||||
// setCell(table.getRow(5), "Implementation Model",implementCar);
|
/**
|
||||||
// //第7行
|
* 判断字符串是否完全由字母组成
|
||||||
// setCell(table.getRow(6), "New Type Execution Date",newCarImplementTime);
|
* @param str
|
||||||
// //第8行
|
* @return
|
||||||
// setCell(table.getRow(7), "New Vehicle Execution Date",productionCarImplementTime);
|
*/
|
||||||
// //第9行
|
public boolean verifyEn(String str){
|
||||||
// setCell(table.getRow(8), "Main Content",contentEn);
|
Pattern enPatten = Pattern.compile("^[a-zA-Z]*");
|
||||||
// //第10行
|
Matcher enMatch = enPatten.matcher(str);
|
||||||
// setCell(table.getRow(9), "NIO Work Progress",workProgressEn);
|
return enMatch.matches();
|
||||||
// //第11行
|
}
|
||||||
// setCell(table.getRow(10), "Regulatory Contact",lawsContact);
|
/**
|
||||||
// //第12行
|
* 判断字符串是否完全由数字和字母组成
|
||||||
// setCell(table.getRow(11), "Link",link);
|
* @param str
|
||||||
// }
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean verifyFigureAndEn(String str){
|
||||||
|
Pattern figureAndEnPattern = Pattern.compile("[0-9a-zA-Z]{1,}");
|
||||||
|
Matcher figureAndEnMatcher = figureAndEnPattern.matcher(str);
|
||||||
|
return figureAndEnMatcher.matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -553,6 +564,9 @@ public class WordUtil {
|
|||||||
|
|
||||||
//表格属性
|
//表格属性
|
||||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||||
|
//固定列宽(英文和数字的时候自动换行)
|
||||||
|
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||||
|
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||||
//表格宽度
|
//表格宽度
|
||||||
CTJc cTJc = tablePr.addNewJc();
|
CTJc cTJc = tablePr.addNewJc();
|
||||||
//居中
|
//居中
|
||||||
@@ -597,6 +611,9 @@ public class WordUtil {
|
|||||||
XWPFTable table = document.createTable(newOpinionTemplateEOList.size()+1, 4);
|
XWPFTable table = document.createTable(newOpinionTemplateEOList.size()+1, 4);
|
||||||
//表格属性
|
//表格属性
|
||||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||||
|
//固定列宽(英文和数字的时候自动换行)
|
||||||
|
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||||
|
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||||
//表格宽度
|
//表格宽度
|
||||||
CTJc cTJc = tablePr.addNewJc();
|
CTJc cTJc = tablePr.addNewJc();
|
||||||
//居中
|
//居中
|
||||||
@@ -632,6 +649,9 @@ public class WordUtil {
|
|||||||
XWPFTable table = document.createTable(newStandardTemplateEOList.size()+1, 5);
|
XWPFTable table = document.createTable(newStandardTemplateEOList.size()+1, 5);
|
||||||
//表格属性
|
//表格属性
|
||||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||||
|
//固定列宽(英文和数字的时候自动换行)
|
||||||
|
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||||
|
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||||
//表格宽度
|
//表格宽度
|
||||||
CTJc cTJc = tablePr.addNewJc();
|
CTJc cTJc = tablePr.addNewJc();
|
||||||
//居中
|
//居中
|
||||||
@@ -809,11 +829,29 @@ public class WordUtil {
|
|||||||
ctTblWidth0.setW(BigInteger.valueOf(2000));
|
ctTblWidth0.setW(BigInteger.valueOf(2000));
|
||||||
CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
|
CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
|
||||||
ctTblWidth1.setType(STTblWidth.DXA);
|
ctTblWidth1.setType(STTblWidth.DXA);
|
||||||
ctTblWidth1.setW(BigInteger.valueOf(5000));
|
ctTblWidth1.setW(BigInteger.valueOf(6000));
|
||||||
|
|
||||||
|
// XWPFParagraph para = table.getRow(number).getCell(1).getParagraphs().get(0);
|
||||||
|
// XWPFRun run = para.createRun();//对某个段落设置格式
|
||||||
|
// run.addBreak();//换行
|
||||||
|
|
||||||
table.getRow(number).getCell(0).setText(fieldName);
|
table.getRow(number).getCell(0).setText(fieldName);
|
||||||
table.getRow(number).getCell(1).setText(technologyTerritory);
|
table.getRow(number).getCell(1).setText(technologyTerritory);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// private static void setCell(XWPFTable table, int number, String fieldName,String technologyTerritory) {
|
||||||
|
//
|
||||||
|
// table.getRow(number).setHeight(500);
|
||||||
|
// CTTblWidth ctTblWidth0 = table.getRow(number).getCell(0).getCTTc().addNewTcPr().addNewTcW();
|
||||||
|
// ctTblWidth0.setType(STTblWidth.DXA);
|
||||||
|
// ctTblWidth0.setW(BigInteger.valueOf(2000));
|
||||||
|
// CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
|
||||||
|
// ctTblWidth1.setType(STTblWidth.DXA);
|
||||||
|
// ctTblWidth1.setW(BigInteger.valueOf(5000));
|
||||||
|
//
|
||||||
|
// table.getRow(number).getCell(0).setText(fieldName);
|
||||||
|
// table.getRow(number).getCell(1).setText(technologyTerritory);
|
||||||
|
// }
|
||||||
// private static void setCell(XWPFTableRow tableRow, String fieldName,String technologyTerritory) {
|
// private static void setCell(XWPFTableRow tableRow, String fieldName,String technologyTerritory) {
|
||||||
//
|
//
|
||||||
// tableRow.setHeight(500);
|
// tableRow.setHeight(500);
|
||||||
|
|||||||
+1
-1
@@ -1519,7 +1519,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
|
|||||||
list1.add("</text>");
|
list1.add("</text>");
|
||||||
mapTemp.put("pre_tags", list);
|
mapTemp.put("pre_tags", list);
|
||||||
mapTemp.put("post_tags", list1);
|
mapTemp.put("post_tags", list1);
|
||||||
mapTemp.put("fragment_size", 500);//高亮字段内容长度,去除html样式标签,统计字数,设置为200
|
mapTemp.put("fragment_size", 320);//高亮字段内容长度,去除html样式标签,统计字数,设置为200
|
||||||
mapTemp.put("number_of_fragments", 1);//高亮内容默认分为5段, 此处设置为一段
|
mapTemp.put("number_of_fragments", 1);//高亮内容默认分为5段, 此处设置为一段
|
||||||
mapTemp.put("type", "plain");
|
mapTemp.put("type", "plain");
|
||||||
mapHighlight.put(key, mapTemp);
|
mapHighlight.put(key, mapTemp);
|
||||||
|
|||||||
+1
-1
@@ -3209,7 +3209,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if ("TEXT".equals(type)) {
|
} else if ("TEXT".equals(type)) {
|
||||||
lastOne.setValContent(lastOne.getValContent()+itemsValEO.getItemContent() + "\n");
|
lastOne.setValContent(StringUtils.isNotEmpty(lastOne.getValContent())? lastOne.getValContent() : "" + itemsValEO.getItemContent() + "\n");
|
||||||
valContent.add(lastOne);
|
valContent.add(lastOne);
|
||||||
|
|
||||||
//第一次
|
//第一次
|
||||||
|
|||||||
Binary file not shown.
@@ -180,6 +180,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getSeach()
|
this.getSeach()
|
||||||
|
this.queryParam = {...this.queryParam}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
searchQuery() {
|
searchQuery() {
|
||||||
@@ -199,6 +200,7 @@ export default {
|
|||||||
this.searchList.forEach((item, index) => {
|
this.searchList.forEach((item, index) => {
|
||||||
if(item.db_field_name === 'serialNumber') {
|
if(item.db_field_name === 'serialNumber') {
|
||||||
this.queryParam[item.db_field_name] = this.searchalonesplit
|
this.queryParam[item.db_field_name] = this.searchalonesplit
|
||||||
|
this.queryParam = {...this.queryParam}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -209,6 +211,7 @@ export default {
|
|||||||
// },
|
// },
|
||||||
dateChange(item) {
|
dateChange(item) {
|
||||||
this.queryParam[item] = moment(this.queryParam[item]).format('YYYY-MM-DD')
|
this.queryParam[item] = moment(this.queryParam[item]).format('YYYY-MM-DD')
|
||||||
|
|
||||||
},
|
},
|
||||||
onChange(item) {
|
onChange(item) {
|
||||||
if (this.queryParam[item] && this.queryParam[item].length > 0) {
|
if (this.queryParam[item] && this.queryParam[item].length > 0) {
|
||||||
|
|||||||
@@ -856,7 +856,37 @@
|
|||||||
.table .ant-table-column-title {
|
.table .ant-table-column-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
</style>
|
||||||
|
<style scoped lang="less">
|
||||||
|
.box {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 100px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .ant-table-tbody .yellow {
|
||||||
|
background-color: #ffff001f !important;
|
||||||
|
height: 40px !important;
|
||||||
|
border: none !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
::v-deep .ant-table-row:first-child {
|
||||||
|
background: #fff!important;
|
||||||
|
/*opacity: 0.9;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .ant-table-body {
|
||||||
|
background: transparent!important;
|
||||||
|
}
|
||||||
.content-text {
|
.content-text {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -891,37 +921,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style scoped>
|
|
||||||
.box {
|
|
||||||
width: 100%;
|
|
||||||
height: calc(100% - 100px);
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page {
|
|
||||||
text-align: right;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/deep/ .ant-table-tbody .yellow {
|
|
||||||
background-color: #ffff001f !important;
|
|
||||||
height: 40px !important;
|
|
||||||
border: none !important;
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
::v-deep .ant-table-row:first-child {
|
|
||||||
background: #fff!important;
|
|
||||||
/*opacity: 0.9;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .ant-table-body {
|
|
||||||
background: transparent!important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<style>
|
<style>
|
||||||
.resize-table-th {
|
.resize-table-th {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
@@ -222,7 +222,7 @@
|
|||||||
dataSource: [],
|
dataSource: [],
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
pageSizeOptions: ['10', '20','30', '50'],
|
pageSizeOptions: ['100', '200'],
|
||||||
total: 0,
|
total: 0,
|
||||||
searchParmes: {},
|
searchParmes: {},
|
||||||
loading: false,
|
loading: false,
|
||||||
@@ -672,7 +672,37 @@
|
|||||||
.table .ant-table-column-title {
|
.table .ant-table-column-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
</style>
|
||||||
|
<style scoped lang="less">
|
||||||
|
.box {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 100px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .ant-table-tbody .yellow {
|
||||||
|
background-color: #ffff001f !important;
|
||||||
|
height: 40px !important;
|
||||||
|
border: none !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
::v-deep .ant-table-row:first-child {
|
||||||
|
background: #fff!important;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .ant-table-body {
|
||||||
|
background: transparent!important;
|
||||||
|
}
|
||||||
.content-text {
|
.content-text {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -706,37 +736,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style scoped>
|
|
||||||
.box {
|
|
||||||
width: 100%;
|
|
||||||
height: calc(100% - 100px);
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page {
|
|
||||||
text-align: right;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/deep/ .ant-table-tbody .yellow {
|
|
||||||
background-color: #ffff001f !important;
|
|
||||||
height: 40px !important;
|
|
||||||
border: none !important;
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
::v-deep .ant-table-row:first-child {
|
|
||||||
background: #fff!important;
|
|
||||||
opacity: 0.9;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep .ant-table-body {
|
|
||||||
background: transparent!important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<style>
|
<style>
|
||||||
.resize-table-th {
|
.resize-table-th {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
+3
-3
@@ -41,9 +41,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="drawer-bootom-button">
|
<!-- <div class="drawer-bootom-button">-->
|
||||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
<classificationMaintenanceAdd ref="classificationMaintenanceAddRef"
|
<classificationMaintenanceAdd ref="classificationMaintenanceAddRef"
|
||||||
@classificationMaintenanceAddForm="classificationMaintenanceAddForm"/>
|
@classificationMaintenanceAddForm="classificationMaintenanceAddForm"/>
|
||||||
|
|||||||
+3
-3
@@ -46,9 +46,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="drawer-bootom-button">
|
<!-- <div class="drawer-bootom-button">-->
|
||||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
<countryCardReleaseModelAdd ref="countryCardReleaseModelAddRef"
|
<countryCardReleaseModelAdd ref="countryCardReleaseModelAddRef"
|
||||||
@countryCardReleaseModelAddForm="countryCardReleaseModelAddForm"/>
|
@countryCardReleaseModelAddForm="countryCardReleaseModelAddForm"/>
|
||||||
|
|||||||
+13
-9
@@ -3,9 +3,9 @@
|
|||||||
<div class="doc-detail-wrap">
|
<div class="doc-detail-wrap">
|
||||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||||
<div class="doc-detail-title">
|
<div class="doc-detail-title">
|
||||||
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
||||||
<!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>-->
|
<!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>-->
|
||||||
<!-- </span>-->
|
<!-- </span>-->
|
||||||
{{header_text}}
|
{{header_text}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="content-box-box" v-else>
|
<div class="content-box-box" :class="{'content-box-box-color':index % 2 == 1 ? true : false}" v-else>
|
||||||
<a v-if="index2 == 0 && item2.relevantUrl"
|
<a v-if="index2 == 0 && item2.relevantUrl"
|
||||||
style="color: rgb(33, 201, 204)"
|
style="color: rgb(33, 201, 204)"
|
||||||
:class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}"
|
:class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}"
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = 'Country Card'+ '-' + this.$t('details')
|
document.title = 'Country Card' + '-' + this.$t('details')
|
||||||
this.queryCountry(() => {
|
this.queryCountry(() => {
|
||||||
this.replacePage()
|
this.replacePage()
|
||||||
})
|
})
|
||||||
@@ -385,8 +385,8 @@
|
|||||||
.content-box-box {
|
.content-box-box {
|
||||||
width: 340px;
|
width: 340px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 80px;
|
height: 60px;
|
||||||
line-height: 80px;
|
line-height: 60px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-right: 1px #d9d9d9 solid;
|
border-right: 1px #d9d9d9 solid;
|
||||||
@@ -421,7 +421,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content-box-top {
|
.content-box-top {
|
||||||
height: 80px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-box-top:first-child {
|
.content-box-top:first-child {
|
||||||
@@ -442,6 +442,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content-box-box-text-admin {
|
.content-box-box-text-admin {
|
||||||
height: 80px !important;
|
height: 60px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-box-box-color {
|
||||||
|
background: #f2f2f2;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
+3
-3
@@ -41,9 +41,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="drawer-bootom-button">
|
<!-- <div class="drawer-bootom-button">-->
|
||||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
<optionMaintenanceAdd ref="optionMaintenanceAddRef"
|
<optionMaintenanceAdd ref="optionMaintenanceAddRef"
|
||||||
@optionMaintenanceAddForm="optionMaintenanceAddForm"/>
|
@optionMaintenanceAddForm="optionMaintenanceAddForm"/>
|
||||||
|
|||||||
+247
-61
@@ -2,7 +2,7 @@
|
|||||||
<div class="doc-detail">
|
<div class="doc-detail">
|
||||||
<div class="doc-detail-wrap">
|
<div class="doc-detail-wrap">
|
||||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||||
<div class="doc-detail-title">
|
<div class="doc-detail-title" :title="queryForm.title">
|
||||||
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
||||||
<!-- <a-icon type="arrow-left" @click="back" style="margin-right: 6px;"/>-->
|
<!-- <a-icon type="arrow-left" @click="back" style="margin-right: 6px;"/>-->
|
||||||
<!-- </span>-->
|
<!-- </span>-->
|
||||||
@@ -15,76 +15,99 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding-top: 68px;background: #fff">
|
<div class="doc-detail-box">
|
||||||
<div class="detail-content" style="padding: 24px">
|
<div style="padding-top: 68px;" class="doc-detail-box-text">
|
||||||
<div class="content-text-top">
|
<div class="detail-content" style="padding: 24px">
|
||||||
<span style="margin-right: 10px">
|
<!-- <div class="content-text-top">-->
|
||||||
{{$t('issuedBy')}}:{{this.queryForm.createBy}}
|
<!-- <span style="margin-right: 10px">-->
|
||||||
</span>
|
<!-- {{$t('issuedBy')}}:{{this.queryForm.createBy}}-->
|
||||||
<span>
|
<!-- </span>-->
|
||||||
{{$t('releaseDate')}}:{{this.queryForm.createTime?this.queryForm.createTime.slice(0,11):''}}
|
<!-- <span>-->
|
||||||
</span>
|
<!-- {{$t('releaseDate')}}:{{this.queryForm.createTime?this.queryForm.createTime.slice(0,11):''}}-->
|
||||||
</div>
|
<!-- </span>-->
|
||||||
<div class="content-text">
|
<!-- </div>-->
|
||||||
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
<div class="content-text">
|
||||||
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
||||||
<span class="text-field-right text-field-right-url"
|
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
||||||
@click="clickButtonToUpload(queryForm[item.value])"
|
<span class="text-field-right text-field-right-url"
|
||||||
v-if="item.type == 2 && queryForm[item.value]"
|
@click="clickButtonToUpload(queryForm[item.value])"
|
||||||
>{{ $t('viewFile') }}</span>
|
v-if="item.type == 2 && queryForm[item.value]"
|
||||||
|
>{{ $t('viewFile') }}</span>
|
||||||
|
|
||||||
<span class="text-field-right"
|
<span class="text-field-right"
|
||||||
:title="queryForm[item.value]" v-else>
|
:title="queryForm[item.value]" v-else>
|
||||||
{{queryForm[item.value]}}
|
{{queryForm[item.value]}}
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="division"></div>
|
||||||
<div class="content" v-html="queryForm.content"></div>
|
<div class="content ql-editor" v-html="queryForm.content"></div>
|
||||||
<div class="content-icon">
|
<div class="content-icon">
|
||||||
<span class="content-icon-text">
|
<span class="content-icon-text">
|
||||||
<a-icon class="icon" type="eye"/>
|
<a-icon class="icon" type="eye"/>
|
||||||
<span>{{this.queryForm.browsingHistoryCount}}</span>
|
<span>{{this.queryForm.browsingHistoryCount}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="content-icon-text" @click="likeClick()">
|
<span class="content-icon-text" @click="likeClick()">
|
||||||
<a-icon class="icon" :class="{'icon-active':this.isPraise}" type="like"/>
|
<a-icon class="icon" :class="{'icon-active':this.isPraise}" type="like"/>
|
||||||
<span>{{this.queryForm.praiseCount}}</span>
|
<span>{{this.queryForm.praiseCount}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="content-icon-text" @click="starClick()">
|
<span class="content-icon-text" @click="starClick()">
|
||||||
<a-icon class="icon" :class="{'icon-active':this.isCollect}" type="star"/>
|
<a-icon class="icon" :class="{'icon-active':this.isCollect}" type="star"/>
|
||||||
<span>{{this.queryForm.collectCount}}</span>
|
<span>{{this.queryForm.collectCount}}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
<div class="box-text">
|
|
||||||
<div class="header-text">
|
|
||||||
{{$t('comment')}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="division"></div>
|
||||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
<div class="box-text" style="margin-top: 24px">
|
||||||
<a-row :gutter="24">
|
|
||||||
<a-col :span="24">
|
|
||||||
<div class="box-title-text">
|
|
||||||
<a-form-model-item class="itemModel" prop="commentContent">
|
|
||||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
|
|
||||||
v-model.trim="formInline.commentContent"
|
|
||||||
:rows="4"/>
|
|
||||||
</a-form-model-item>
|
|
||||||
</div>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</a-form-model>
|
|
||||||
<div class="content-button">
|
|
||||||
<a-button class="header-btn submit" :loading="loading" @click="release" type="primary">{{$t('release')}}
|
|
||||||
</a-button>
|
|
||||||
</div>
|
|
||||||
<div v-for="(item,index) in releaseList">
|
|
||||||
<div class="box-text">
|
|
||||||
<div class="header-text">
|
<div class="header-text">
|
||||||
<span style="margin-right: 20px">{{item.createBy}}</span>
|
{{$t('comment')}}
|
||||||
{{item.createTime}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||||
{{item.commentContent}}
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<a-form-model-item class="itemModel" prop="commentContent">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
|
||||||
|
v-model.trim="formInline.commentContent"
|
||||||
|
:rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form-model>
|
||||||
|
<div class="content-button">
|
||||||
|
<a-button class="header-btn submit" :loading="loading" @click="release" type="primary">{{$t('release')}}
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
<div v-for="(item,index) in releaseList" style="margin-bottom: 30px">
|
||||||
|
<div class="box-text-index">
|
||||||
|
<div class="header-text-index">
|
||||||
|
<span style="margin-right: 20px" class="header-text-index-left">{{item.createBy}}</span>
|
||||||
|
<span class="header-text-index-text">{{item.createTime}}</span>
|
||||||
|
<span class="box-icon" @click="messageClick(item)">
|
||||||
|
<a-icon type="message"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-index">
|
||||||
|
{{item.commentContent}}
|
||||||
|
</div>
|
||||||
|
<div class="box-comment"
|
||||||
|
v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList"
|
||||||
|
v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0">
|
||||||
|
<div class="box-text-index">
|
||||||
|
<div class="header-text-index">
|
||||||
|
<span style="margin-right: 20px" class="header-text-index-left">{{val.createBy}}</span>
|
||||||
|
<span class="header-text-index-text">{{val.createTime}}</span>
|
||||||
|
<span class="box-icon" @click="messageClick(item)">
|
||||||
|
<a-icon type="message"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-index">
|
||||||
|
{{val.commentContent}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -92,6 +115,34 @@
|
|||||||
</div>
|
</div>
|
||||||
<viewFileModel ref="viewFileModelRef"/>
|
<viewFileModel ref="viewFileModelRef"/>
|
||||||
<SelectedBy ref="SelectedByRef" :title="$t('forward')" @SelectedByForm="SelectedByForm"></SelectedBy>
|
<SelectedBy ref="SelectedByRef" :title="$t('forward')" @SelectedByForm="SelectedByForm"></SelectedBy>
|
||||||
|
<a-modal
|
||||||
|
:title="$t('replyToComments')"
|
||||||
|
:width="700"
|
||||||
|
:visible="visibleComment"
|
||||||
|
:confirm-loading="confirmLoading"
|
||||||
|
:maskClosable="false"
|
||||||
|
@ok="handleOkComment"
|
||||||
|
@cancel="handleCancelComment"
|
||||||
|
>
|
||||||
|
<a-form-model :model="formInlineComment" class="formAdd" :rules="rulesComment" ref="ruleFormComment">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="Required">*</span>
|
||||||
|
<span class="title-text-text" :title="$t('replyToComments')">{{$t('replyToComments')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" :prop="'replyContent'">
|
||||||
|
<a-textarea
|
||||||
|
:placeholder="$t('PleaseEnter')+$t('replyToComments')"
|
||||||
|
:disabled="false"
|
||||||
|
v-model="formInlineComment.replyContent" :rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form-model>
|
||||||
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -100,6 +151,10 @@
|
|||||||
import SelectedBy from '@/components/SelectedBy/index'
|
import SelectedBy from '@/components/SelectedBy/index'
|
||||||
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
|
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
import 'quill/dist/quill.core.css'
|
||||||
|
import 'quill/dist/quill.snow.css'
|
||||||
|
import 'quill/dist/quill.bubble.css'
|
||||||
|
import { quillEditor } from 'vue-quill-editor'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'problemKnowledgeBaseView',
|
name: 'problemKnowledgeBaseView',
|
||||||
@@ -109,6 +164,10 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
visibleComment: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
CommentQuery: {},
|
||||||
|
formInlineComment: {},
|
||||||
standardContentList: [
|
standardContentList: [
|
||||||
{
|
{
|
||||||
title: this.$t('problemClassification'),
|
title: this.$t('problemClassification'),
|
||||||
@@ -122,9 +181,17 @@
|
|||||||
title: this.$t('standardNo'),
|
title: this.$t('standardNo'),
|
||||||
value: 'standNumber'
|
value: 'standNumber'
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// title: this.$t('title'),
|
||||||
|
// value: 'title'
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
title: this.$t('title'),
|
title:this.$t('issuedBy'),
|
||||||
value: 'title'
|
value: 'createBy'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:this.$t('releaseDate'),
|
||||||
|
value: 'createTime'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('enclosure'),
|
title: this.$t('enclosure'),
|
||||||
@@ -134,6 +201,20 @@
|
|||||||
],
|
],
|
||||||
queryForm: {},
|
queryForm: {},
|
||||||
formInline: {},
|
formInline: {},
|
||||||
|
rulesComment: {
|
||||||
|
replyContent: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('replyToComments') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
max: 300,
|
||||||
|
message: this.$t('replyToComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
rules: {
|
rules: {
|
||||||
commentContent: [
|
commentContent: [
|
||||||
{
|
{
|
||||||
@@ -156,6 +237,39 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapGetters(['userInfo']),
|
...mapGetters(['userInfo']),
|
||||||
|
messageClick(val) {
|
||||||
|
this.CommentQuery = val
|
||||||
|
this.visibleComment = true
|
||||||
|
this.formInlineComment = {}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.ruleFormComment.clearValidate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleOkComment() {
|
||||||
|
this.$refs.ruleFormComment.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
let query = {
|
||||||
|
commentId: this.CommentQuery.id,
|
||||||
|
replyContent: this.formInlineComment.replyContent
|
||||||
|
}
|
||||||
|
this.confirmLoading = true
|
||||||
|
postAction('/project/problemKnowledgeBaseReplyEO/add', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('OperationSuccessful'))
|
||||||
|
this.visibleComment = false
|
||||||
|
this.confirmLoading = false
|
||||||
|
this.releaseData()
|
||||||
|
} else {
|
||||||
|
this.confirmLoading = false
|
||||||
|
this.$message.success(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancelComment() {
|
||||||
|
this.visibleComment = false
|
||||||
|
},
|
||||||
SelectedByForm(userIds) {
|
SelectedByForm(userIds) {
|
||||||
let query = {
|
let query = {
|
||||||
userIds: userIds,
|
userIds: userIds,
|
||||||
@@ -311,7 +425,6 @@
|
|||||||
.doc-detail {
|
.doc-detail {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
.doc-detail-wrap {
|
.doc-detail-wrap {
|
||||||
.doc-detail-header {
|
.doc-detail-header {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -415,7 +528,7 @@
|
|||||||
.text-field-right-url {
|
.text-field-right-url {
|
||||||
color: #00B3BE !important;
|
color: #00B3BE !important;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-top: 10px;
|
/*margin-top: 10px;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -425,6 +538,9 @@
|
|||||||
color: #040B29;
|
color: #040B29;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
padding: 24px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-top: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-icon {
|
.content-icon {
|
||||||
@@ -449,12 +565,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content-icon-text .icon {
|
.content-icon-text .icon {
|
||||||
font-size: 24px;
|
font-size: 20px;
|
||||||
color: #3b4249 !important;
|
color: #3b4249 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-icon-text .icon-active {
|
.content-icon-text .icon-active {
|
||||||
font-size: 24px;
|
font-size: 20px;
|
||||||
color: #00B3BE !important;
|
color: #00B3BE !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -532,10 +648,80 @@
|
|||||||
.content-text-top {
|
.content-text-top {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
color: #040B29;
|
color: #6F7385;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 16px;
|
font-size: 14px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.doc-detail-box {
|
||||||
|
width: 100%;
|
||||||
|
background: #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.doc-detail-box-text {
|
||||||
|
width: 75%;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: #fff;
|
||||||
|
/*position: absolute;*/
|
||||||
|
min-height: 100vh;
|
||||||
|
/*left: 50%;*/
|
||||||
|
/*transform: translateX(-50%);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.division {
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
background: #f2f2f2;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-index {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #000F16;
|
||||||
|
font-weight: 400;
|
||||||
|
word-break: break-word;
|
||||||
|
padding: 12px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-text-index {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-top: 10px;
|
||||||
|
height: 35px;
|
||||||
|
color: #000F16;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-icon {
|
||||||
|
margin-right: 10px;
|
||||||
|
float: right;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-comment {
|
||||||
|
width: calc(100% - 80px);
|
||||||
|
margin-left: 80px;
|
||||||
|
background: #f2f2f2;
|
||||||
|
padding: 6px 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Required {
|
||||||
|
color: red;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-text-index-left {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-text-index-text {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #848684;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
+2
-1
@@ -75,7 +75,8 @@
|
|||||||
title: this.$t('clauseNo'),
|
title: this.$t('clauseNo'),
|
||||||
dataIndex: 'itemNum',
|
dataIndex: 'itemNum',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
ellipsis: true
|
ellipsis: true,
|
||||||
|
width: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('clauseName'),
|
title: this.$t('clauseName'),
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<div class="myList-box-content-box" v-for="(item,index) in dataSource" :key="index" @click="prcClick(item)">
|
<div class="myList-box-content-box" v-for="(item,index) in dataSource" :key="index" @click="prcClick(item)">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<span class="top-text" :title="item.prcName">{{item.prcName}}</span>
|
<span class="top-text" :title="item.prcName">{{item.prcName}}</span>
|
||||||
<span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>
|
<!-- <span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="button">
|
<div class="button">
|
||||||
{{item.creatTime}}
|
{{item.creatTime}}
|
||||||
@@ -161,25 +161,24 @@
|
|||||||
font-family: Blue Sky Noto;
|
font-family: Blue Sky Noto;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #040B29;
|
color: #040B29;
|
||||||
max-width: 50%;
|
max-width: calc(100% - 72px);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
/*.top-admin {*/
|
||||||
.top-admin {
|
/* font-size: 16px;*/
|
||||||
font-size: 16px;
|
/* font-family: Blue Sky Noto;*/
|
||||||
font-family: Blue Sky Noto;
|
/* display: inline-block;*/
|
||||||
display: inline-block;
|
/* font-weight: 400;*/
|
||||||
font-weight: 400;
|
/* color: #040B29;*/
|
||||||
color: #040B29;
|
/* margin-left: 4px;*/
|
||||||
margin-left: 4px;
|
/* max-width: calc(50% - 72px);*/
|
||||||
max-width: calc(50% - 72px);
|
/* overflow: hidden;*/
|
||||||
overflow: hidden;
|
/* text-overflow: ellipsis;*/
|
||||||
text-overflow: ellipsis;
|
/* white-space: nowrap;*/
|
||||||
white-space: nowrap;
|
/*}*/
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
|
|||||||
+37
-3
@@ -51,6 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="detail-content-content-right-data-text" v-html="item.itemsText"></div>
|
<div class="detail-content-content-right-data-text" v-html="item.itemsText"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<JLoading :loading="loadingText">{{$t('dataLoading')}}</JLoading>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -143,7 +144,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { postAction, putAction } from '../../../../api/manage'
|
import { postAction, putAction, getAction } from '../../../../api/manage'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'documentDataComparison',
|
name: 'documentDataComparison',
|
||||||
@@ -152,6 +153,7 @@
|
|||||||
formInline: {},
|
formInline: {},
|
||||||
formInlineText: {},
|
formInlineText: {},
|
||||||
dataLoadingText: '',
|
dataLoadingText: '',
|
||||||
|
loadingText:false,
|
||||||
rules: {
|
rules: {
|
||||||
comment: [
|
comment: [
|
||||||
{
|
{
|
||||||
@@ -322,6 +324,7 @@
|
|||||||
detailLeft[num].classList.add('detail-content-content-right-data-color')
|
detailLeft[num].classList.add('detail-content-content-right-data-color')
|
||||||
}
|
}
|
||||||
this.dataLeft = item
|
this.dataLeft = item
|
||||||
|
this.dataLeft.numIndex = num
|
||||||
if (this.isMatching) {
|
if (this.isMatching) {
|
||||||
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
|
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
|
||||||
if (detailRightColor && detailRightColor.length > 0) {
|
if (detailRightColor && detailRightColor.length > 0) {
|
||||||
@@ -335,6 +338,8 @@
|
|||||||
detailRight[item.targetStand].classList.add('detail-content-content-right-data-color-right')
|
detailRight[item.targetStand].classList.add('detail-content-content-right-data-color-right')
|
||||||
detailContent[0].scrollTop = detailRight[item.targetStand].offsetTop - 150
|
detailContent[0].scrollTop = detailRight[item.targetStand].offsetTop - 150
|
||||||
}
|
}
|
||||||
|
this.dataRight.numIndex = item.targetStand
|
||||||
|
this.clauseComparison()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -352,6 +357,7 @@
|
|||||||
detailRight[num].classList.add('detail-content-content-right-data-color-right')
|
detailRight[num].classList.add('detail-content-content-right-data-color-right')
|
||||||
}
|
}
|
||||||
this.dataRight = item
|
this.dataRight = item
|
||||||
|
this.dataRight.numIndex = num
|
||||||
if (this.isMatching) {
|
if (this.isMatching) {
|
||||||
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||||
if (detailLeftColor && detailLeftColor.length > 0) {
|
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||||
@@ -359,15 +365,34 @@
|
|||||||
}
|
}
|
||||||
if (item.targetStand > -1) {
|
if (item.targetStand > -1) {
|
||||||
this.dataLeft = this.resultData.textLeft[item.targetStand]
|
this.dataLeft = this.resultData.textLeft[item.targetStand]
|
||||||
|
this.dataLeft.numIndex = item.targetStand
|
||||||
let detailContent = document.getElementsByClassName('detail-content-content-right-top')
|
let detailContent = document.getElementsByClassName('detail-content-content-right-top')
|
||||||
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||||
if (detailLeft && detailLeft.length > 0 && item.targetStand >= 0) {
|
if (detailLeft && detailLeft.length > 0 && item.targetStand >= 0) {
|
||||||
detailLeft[item.targetStand].classList.add('detail-content-content-right-data-color')
|
detailLeft[item.targetStand].classList.add('detail-content-content-right-data-color')
|
||||||
detailContent[0].scrollTop = detailLeft[item.targetStand].offsetTop - 150
|
detailContent[0].scrollTop = detailLeft[item.targetStand].offsetTop - 150
|
||||||
}
|
}
|
||||||
|
this.clauseComparison()
|
||||||
|
// this.resultData = { ...this.resultData }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
clauseComparison() {
|
||||||
|
let query = {
|
||||||
|
leftId: this.dataLeft.id,
|
||||||
|
rightId: this.dataRight.id
|
||||||
|
}
|
||||||
|
this.loadingText = true
|
||||||
|
getAction('/compare/sarFileCompareItem/clauseComparison', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.loadingText = false
|
||||||
|
this.resultData.textLeft[this.dataLeft.numIndex].itemsText = res.result[0]
|
||||||
|
this.resultData.textRight[this.dataRight.numIndex].itemsText = res.result[1]
|
||||||
|
}else{
|
||||||
|
this.loadingText = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
onSelectLeft(selectedKeys, exports) {
|
onSelectLeft(selectedKeys, exports) {
|
||||||
let node = exports.node.$vnode.data.props.dataRef
|
let node = exports.node.$vnode.data.props.dataRef
|
||||||
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||||
@@ -377,7 +402,7 @@
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (let i = 0; i < this.resultData.textLeft.length; i++) {
|
for (let i = 0; i < this.resultData.textLeft.length; i++) {
|
||||||
if (node.parentId && node.itemName == this.resultData.textLeft[i].itemsName) {
|
if (node.parentId && node.menuId == this.resultData.textLeft[i].menuId) {
|
||||||
detailContent[0].scrollTop = detailLeft[i].offsetTop - 150
|
detailContent[0].scrollTop = detailLeft[i].offsetTop - 150
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -392,7 +417,7 @@
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (let i = 0; i < this.resultData.textRight.length; i++) {
|
for (let i = 0; i < this.resultData.textRight.length; i++) {
|
||||||
if (node.parentId && node.itemName == this.resultData.textRight[i].itemsName) {
|
if (node.parentId && node.menuId == this.resultData.textRight[i].menuId) {
|
||||||
detailContent[0].scrollTop = detailRight[i].offsetTop - 150
|
detailContent[0].scrollTop = detailRight[i].offsetTop - 150
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -642,4 +667,13 @@
|
|||||||
border: 1px red solid;
|
border: 1px red solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::v-deep .delClass {
|
||||||
|
background: #ff7168;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .insertClass {
|
||||||
|
background: rgba(85, 183, 255, .6);
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
:columns="columns"
|
:columns="columns"
|
||||||
>
|
>
|
||||||
<span slot="projectName" slot-scope="text,record" :title="text">
|
<span slot="projectName" slot-scope="text,record" :title="text">
|
||||||
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
{{ text && text.length > 20 ? text.slice(0, 18) + '...' : text }}
|
||||||
</span>
|
</span>
|
||||||
<span slot="fileName" slot-scope="text,record" :title="text">
|
<span slot="fileName" slot-scope="text,record" :title="text">
|
||||||
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
||||||
@@ -366,7 +366,7 @@ export default {
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'fileDescription',
|
dataIndex: 'fileDescription',
|
||||||
scopedSlots: { customRender: 'projectName' },
|
scopedSlots: { customRender: 'projectName' },
|
||||||
width: 150
|
width: 300
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('uploadedBy'),
|
title: this.$t('uploadedBy'),
|
||||||
|
|||||||
@@ -434,7 +434,9 @@ export default {
|
|||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
@import '~@assets/less/common.less';
|
@import '~@assets/less/common.less';
|
||||||
|
/deep/.ant-card-body{
|
||||||
|
margin-top: -28px;
|
||||||
|
}
|
||||||
.doc-detail {
|
.doc-detail {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
:columns="columns"
|
:columns="columns"
|
||||||
>
|
>
|
||||||
<span slot="projectName" slot-scope="text,record" :title="text">
|
<span slot="projectName" slot-scope="text,record" :title="text">
|
||||||
{{ text && text.length > 25 ? text.slice(0, 24) + '...' : text }}
|
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
||||||
</span>
|
</span>
|
||||||
<span slot="templateName" slot-scope="text,record" :title="text">
|
<span slot="templateName" slot-scope="text,record" :title="text">
|
||||||
{{ text && text.length > 25 ? text.slice(0, 21) + '...' : text }}
|
{{ text && text.length > 25 ? text.slice(0, 21) + '...' : text }}
|
||||||
|
|||||||
Reference in New Issue
Block a user