소스 검색

市场导入

guomengjiao 1 개월 전
부모
커밋
9a747b3d19

+ 2 - 0
common/src/main/java/com/jeesite/common/constant/Constants.java

@@ -218,4 +218,6 @@ public interface Constants {
         String REPORT_CATEGORY = "bjfl:report:category";
         String REPORT_PUBLISHDATE = "bjfl:report:publish:date";
     }
+
+    String textFormat = "<p><span style=\"font-size: 16px; font-family: 微软雅黑;\">%s</span></p>";
 }

+ 14 - 5
modules/report/src/main/java/com/jeesite/modules/report/dto/ResearchReportDto.java

@@ -15,7 +15,8 @@ public class ResearchReportDto implements Serializable {
     private String marketType;		// 所属分类
     private String reportScopeHtml;		// 研究范围
     private String directoryHtml;		// 目录
-    private String generalization; //市场概括
+    private String marketScale; //市场规模
+    private String marketDriven; //市场驱动
     private String lang;
 
     public String getTitle() {
@@ -50,12 +51,20 @@ public class ResearchReportDto implements Serializable {
         this.directoryHtml = directoryHtml;
     }
 
-    public String getGeneralization() {
-        return generalization;
+    public String getMarketScale() {
+        return marketScale;
     }
 
-    public void setGeneralization(String generalization) {
-        this.generalization = generalization;
+    public void setMarketScale(String marketScale) {
+        this.marketScale = marketScale;
+    }
+
+    public String getMarketDriven() {
+        return marketDriven;
+    }
+
+    public void setMarketDriven(String marketDriven) {
+        this.marketDriven = marketDriven;
     }
 
     public String getLang() {

+ 20 - 0
modules/report/src/main/java/com/jeesite/modules/report/dto/ResearchReportMarketDrivenDto.java

@@ -0,0 +1,20 @@
+package com.jeesite.modules.report.dto;
+
+import com.jeesite.common.utils.excel.annotation.ExcelField;
+import com.jeesite.common.utils.excel.annotation.ExcelFields;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ResearchReportMarketDrivenDto implements Serializable {
+    @ExcelFields({
+        @ExcelField(title = "报告代码",attrName = "reportCode",align = ExcelField.Align.AUTO,sort = 10),
+        @ExcelField(title = "版本",attrName = "reportRegion",align = ExcelField.Align.AUTO,dictType = "reports_region",sort = 20),
+        @ExcelField(title = "市场驱动",attrName = "marketDriven",align = ExcelField.Align.AUTO,sort = 30),
+    })
+    private String reportCode;		// 报告代码
+    private String reportRegion;		// 报告区域
+    private String marketDriven; //市场驱动
+
+}

+ 20 - 0
modules/report/src/main/java/com/jeesite/modules/report/dto/ResearchReportMarketScaleDto.java

@@ -0,0 +1,20 @@
+package com.jeesite.modules.report.dto;
+
+import com.jeesite.common.utils.excel.annotation.ExcelField;
+import com.jeesite.common.utils.excel.annotation.ExcelFields;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ResearchReportMarketScaleDto implements Serializable {
+    @ExcelFields({
+        @ExcelField(title = "报告代码",attrName = "reportCode",align = ExcelField.Align.AUTO,sort = 10),
+        @ExcelField(title = "版本",attrName = "reportRegion",align = ExcelField.Align.AUTO,dictType = "reports_region",sort = 20),
+        @ExcelField(title = "市场规模",attrName = "marketScale",align = ExcelField.Align.AUTO,sort = 30),
+    })
+    private String reportCode;		// 报告代码
+    private String reportRegion;		// 报告区域
+    private String marketScale; //市场规模
+
+}

+ 16 - 8
modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchReport.java

@@ -48,7 +48,8 @@ import java.util.Date;
 		@Column(name="types", attrName="types", label="替换类型"),
 		@Column(name="applications", attrName="applications", label="替换应用"),
 		@Column(name="web_title", attrName="webTitle", label="网站标题",queryType = QueryType.LIKE),
-		@Column(name="generalization", attrName="generalization", label="市场概括"),
+		@Column(name="market_scale", attrName="marketScale", label="市场规模"),
+		@Column(name="market_driven", attrName="marketDriven", label="市场驱动"),
 //		@Column(name="web_id", attrName="webId", label="网站id"),
 //		@Column(name="is_replace", attrName="isReplace", label="是否替换"),
 	}, orderBy="a.update_date DESC"
@@ -137,8 +138,8 @@ public class ResearchReport extends DataEntity<ResearchReport> {
 	private String webTitle;	//网站标题
 	private String webId;	//网站id
 	private String isReplace;	// 是否替换
-
-	private String generalization; //市场概括
+	private String marketScale; //市场规模
+	private String marketDriven; //市场驱动
 
 	public ResearchReport() {
 		this(null);
@@ -519,13 +520,20 @@ public class ResearchReport extends DataEntity<ResearchReport> {
 		this.isReplace = isReplace;
 	}
 
-	@Size(min=0, max=5000, message="市场概括长度不能超过 5000 个字符")
-	public String getGeneralization() {
-		return generalization;
+	public String getMarketScale() {
+		return marketScale;
+	}
+
+	public void setMarketScale(String marketScale) {
+		this.marketScale = marketScale;
+	}
+
+	public String getMarketDriven() {
+		return marketDriven;
 	}
 
-	public void setGeneralization(String generalization) {
-		this.generalization = generalization;
+	public void setMarketDriven(String marketDriven) {
+		this.marketDriven = marketDriven;
 	}
 
 	public static boolean areAllFieldsEmptyExceptOne(Object obj, String... excludeFields) {

+ 112 - 0
modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java

@@ -15,6 +15,8 @@ import com.jeesite.modules.report.dao.ReportHtmlDao;
 import com.jeesite.modules.report.dao.ResearchReportDao;
 import com.jeesite.modules.report.dao.SiteInfoDao;
 import com.jeesite.modules.report.dto.ResearchReportDto;
+import com.jeesite.modules.report.dto.ResearchReportMarketDrivenDto;
+import com.jeesite.modules.report.dto.ResearchReportMarketScaleDto;
 import com.jeesite.modules.report.entity.ReportHtml;
 import com.jeesite.modules.report.entity.ResearchReport;
 import com.jeesite.modules.report.entity.SiteInfo;
@@ -928,5 +930,115 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 		return dao.moreReportList(researchReport);
 	}
 
+	@Transactional
+	public String marketScaleImportData(MultipartFile file) throws Exception {
+		if(file.isEmpty()){
+			throw new ServiceException("请选择要导入的文件");
+		}
+		int saveCount = 0;
+		StringBuffer msg = new StringBuffer();
+		ExcelImport ei = new ExcelImport(file,2,0);
+		List<ResearchReportMarketScaleDto> list = ei.getDataList(ResearchReportMarketScaleDto.class, new String[0]);
+		if(list != null && list.size() > 0){
+			for(int i = 0; i < list.size(); i++){
+				boolean isSave = true;
+				ResearchReportMarketScaleDto dto = list.get(i);
+				if(StringUtils.isBlank(dto.getReportCode())){
+					msg.append("第"+(i+1)+"行,报告代码不能为空!");
+					isSave = false;
+				}
+				if(StringUtils.isBlank(dto.getReportRegion())){
+					msg.append("第"+(i+1)+"行,版本不能为空!");
+					isSave = false;
+				}
+				if(StringUtils.isBlank(dto.getMarketScale())){
+					msg.append("第"+(i+1)+"行,市场规模不能为空!");
+					isSave = false;
+				}
+				if(isSave){
+					try {
+						ResearchReport where = new ResearchReport();
+						where.setReportCode(dto.getReportCode());
+						where.setReportRegion(dto.getReportRegion());
+						ResearchReport researchReport = dao.getByEntity(where);
+						if (researchReport != null) {
+							researchReport.setMarketScale(String.format(Constants.textFormat, dto.getMarketScale()));
+							saveCount += dao.update(researchReport);
+						} else {
+							msg.append("第"+(i+1)+"行,研究报告对应为空!");
+						}
+					} catch (Exception e) {
+						msg.append("第"+(i+1)+"行,研究报告报告代码与版本存在重复!");
+					}
+				}
+			}
+		}else {
+			msg.append("数据为空,导入失败!");
+		}
+
+		// 全部保存
+		int total = list.size();
+		if(total == saveCount){
+			msg.insert(0,"数据导入成功,共"+saveCount+"条");
+		}else if(saveCount > 0){
+			msg.insert(0,"数据部分导入成功,成功"+saveCount+"条,失败"+(total - saveCount)+"条!<br/>");
+		}
+		return msg.toString();
+	}
 
+	@Transactional
+	public String marketDrivenImportData(MultipartFile file) throws Exception {
+		if(file.isEmpty()){
+			throw new ServiceException("请选择要导入的文件");
+		}
+		int saveCount = 0;
+		StringBuffer msg = new StringBuffer();
+		ExcelImport ei = new ExcelImport(file,2,0);
+		List<ResearchReportMarketDrivenDto> list = ei.getDataList(ResearchReportMarketDrivenDto.class, new String[0]);
+		if(list != null && list.size() > 0){
+			for(int i = 0; i < list.size(); i++){
+				boolean isSave = true;
+				ResearchReportMarketDrivenDto dto = list.get(i);
+				if(StringUtils.isBlank(dto.getReportCode())){
+					msg.append("第"+(i+1)+"行,报告代码不能为空!");
+					isSave = false;
+				}
+				if(StringUtils.isBlank(dto.getReportRegion())){
+					msg.append("第"+(i+1)+"行,版本不能为空!");
+					isSave = false;
+				}
+				if(StringUtils.isBlank(dto.getMarketDriven())){
+					msg.append("第"+(i+1)+"行,市场驱动不能为空!");
+					isSave = false;
+				}
+				if(isSave){
+					try {
+						ResearchReport where = new ResearchReport();
+						where.setReportCode(dto.getReportCode());
+						where.setReportRegion(dto.getReportRegion());
+						ResearchReport researchReport = dao.getByEntity(where);
+						if (researchReport != null) {
+							researchReport.setMarketDriven(String.format(Constants.textFormat, dto.getMarketDriven()));
+							saveCount += dao.update(researchReport);
+						} else {
+							msg.append("第"+(i+1)+"行,研究报告对应为空!");
+						}
+					} catch (Exception e) {
+						msg.append("第"+(i+1)+"行,研究报告报告代码与版本存在重复!");
+					}
+				}
+			}
+		}else {
+			msg.append("数据为空,导入失败!");
+		}
+
+		// 全部保存
+		int total = list.size();
+		if(total == saveCount){
+			msg.insert(0,"数据导入成功,共"+saveCount+"条");
+		}else if(saveCount > 0){
+			msg.insert(0,"数据部分导入成功,成功"+saveCount+"条,失败"+(total - saveCount)+"条!<br/>");
+		}
+		return msg.toString();
+	}
 }

+ 99 - 14
modules/report/src/main/java/com/jeesite/modules/report/web/ResearchReportController.java

@@ -11,6 +11,8 @@ import com.jeesite.common.utils.excel.ExcelExport;
 import com.jeesite.common.web.BaseController;
 import com.jeesite.modules.report.async.ResearchReportAsyncService;
 import com.jeesite.modules.report.dto.ResearchReportDto;
+import com.jeesite.modules.report.dto.ResearchReportMarketDrivenDto;
+import com.jeesite.modules.report.dto.ResearchReportMarketScaleDto;
 import com.jeesite.modules.report.entity.ResearchReport;
 import com.jeesite.modules.report.service.ResearchReportService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -54,8 +56,10 @@ public class ResearchReportController extends BaseController {
 	@Value("${file.baseDir}")
 	private String basePath;
 	private static final String TEMP_PATH = "/temp";
-	private static final String marketZH = "市场概况";
-	private static final String marketEN = "Market Profile";
+	private static final String marketScaleZH = "市场规模";
+	private static final String marketScaleEN = "Market Scale";
+	private static final String marketDrivenZH = "市场驱动";
+	private static final String marketDrivenEN = "Market Driven";
 
 	/**
 	 * 获取数据
@@ -204,6 +208,58 @@ public class ResearchReportController extends BaseController {
 		return renderResult(Global.TRUE, text(msg));
 	}
 
+	/**
+	 * 市场规模下载模板
+	 * @param response
+	 */
+	@RequestMapping(value = "/marketScaleDownloadTemplate")
+	@RequiresPermissions("report:researchReport:import")
+	public void marketScaleDownloadTemplate(HttpServletResponse response){
+		List<ResearchReportMarketScaleDto> list = ListUtils.newArrayList();
+		try(ExcelExport ee = new ExcelExport("市场规模导入数据",ResearchReportMarketScaleDto.class)){
+			ee.setDataList(list).write(response,"市场规模导入数据.xlsx");
+		}
+	}
+
+	/**
+	 * 市场规模导入
+	 * @param file
+	 * @return
+	 */
+	@RequestMapping(value = "/marketScaleImportData")
+	@RequiresPermissions("report:researchReport:import")
+	@ResponseBody
+	public String marketScaleImportData(MultipartFile file) throws Exception {
+		String msg = researchReportService.marketScaleImportData(file);
+		return renderResult(Global.TRUE, text(msg));
+	}
+
+	/**
+	 * 市场驱动下载模板
+	 * @param response
+	 */
+	@RequestMapping(value = "/marketDrivenDownloadTemplate")
+	@RequiresPermissions("report:researchReport:import")
+	public void marketDrivenDownloadTemplate(HttpServletResponse response){
+		List<ResearchReportMarketScaleDto> list = ListUtils.newArrayList();
+		try(ExcelExport ee = new ExcelExport("市场驱动导入数据", ResearchReportMarketDrivenDto.class)){
+			ee.setDataList(list).write(response,"市场驱动导入数据.xlsx");
+		}
+	}
+
+	/**
+	 * 市场驱动导入
+	 * @param file
+	 * @return
+	 */
+	@RequestMapping(value = "/marketDrivenImportData")
+	@RequiresPermissions("report:researchReport:import")
+	@ResponseBody
+	public String marketDrivenImportData(MultipartFile file) throws Exception {
+		String msg = researchReportService.marketDrivenImportData(file);
+		return renderResult(Global.TRUE, text(msg));
+	}
+
 	/**
 	 * 导出txt格式
 	 * @param researchReport
@@ -218,14 +274,24 @@ public class ResearchReportController extends BaseController {
 			sb.append(vo.getTitle());	//标题
 			sb.append("\r\r");
 			sb.append(Html2PlainTxtUtils.convert(vo.getReportScopeHtml()));	//研究范围
-			if (StringUtils.isNotEmpty(vo.getGeneralization())) {
+			if (StringUtils.isNotEmpty(vo.getMarketScale())) {
+				sb.append("\r\r\r\r");
+				if (Constants.lang.ZH_CH.equals(vo.getLang())) {
+					sb.append(marketScaleZH + "\r\r");
+				} else {
+					sb.append(marketScaleEN + "\r\r");
+				}
+				sb.append(Html2PlainTxtUtils.convert(vo.getMarketScale()));
+			}
+			sb.append("\r\r");
+			if (StringUtils.isNotEmpty(vo.getMarketDriven())) {
 				sb.append("\r\r\r\r");
 				if (Constants.lang.ZH_CH.equals(vo.getLang())) {
-					sb.append(marketZH + "\r\r");
+					sb.append(marketDrivenZH + "\r\r");
 				} else {
-					sb.append(marketEN + "\r\r");
+					sb.append(marketDrivenEN + "\r\r");
 				}
-				sb.append(Html2PlainTxtUtils.convert(vo.getGeneralization()));
+				sb.append(Html2PlainTxtUtils.convert(vo.getMarketDriven()));
 			}
 			sb.append("\r\r");
 			sb.append(Html2PlainTxtUtils.convert(vo.getDirectoryHtml()));		//正文目录
@@ -293,14 +359,23 @@ public class ResearchReportController extends BaseController {
 		if(!list.isEmpty()){
 			listExcel = list.stream().map(vo -> {
 				vo.setReportScopeHtml(Html2PlainTxtUtils.convert(vo.getReportScopeHtml()));
-				if (StringUtils.isNotEmpty(vo.getGeneralization())) {
+				if (StringUtils.isNotEmpty(vo.getMarketScale())) {
+					String str;
+					if (Constants.lang.ZH_CH.equals(vo.getLang())) {
+						str = marketScaleZH;
+					} else {
+						str = marketScaleEN;
+					}
+					vo.setReportScopeHtml(vo.getReportScopeHtml() + lineStr + lineStr + lineStr + lineStr + str + lineStr + lineStr + Html2PlainTxtUtils.convert(vo.getMarketScale()));
+				}
+				if (StringUtils.isNotEmpty(vo.getMarketDriven())) {
 					String str;
 					if (Constants.lang.ZH_CH.equals(vo.getLang())) {
-						str = marketZH;
+						str = marketDrivenZH;
 					} else {
-						str = marketEN;
+						str = marketDrivenEN;
 					}
-					vo.setReportScopeHtml(vo.getReportScopeHtml() + lineStr + lineStr + lineStr + lineStr + str + lineStr + lineStr + Html2PlainTxtUtils.convert(vo.getGeneralization()));
+					vo.setReportScopeHtml(vo.getReportScopeHtml() + lineStr + lineStr + lineStr + lineStr + str + lineStr + lineStr + Html2PlainTxtUtils.convert(vo.getMarketDriven()));
 				}
 				vo.setDirectoryHtml(Html2PlainTxtUtils.convert(vo.getDirectoryHtml()));
 				return vo;
@@ -335,14 +410,24 @@ public class ResearchReportController extends BaseController {
 				sb.append(vo.getTitle());	//标题
 				sb.append("\r\r");
 				sb.append(Html2PlainTxtUtils.convert(vo.getReportScopeHtml()));	//研究范围
-				if (StringUtils.isNotEmpty(vo.getGeneralization())) {
+				if (StringUtils.isNotEmpty(vo.getMarketScale())) {
+					sb.append("\r\r\r\r");
+					if (Constants.lang.ZH_CH.equals(vo.getLang())) {
+						sb.append(marketScaleZH + "\r\r");
+					} else {
+						sb.append(marketScaleEN + "\r\r");
+					}
+					sb.append(Html2PlainTxtUtils.convert(vo.getMarketScale()));
+				}
+				sb.append("\r\r");
+				if (StringUtils.isNotEmpty(vo.getMarketDriven())) {
 					sb.append("\r\r\r\r");
 					if (Constants.lang.ZH_CH.equals(vo.getLang())) {
-						sb.append(marketZH + "\r\r");
+						sb.append(marketDrivenZH + "\r\r");
 					} else {
-						sb.append(marketEN + "\r\r");
+						sb.append(marketDrivenEN + "\r\r");
 					}
-					sb.append(Html2PlainTxtUtils.convert(vo.getGeneralization()));
+					sb.append(Html2PlainTxtUtils.convert(vo.getMarketDriven()));
 				}
 				sb.append("\r\r");
 				sb.append(Html2PlainTxtUtils.convert(vo.getDirectoryHtml()));		//正文目录

+ 5 - 5
modules/report/src/main/resources/mappings/modules/report/ResearchReportDao.xml

@@ -44,7 +44,7 @@
 	</select>
 
 	<sql id="query_columns">
-		b.id,b.title,b.publish_date,b.outline,b.lang,b.web_title,b.report_region, b.generalization,
+		b.id,b.title,b.publish_date,b.outline,b.lang,b.web_title,b.report_region, b.market_scale, b.market_driven,
 		c.name fileName
 	</sql>
 
@@ -190,7 +190,7 @@
 		parameterType="com.jeesite.modules.report.entity.ResearchReport">
 		select b.id,b.report_region,b.title,b.publish_date,b.report_code,b.report_scope_html,b.directory_html,
 			b.charts_html,b.context_html,b.market_type,b.status,b.lang,b.fileName,b.context,
-			b.web_title,b.report_type,b.remarks, b.generalization
+			b.web_title,b.report_type,b.remarks, b.market_scale, b.market_driven
 		from research_report_view b
 		where b.report_id = #{report.id}
 		<if test="report.lang != null and report.lang !=''">and b.lang = #{report.lang}</if>
@@ -199,7 +199,7 @@
 	<sql id="researchReport_column">
 		id,update_date,remarks,original_title,title,publish_date,context,outline,market_type,report_code,lang,
 		sale_unit,price_unit,report_type,report_region,related_id,
-		companies,types,applications,web_title,generalization
+		companies,types,applications,web_title,market_scale, market_driven
 	</sql>
 
 	<select id="findListByIds" resultType="com.jeesite.modules.report.entity.ResearchReport"
@@ -231,7 +231,7 @@
 	<sql id="findResearchReportList">
 		id,update_date,remarks,original_title,title,publish_date,context,outline,market_type,report_code,lang,
 		sale_unit,price_unit,report_type,report_region,related_id,
-		companies,types,applications,web_title,generalization
+		companies,types,applications,web_title,market_scale, market_driven
 	</sql>
 
 	<select id="findResearchReportCount" parameterType="com.jeesite.modules.report.entity.ResearchReport"
@@ -261,7 +261,7 @@
 
 	<select id="findListByIdArr" parameterType="java.lang.String"
 		resultType="com.jeesite.modules.report.dto.ResearchReportDto">
-		select title,report_scope_html,market_type,directory_html,generalization,lang
+		select title,report_scope_html,market_type,directory_html,market_scale, market_driven,lang
 		from research_report_view where report_id in
 		<foreach collection="ids.split(',')" item="id" separator="," open="(" close=")">
 			#{id}