Jelajahi Sumber

Merge branch 'master' of http://124.70.43.205:3000/wangchangsheng/evaluation

chenminghua 1 tahun lalu
induk
melakukan
90d6835bc2

+ 5 - 0
ims-service/ims-eval/pom.xml

@@ -70,6 +70,11 @@
             <artifactId>poi-ooxml</artifactId>
             <version>3.17-beta1</version>
         </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.28</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 2 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/controller/DepartmentPerformanceAppraisalRatingController.java

@@ -34,7 +34,7 @@ public class DepartmentPerformanceAppraisalRatingController {
 	 * @param annual             月度
 	 * @return 结果
 	 */
-	@GetMapping(value = "list")
+	@GetMapping(value = "/list")
 	public R list(
 		@RequestParam(value = "pageNum") Integer pageNum,
 		@RequestParam(value = "pageSize") Integer pageSize,
@@ -49,7 +49,7 @@ public class DepartmentPerformanceAppraisalRatingController {
 	 *
 	 * @return 结果
 	 */
-	@GetMapping(value = "listAll")
+	@GetMapping(value = "/listAll")
 	public R listAll() {
 		List<EvaluationDeptRating> list = evaluationDeptRatingService.list();
 		return R.ok().data(list);

+ 92 - 4
ims-service/ims-eval/src/main/java/com/ims/eval/controller/DepartmentalPerformanceIndicatorAssessmentController.java

@@ -1,16 +1,23 @@
 package com.ims.eval.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ims.eval.entity.EvaluationDept;
 import com.ims.eval.entity.EvaluationDeptBusinessAssessment;
+import com.ims.eval.entity.EvaluationDeptBusinessContent;
 import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IEvaluationDeptBusinessAssessmentService;
 import com.ims.eval.service.IEvaluationDeptBusinessContentService;
-import com.ims.eval.service.IEvaluationDeptBusinessPlanService;
+import com.ims.eval.util.WordUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.util.*;
 
 /**
  * 本部部门业绩指标考核
@@ -26,6 +33,9 @@ public class DepartmentalPerformanceIndicatorAssessmentController {
 	@Autowired
 	private IEvaluationDeptBusinessAssessmentService evaluationDeptBusinessAssessmentService;
 
+	@Autowired
+	private IEvaluationDeptBusinessContentService evaluationDeptBusinessContentService;
+
 	/**
 	 * 部门考评业务列表信息(分页)
 	 *
@@ -37,7 +47,7 @@ public class DepartmentalPerformanceIndicatorAssessmentController {
 	 * @param stage              流程状态
 	 * @return 结果
 	 */
-	@GetMapping(value = "list")
+	@GetMapping(value = "/list")
 	public R list(
 		@RequestParam(value = "pageNum") Integer pageNum,
 		@RequestParam(value = "pageSize") Integer pageSize,
@@ -54,9 +64,87 @@ public class DepartmentalPerformanceIndicatorAssessmentController {
 	 *
 	 * @return 结果
 	 */
-	@GetMapping(value = "listAll")
+	@GetMapping(value = "/listAll")
 	public R listAll() {
 		List<EvaluationDeptBusinessAssessment> list = evaluationDeptBusinessAssessmentService.list();
 		return R.ok().data(list);
 	}
+
+	/**
+	 * 生成报表
+	 *
+	 * @return 结果
+	 */
+	@GetMapping(value = "/generateReport/{id}")
+	public R generateReport(@PathVariable("id") String id) throws Exception {
+		Map<String, Object> dataMap = new HashMap<>();
+		EvaluationDeptBusinessAssessment evaluationDeptBusinessAssessment = evaluationDeptBusinessAssessmentService.getById(id);
+		String[] deptIds = evaluationDeptBusinessAssessment.getDeptId().split(",");
+		String[] deptNames = evaluationDeptBusinessAssessment.getDeptName().split(",");
+		List<EvaluationDept> evaluationDeptList = new ArrayList<>();
+		for (int i = 0; i < deptIds.length; i++) {
+			EvaluationDept evaluationDept = new EvaluationDept();
+			evaluationDept.setDeptId(deptIds[i]);
+			evaluationDept.setDeptName(deptNames[i]);
+			List<EvaluationDeptBusinessContent> evaluationDeptBusinessContentList = evaluationDeptBusinessContentService.selectEvaluationDeptBusinessContentListByBusinessPlanId(id, deptIds[i]);
+			evaluationDept.setList(evaluationDeptBusinessContentList);
+			evaluationDeptList.add(evaluationDept);
+		}
+		dataMap.put("appraisalYear", evaluationDeptBusinessAssessment.getAppraisalYear());
+		dataMap.put("list", evaluationDeptList);
+		String os = System.getProperty("os.name");
+		String path;
+		if (os.toLowerCase().startsWith("win")) {  //如果是Windows系统
+			path = "D:/home/statement/" ;
+		} else {  //linux和mac
+			path = "/home/dbkp/statement/" ;
+		}
+		String fileName = evaluationDeptBusinessAssessment.getAppraisalYear() + "年度经营业绩完成情况.doc" ;
+		WordUtil.generateWord(dataMap, "template_dbkp.ftl", path + fileName);
+		return R.ok().data(fileName);
+	}
+
+	/**
+	 * 下载报表
+	 *
+	 * @param request
+	 * @param response
+	 * @param reportName
+	 * @throws IOException
+	 */
+	@GetMapping(value = "/downloadReport")
+	public void downloadReport(HttpServletRequest request, HttpServletResponse response, String reportName) throws IOException {
+		String os = System.getProperty("os.name");
+		String path;
+		if (os.toLowerCase().startsWith("win")) { //如果是Windows系统
+			path = "D:/home/statement/" ;
+		} else { //linux和mac
+			path = "/home/dbkp/statement/" ;
+		}
+		InputStream inputStream = null;
+		ServletOutputStream outputStream = null;
+		try {
+			File file = new File(path + reportName);
+			inputStream = Files.newInputStream(file.toPath());
+			response.setCharacterEncoding("UTF-8");
+			response.setContentType("application/msword");
+			response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
+			response.addHeader("Access-Control-Expose-Headers", "token, uid, Content-Disposition");
+			response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
+			response.addHeader("Access-Control-Allow-Headers", "Content-Type");
+			response.addHeader("Access-Control-Allow-Credentials", "true");
+			// 设置浏览器以下载的方式处理该文件名
+			response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(reportName, "UTF-8"))));
+			outputStream = response.getOutputStream();
+			byte[] buffer = new byte[512];  // 缓冲区
+			int bytesToRead = -1;
+			// 通过循环将读入的Word文件的内容输出到浏览器中
+			while ((bytesToRead = inputStream.read(buffer)) != -1) {
+				outputStream.write(buffer, 0, bytesToRead);
+			}
+		} finally {
+			if (inputStream != null) inputStream.close();
+			if (outputStream != null) outputStream.close();
+		}
+	}
 }

+ 2 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/controller/DepartmentalPerformanceIndicatorPlanController.java

@@ -49,7 +49,7 @@ public class DepartmentalPerformanceIndicatorPlanController {
 	 * @param stage              流程状态
 	 * @return 结果
 	 */
-	@GetMapping(value = "list")
+	@GetMapping(value = "/list")
 	public R list(
 		@RequestParam(value = "pageNum") Integer pageNum,
 		@RequestParam(value = "pageSize") Integer pageSize,
@@ -66,7 +66,7 @@ public class DepartmentalPerformanceIndicatorPlanController {
 	 *
 	 * @return 结果
 	 */
-	@GetMapping(value = "listAll")
+	@GetMapping(value = "/listAll")
 	public R listAll() {
 		List<EvaluationDeptBusinessPlan> list = evaluationDeptBusinessPlanService.list();
 		return R.ok().data(list);

+ 0 - 8
ims-service/ims-eval/src/main/java/com/ims/eval/controller/EvaluationDeptController.java

@@ -1,9 +1,6 @@
 package com.ims.eval.controller;
 
 
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ims.common.utils.StringUtils;
@@ -13,15 +10,10 @@ import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IEvaluationDeptIndicatorItemService;
 import com.ims.eval.service.IEvaluationDeptIndicatorService;
 import com.ims.eval.service.IEvaluationDeptService;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
-import java.util.stream.Collectors;
-
-import static java.util.stream.Collectors.collectingAndThen;
-import static java.util.stream.Collectors.toCollection;
 
 /**
  * 考评部门配置

+ 3 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/dao/EvaluationDeptBusinessContentMapper.java

@@ -2,6 +2,7 @@ package com.ims.eval.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ims.eval.entity.EvaluationDeptBusinessContent;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -15,4 +16,6 @@ public interface EvaluationDeptBusinessContentMapper extends BaseMapper<Evaluati
 	List<EvaluationDeptBusinessContent> detailsList(String businessPlanId);
 
 	boolean removeByBusinessPlanId(String businessPlanId);
+
+    List<EvaluationDeptBusinessContent> selectEvaluationDeptBusinessContentListByBusinessPlanId(@Param("businessPlanId") String businessPlanId, @Param("deptId") String deptId);
 }

+ 3 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/entity/EvaluationDept.java

@@ -102,4 +102,7 @@ public class EvaluationDept extends Model {
 	 */
 	@TableField(exist = false)
 	private List<EvaluationDeptIndicator> evaluationDeptIndicatorList;
+
+	@TableField(exist = false)
+	private List<EvaluationDeptBusinessContent> list;
 }

+ 2 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluationDeptBusinessContentService.java

@@ -18,4 +18,6 @@ public interface IEvaluationDeptBusinessContentService extends IService<Evaluati
 	boolean removeByBusinessPlanId(String businessPlanId);
 
 	boolean saveOrUpdateBatch(List<EvaluationDeptBusinessContent> evaluationDeptBusinessContentList);
+
+	List<EvaluationDeptBusinessContent> selectEvaluationDeptBusinessContentListByBusinessPlanId(String businessPlanId, String deptId);
 }

+ 11 - 4
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluationDeptBusinessContentServiceImpl.java

@@ -2,9 +2,11 @@ package com.ims.eval.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.common.utils.StringUtils;
+import com.ims.eval.config.CustomException;
 import com.ims.eval.dao.EvaluationDeptBusinessContentMapper;
 import com.ims.eval.entity.DataDictionary;
 import com.ims.eval.entity.EvaluationDeptBusinessContent;
+import com.ims.eval.entity.Myuser;
 import com.ims.eval.service.IDataDictionaryService;
 import com.ims.eval.service.IEvaluationDeptBusinessContentService;
 import com.ims.eval.service.IUserService;
@@ -12,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -31,7 +34,7 @@ public class EvaluationDeptBusinessContentServiceImpl extends ServiceImpl<Evalua
 	@Override
 	public List<EvaluationDeptBusinessContent> detailsList(String businessPlanId, HttpServletRequest request) {
 		List<EvaluationDeptBusinessContent> evaluationDeptBusinessContentList = baseMapper.detailsList(businessPlanId);
-		/*Myuser myuser = userService.getSysUser(request);
+		Myuser myuser = userService.getSysUser(request);
 		if (null != myuser) {
 			throw new CustomException("暂无权限");
 		} else {
@@ -49,10 +52,9 @@ public class EvaluationDeptBusinessContentServiceImpl extends ServiceImpl<Evalua
 				evaluationDeptBusinessContent.setUpdateMark(updateMark);
 			}
 		}
-		return null;*/
-		evaluationDeptBusinessContentList.stream().forEach(i -> {
+		/*evaluationDeptBusinessContentList.stream().forEach(i -> {
 			i.setUpdateMark(true);
-		});
+		});*/
 		return evaluationDeptBusinessContentList;
 	}
 
@@ -76,4 +78,9 @@ public class EvaluationDeptBusinessContentServiceImpl extends ServiceImpl<Evalua
 		}
 		return b;
 	}
+
+	@Override
+	public List<EvaluationDeptBusinessContent> selectEvaluationDeptBusinessContentListByBusinessPlanId(String businessPlanId, String deptId) {
+		return baseMapper.selectEvaluationDeptBusinessContentListByBusinessPlanId(businessPlanId, deptId);
+	}
 }

+ 49 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/util/WordUtil.java

@@ -0,0 +1,49 @@
+package com.ims.eval.util;
+
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.Version;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Map;
+
+/**
+ * @author hlf
+ * @date 2023/5/10 14:52
+ * 文件说明:导出word文档工具类
+ */
+public class WordUtil {
+
+	/**
+	 * 生成 word 文档方法
+	 *
+	 * @param dataMap      要填充的数据
+	 * @param templateName 模版名称
+	 * @param fileName     要输出的文件路径
+	 * @throws Exception 抛出的异常
+	 */
+	public static void generateWord(Map<String, Object> dataMap, String templateName, String fileName) throws Exception {
+		// 设置FreeMarker的版本和编码格式
+		Configuration configuration = new Configuration(new Version("2.3.28"));
+		configuration.setDefaultEncoding("UTF-8");
+		configuration.setClassicCompatible(true);
+		// 设置FreeMarker生成Word文档所需要的模板的路径
+		// configuration.setDirectoryForTemplateLoading(new File("D:/home/templates"));
+		// 此处把模版文件都放在 resources 下的 templates 中
+		configuration.setClassForTemplateLoading(WordUtil.class, "/templates");
+		// 设置FreeMarker生成Word文档所需要的模板
+		Template tem = configuration.getTemplate(templateName, "UTF-8");
+		// 创建一个Word文档的输出流
+		Writer out = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(new File(fileName).toPath()), StandardCharsets.UTF_8));
+		// FreeMarker使用Word模板和数据生成Word文档
+		tem.process(dataMap, out);
+		out.flush();
+		out.close();
+	}
+}

+ 5 - 0
ims-service/ims-eval/src/main/resources/mappers/EvaluationDeptBusinessContentMapper.xml

@@ -52,6 +52,11 @@
         where business_plan_id = #{businessPlanId} order by dept_name asc, serial_number asc
     </select>
 
+    <select id="selectEvaluationDeptBusinessContentListByBusinessPlanId" resultType="com.ims.eval.entity.EvaluationDeptBusinessContent">
+        <include refid="selectEvaluationDeptBusinessContentVo"/>
+        where business_plan_id = #{businessPlanId} and dept_id = #{deptId} order by serial_number asc
+    </select>
+
     <delete id="removeByBusinessPlanId">
         delete from evaluation_dept_business_content where business_plan_id = #{businessPlanId}
     </delete>

File diff ditekan karena terlalu besar
+ 3513 - 0
ims-service/ims-eval/src/main/resources/templates/template_dbkp.ftl