浏览代码

考评规则配置、单位权重配置、业绩考核系数配置、党建考核系数配置功能完善

hlf 11 月之前
父节点
当前提交
b46eff46d0
共有 19 个文件被更改,包括 425 次插入121 次删除
  1. 9 35
      ims-service/ims-eval/src/main/java/com/ims/eval/controller/EvaluateRuleController.java
  2. 31 0
      ims-service/ims-eval/src/main/java/com/ims/eval/controller/MultipleBrandController.java
  3. 3 2
      ims-service/ims-eval/src/main/java/com/ims/eval/controller/PartyBuildingMultiplierController.java
  4. 16 14
      ims-service/ims-eval/src/main/java/com/ims/eval/controller/YearOperatingCoefficientController.java
  5. 3 3
      ims-service/ims-eval/src/main/java/com/ims/eval/dao/PartyBuildingMultiplierMapper.java
  6. 1 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IBinSectionService.java
  7. 1 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IBinStageService.java
  8. 6 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluateRuleService.java
  9. 9 0
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IMultipleBrandService.java
  10. 2 3
      ims-service/ims-eval/src/main/java/com/ims/eval/service/IPartyBuildingMultiplierService.java
  11. 12 2
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/BinSectionServiceImpl.java
  12. 12 3
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/BinStageServiceImpl.java
  13. 113 3
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluateRuleServiceImpl.java
  14. 178 19
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/MultipleBrandServiceImpl.java
  15. 15 16
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationRuleServiceImpl.java
  16. 4 14
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/PartyBuildingMultiplierServiceImpl.java
  17. 4 5
      ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/YearGroupCoefficientServiceImpl.java
  18. 1 2
      ims-service/ims-eval/src/main/resources/mappers/MultipleBrandMapper.xml
  19. 5 0
      ims-service/ims-eval/src/main/resources/mappers/PartyBuildingMultiplierMapper.xml

+ 9 - 35
ims-service/ims-eval/src/main/java/com/ims/eval/controller/EvaluateRuleController.java

@@ -6,7 +6,6 @@ import com.ims.eval.config.CustomException;
 import com.ims.eval.entity.EvaluateRule;
 import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IEvaluateRuleService;
-import com.ims.eval.util.ExcelUtil;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
@@ -15,8 +14,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -138,41 +135,18 @@ public class EvaluateRuleController {
 	}
 
 	/**
+	 * 导入模板
+	 */
+	@GetMapping(value = "/importTemplate", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	public void importTemplate(HttpServletResponse response) throws IOException {
+		evaluateRuleService.importTemplate(response);
+	}
+
+	/**
 	 * 导入
 	 */
 	@PostMapping(value = "/importExcel")
 	public R importExcel(@RequestParam("file") MultipartFile file) {
-		if (!file.isEmpty()) {
-			try {
-				//获取原始的文件名
-				String originalFilename = file.getOriginalFilename();
-				//获取文件类型
-				String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
-				//默认从第一行开始读取
-				int startRows = 1;
-				//获取输入流
-				InputStream is = file.getInputStream();
-				List<EvaluateRule> evaluateRuleList = new ArrayList<>();
-				//Excel导入导出的单元类
-				List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);
-				//遍历Excel表每一行的数据
-				for (String[] str : strings) {
-					EvaluateRule evaluateRule = new EvaluateRule();
-					evaluateRule.setId(str[0]);
-					evaluateRule.setRuleName(str[1]);
-					evaluateRule.setDes(str[6]);
-					evaluateRuleList.add(evaluateRule);
-				}
-				boolean b = evaluateRuleService.updateBatchById(evaluateRuleList);
-				if (b) {
-					return R.ok().data(b);
-				} else {
-					return R.error("导入失败!");
-				}
-			} catch (Exception e) {
-				return R.customError(e.getMessage()).data("失败!");
-			}
-		}
-		return R.error("上传文件为空!");
+		return evaluateRuleService.importExcel(file);
 	}
 }

+ 31 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/controller/MultipleBrandController.java

@@ -8,8 +8,12 @@ import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IMultipleBrandService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
@@ -119,4 +123,31 @@ public class MultipleBrandController {
 		}
 	}
 
+	/**
+	 * 导出
+	 */
+	@GetMapping(value = "/exportExcel", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	public void exportExcel(@RequestParam(value = "binSection", required = false) String binSection,
+							@RequestParam(value = "checkCycle", required = false) String checkCycle,
+							@RequestParam(value = "year", required = false) String year,
+							HttpServletResponse response) throws IOException {
+		multipleBrandService.exportExcel(binSection, checkCycle, year, response);
+	}
+
+	/**
+	 * 导入模板
+	 */
+	@GetMapping(value = "/importTemplate", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	public void importTemplate(HttpServletResponse response) throws IOException {
+		multipleBrandService.importTemplate(response);
+	}
+
+	/**
+	 * 导入
+	 */
+	@PostMapping(value = "/importExcel")
+	public R importExcel(@RequestParam("file") MultipartFile file) {
+		return multipleBrandService.importExcel(file);
+	}
+
 }

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

@@ -57,9 +57,10 @@ public class PartyBuildingMultiplierController {
 		          @RequestParam(value = "id", required = false) String id,
 				  @RequestParam(value = "departId", required = false) String departId,
 				  @RequestParam(value = "sectionId", required = false) String sectionId,
-				  @RequestParam(value = "year", required = false) String year) {
+				  @RequestParam(value = "year", required = false) String year,
+				  @RequestParam(value = "organizationName", required = false) String organizationName) {
 
-		IPage<PartyBuildingMultiplier> list = iPartyBuildingMultiplierService.listAll(pageNum,pageSize,id, departId, sectionId, year);
+		IPage<PartyBuildingMultiplier> list = iPartyBuildingMultiplierService.listAll(pageNum,pageSize,id, departId, sectionId, year, organizationName);
 		return R.ok().data(list);
 
 	}

+ 16 - 14
ims-service/ims-eval/src/main/java/com/ims/eval/controller/YearOperatingCoefficientController.java

@@ -1,6 +1,7 @@
 package com.ims.eval.controller;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ims.eval.config.CustomException;
 import com.ims.eval.entity.YearOperatingCoefficient;
@@ -165,20 +166,21 @@ public class YearOperatingCoefficientController {
 					YearOperatingCoefficient y = new YearOperatingCoefficient();
 					y.setYearGroupCoefficientId(id);
 					y.setId(str[0]);
-					y.setOrganizationName(str[1]);
-					y.setZzc(Double.parseDouble(str[2]));
-					y.setK1(Double.parseDouble(str[3]));
-					y.setJzs(Double.parseDouble(str[4]));
-					y.setK2(Double.parseDouble(str[5]));
-					y.setZmlrze(Double.parseDouble(str[6]));
-					y.setFdl(Double.parseDouble(str[7]));
-					y.setDdlr(Double.parseDouble(str[8]));
-					y.setK3(Double.parseDouble(str[9]));
-					y.setDy(Double.parseDouble(str[10]));
-					y.setK4(Double.parseDouble(str[11]));
-					y.setK(Double.parseDouble(str[12]));
-					y.setCreateName(str[13]);
-					y.setCreateTime(simpleDateFormat.parse(str[14]));
+					y.setOrganizationId(str[1]);
+					y.setOrganizationName(str[2]);
+					y.setZzc(Double.parseDouble(str[3]));
+					y.setK1(Double.parseDouble(str[4]));
+					y.setJzs(Double.parseDouble(str[5]));
+					y.setK2(Double.parseDouble(str[6]));
+					y.setZmlrze(Double.parseDouble(str[7]));
+					y.setFdl(Double.parseDouble(str[8]));
+					y.setDdlr(Double.parseDouble(str[9]));
+					y.setK3(Double.parseDouble(str[10]));
+					y.setDy(Double.parseDouble(str[11]));
+					y.setK4(Double.parseDouble(str[12]));
+					y.setK(Double.parseDouble(str[13]));
+					y.setCreateName(str[14]);
+					y.setCreateTime(DateUtil.parse(str[15]));
 					bindingList.add(y);
 				}
 				boolean b = yearOperatingCoefficientService.saveOrUpdateBatch(bindingList);

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

@@ -1,10 +1,9 @@
 package com.ims.eval.dao;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ims.eval.entity.PartyBuildingMultiplier;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -21,5 +20,6 @@ public interface PartyBuildingMultiplierMapper extends BaseMapper<PartyBuildingM
 											 @Param("id") String id,
 											 @Param("departId") String departId,
 											 @Param("sectionId") String sectionId,
-											 @Param("year") String year);
+											 @Param("year") String year,
+											 @Param("organizationName") String organizationName);
 }

+ 1 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IBinSectionService.java

@@ -17,4 +17,5 @@ public interface IBinSectionService extends IService<BinSection> {
 
 	List<BinSection> list(String id, String sectionName, String sectionCode);
 
+    BinSection getBinSectionBySectionName(String sectionName);
 }

+ 1 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IBinStageService.java

@@ -17,4 +17,5 @@ public interface IBinStageService extends IService<BinStage> {
 
 	List<BinStage> list(String id, String stageName, String stageCode);
 
+	BinStage getBinStageByStageName(String stageName);
 }

+ 6 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IEvaluateRuleService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ims.eval.entity.EvaluateRule;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ims.eval.entity.dto.response.EvaluateRuleInfoResDTO;
+import com.ims.eval.entity.dto.result.R;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -39,4 +41,8 @@ public interface IEvaluateRuleService extends IService<EvaluateRule> {
 	void exportExcel(String binSection, String checkCycle, String year, HttpServletResponse response) throws IOException;
 
 	EvaluateRule getEvaluateRuleByRuleName(String evaluateRuleName, String year);
+
+	void importTemplate(HttpServletResponse response) throws IOException;
+
+	R importExcel(MultipartFile file);
 }

+ 9 - 0
ims-service/ims-eval/src/main/java/com/ims/eval/service/IMultipleBrandService.java

@@ -3,7 +3,11 @@ package com.ims.eval.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ims.eval.entity.MultipleBrand;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ims.eval.entity.dto.result.R;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -22,4 +26,9 @@ public interface IMultipleBrandService extends IService<MultipleBrand> {
 
 	List<MultipleBrand> getMultipleBranList2(String organizationId,String parentId,String  binSection,String  checkCycle,String year,String month);
 
+	void exportExcel(String binSection, String checkCycle, String year, HttpServletResponse response) throws IOException;
+
+	void importTemplate(HttpServletResponse response) throws IOException;
+
+	R importExcel(MultipartFile file);
 }

+ 2 - 3
ims-service/ims-eval/src/main/java/com/ims/eval/service/IPartyBuildingMultiplierService.java

@@ -1,9 +1,8 @@
 package com.ims.eval.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.ims.eval.entity.PartyBuildingMultiplier;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ims.eval.entity.dto.response.PartyBuildingMultiplierDto;
+import com.ims.eval.entity.PartyBuildingMultiplier;
 
 import java.util.List;
 
@@ -17,7 +16,7 @@ import java.util.List;
  */
 public interface IPartyBuildingMultiplierService extends IService<PartyBuildingMultiplier> {
 
-    IPage<PartyBuildingMultiplier> listAll(Integer pageNum,Integer pageSize,String id, String departId, String sectionId, String year);
+    IPage<PartyBuildingMultiplier> listAll(Integer pageNum,Integer pageSize,String id, String departId, String sectionId, String year, String organizationName);
 
     List<PartyBuildingMultiplier> listByParam(String id, String departId, String sectionId, String year);
 }

+ 12 - 2
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/BinSectionServiceImpl.java

@@ -1,12 +1,13 @@
 package com.ims.eval.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ims.common.utils.StringUtils;
 import com.ims.eval.cache.CacheContext;
 import com.ims.eval.config.CustomException;
-import com.ims.eval.entity.BinSection;
 import com.ims.eval.dao.BinSectionMapper;
+import com.ims.eval.entity.BinSection;
 import com.ims.eval.service.IBinSectionService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,6 +39,15 @@ public class BinSectionServiceImpl extends ServiceImpl<BinSectionMapper, BinSect
 		return list;
 	}
 
+	@Override
+	public BinSection getBinSectionBySectionName(String sectionName) {
+		QueryWrapper<BinSection> qw = new QueryWrapper();
+		if (StringUtils.isNotEmpty(sectionName)) {
+			qw.lambda().eq(BinSection::getSectionName, sectionName);
+		}
+		return baseMapper.selectOne(qw);
+	}
+
 	@Transactional
 	@Override
 	public boolean saveOrUpdate(BinSection entity) {

+ 12 - 3
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/BinStageServiceImpl.java

@@ -1,12 +1,12 @@
 package com.ims.eval.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ims.common.utils.StringUtils;
 import com.ims.eval.config.CustomException;
-import com.ims.eval.entity.BinSection;
-import com.ims.eval.entity.BinStage;
 import com.ims.eval.dao.BinStageMapper;
+import com.ims.eval.entity.BinStage;
 import com.ims.eval.service.IBinStageService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,6 +36,15 @@ public class BinStageServiceImpl extends ServiceImpl<BinStageMapper, BinStage> i
 		return list;
 	}
 
+	@Override
+	public BinStage getBinStageByStageName(String stageName) {
+		QueryWrapper<BinStage> qw = new QueryWrapper();
+		if (StringUtils.isNotEmpty(stageName)) {
+			qw.lambda().eq(BinStage::getStageName, stageName);
+		}
+		return baseMapper.selectOne(qw);
+	}
+
 	@Transactional
 	@Override
 	public boolean saveOrUpdate(BinStage entity) {

+ 113 - 3
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/EvaluateRuleServiceImpl.java

@@ -8,19 +8,29 @@ import com.ims.common.utils.StringUtils;
 import com.ims.eval.cache.CacheContext;
 import com.ims.eval.config.CustomException;
 import com.ims.eval.dao.EvaluateRuleMapper;
+import com.ims.eval.entity.BinSection;
+import com.ims.eval.entity.BinStage;
 import com.ims.eval.entity.EvaluateRule;
 import com.ims.eval.entity.dto.response.EvaluateRuleInfoResDTO;
+import com.ims.eval.entity.dto.result.R;
+import com.ims.eval.service.IBinSectionService;
+import com.ims.eval.service.IBinStageService;
 import com.ims.eval.service.IEvaluateRuleService;
+import com.ims.eval.util.ExcelUtil;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -36,6 +46,12 @@ import java.util.List;
 @Service
 public class EvaluateRuleServiceImpl extends ServiceImpl<EvaluateRuleMapper, EvaluateRule> implements IEvaluateRuleService {
 
+	@Autowired
+	private IBinStageService binStageService;
+
+	@Autowired
+	private IBinSectionService binSectionService;
+
 	@Override
 	public IPage<EvaluateRule> list(Integer pageNum, Integer pageSize, String id, String des, String binSection, String binStage) {
 
@@ -235,7 +251,7 @@ public class EvaluateRuleServiceImpl extends ServiceImpl<EvaluateRuleMapper, Eva
 	@Override
 	public void exportExcel(String binSection, String checkCycle, String year, HttpServletResponse response) throws IOException {
 		// 设置响应头信息,以附件形式下载
-		response.setHeader("Content-Disposition", "attachment; filename=evaluate_rule_data.xlsx");
+		response.setHeader("Content-Disposition", "attachment; filename=evaluate_rule.xlsx");
 		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
 
 		// 创建新的Excel工作簿
@@ -267,9 +283,9 @@ public class EvaluateRuleServiceImpl extends ServiceImpl<EvaluateRuleMapper, Eva
 			row.createCell(1).setCellValue(evaluateRule.getRuleName());
 			row.createCell(2).setCellValue(evaluateRule.getBinStageName());
 			row.createCell(3).setCellValue(evaluateRule.getBinSectionName());
-			if ("NDKP".equals(evaluateRule.getCheckCycle())){
+			if ("NDKP".equals(evaluateRule.getCheckCycle())) {
 				checkCycle = "年度考评";
-			}else {
+			} else {
 				checkCycle = "月/季度考评";
 			}
 			row.createCell(4).setCellValue(checkCycle);
@@ -292,6 +308,99 @@ public class EvaluateRuleServiceImpl extends ServiceImpl<EvaluateRuleMapper, Eva
 	}
 
 	@Override
+	public void importTemplate(HttpServletResponse response) throws IOException {
+		// 设置响应头信息,以附件形式下载
+		response.setHeader("Content-Disposition", "attachment; filename=evaluate_rule.xlsx");
+		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+
+		// 创建新的Excel工作簿
+		Workbook workbook = new XSSFWorkbook();
+
+		// 创建新的工作表
+		Sheet sheet = workbook.createSheet("Sheet1");
+
+		// 创建表头
+		Row headerRow = sheet.createRow(0);
+		List<String> headers = Arrays.asList("规则名称", "业务阶段", "业务属性", "考评周期", "年份", "描述");
+		for (int i = 0; i < headers.size(); i++) {
+			Cell cell = headerRow.createCell(i);
+			cell.setCellValue(headers.get(i));
+		}
+
+		// 将工作簿写入到输出流
+		try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+			workbook.write(outputStream);
+			response.getOutputStream().write(outputStream.toByteArray());
+			response.getOutputStream().flush();
+		}
+
+		// 关闭工作簿
+		workbook.close();
+	}
+
+	@Override
+	public R importExcel(MultipartFile file) {
+		if (!file.isEmpty()) {
+			try {
+				//获取原始的文件名
+				String originalFilename = file.getOriginalFilename();
+				//获取文件类型
+				String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
+				//默认从第一行开始读取
+				int startRows = 1;
+				//获取输入流
+				InputStream is = file.getInputStream();
+				List<EvaluateRule> evaluateRuleList = new ArrayList<>();
+				//Excel导入导出的单元类
+				List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);
+				//遍历Excel表每一行的数据
+				for (String[] str : strings) {
+					EvaluateRule evaluateRule = new EvaluateRule();
+					if (OrganizationEvaluationRuleServiceImpl.verifyID(str[0])) {
+						evaluateRule.setId(str[0]);
+						evaluateRule.setRuleName(str[1]);
+						evaluateRule.setDes(str[6]);
+						evaluateRuleList.add(evaluateRule);
+					} else {
+						evaluateRule.setRuleName(str[0]);
+						BinStage binStage = binStageService.getBinStageByStageName(str[1]);
+						if (null != binStage){
+							evaluateRule.setBinStage(binStage.getId());
+						}
+						BinSection binSection = binSectionService.getBinSectionBySectionName(str[2]);
+						if (null != binSection){
+							evaluateRule.setBinSection(binSection.getId());
+						}
+						evaluateRule.setEnable(true);
+						String checkCycle = "";
+						if ("年度考评".equals(str[3])) {
+							checkCycle = "NDKP";
+						} else if ("月/季度考评".equals(str[3])) {
+							checkCycle = "JDKP";
+						} else {
+							checkCycle = "JDKP";
+						}
+						evaluateRule.setCheckCycle(checkCycle);
+						evaluateRule.setYear(str[4]);
+						evaluateRule.setDes(str[5]);
+						evaluateRule.setCreateTime(new Date());
+						evaluateRuleList.add(evaluateRule);
+					}
+				}
+				boolean b = super.saveOrUpdateBatch(evaluateRuleList);
+				if (b) {
+					return R.ok().data(b);
+				} else {
+					return R.error("导入失败!");
+				}
+			} catch (Exception e) {
+				return R.customError(e.getMessage()).data("失败!");
+			}
+		}
+		return R.error("上传文件为空!");
+	}
+
+	@Override
 	public EvaluateRule getEvaluateRuleByRuleName(String evaluateRuleName, String year) {
 		QueryWrapper<EvaluateRule> qw = new QueryWrapper<>();
 		if (StringUtils.isNotEmpty(evaluateRuleName)) {
@@ -302,4 +411,5 @@ public class EvaluateRuleServiceImpl extends ServiceImpl<EvaluateRuleMapper, Eva
 		}
 		return baseMapper.selectOne(qw);
 	}
+
 }

+ 178 - 19
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/MultipleBrandServiceImpl.java

@@ -3,21 +3,33 @@ package com.ims.eval.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ims.eval.dao.MultipleBrandMapper;
 import com.ims.eval.entity.Indicator;
 import com.ims.eval.entity.MultipleBrand;
-import com.ims.eval.dao.MultipleBrandMapper;
+import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.IMultipleBrandService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ims.eval.util.ExcelUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author wang
@@ -27,28 +39,175 @@ import java.util.stream.Collectors;
 public class MultipleBrandServiceImpl extends ServiceImpl<MultipleBrandMapper, MultipleBrand> implements IMultipleBrandService {
 
 	@Override
-	public IPage<MultipleBrand> getMultipleBranTree(Integer pageNum, Integer pageSize,String id, String parentId,String  binSection,String  checkCycle,String year,String month) {
+	public IPage<MultipleBrand> getMultipleBranTree(Integer pageNum, Integer pageSize, String id, String parentId, String binSection, String checkCycle, String year, String month) {
 		Page<Indicator> page = new Page<>(pageNum, pageSize);
-		IPage<MultipleBrand> list  =  baseMapper.selectMultipleBranTree(page,id,"0",binSection,checkCycle,year,month);
-		List<MultipleBrand> list2  =  baseMapper.selectMultipleBranList(id,"","",checkCycle,year,month);
+		IPage<MultipleBrand> list = baseMapper.selectMultipleBranTree(page, id, "0", binSection, checkCycle, year, month);
+		List<MultipleBrand> list2 = baseMapper.selectMultipleBranList(id, "", "", checkCycle, year, month);
 
-		List<MultipleBrand> tree = convert(list.getRecords(),list2);
+		List<MultipleBrand> tree = convert(list.getRecords(), list2);
 		list.setRecords(tree);
 		return list;
 	}
 
 	@Override
-	public List<MultipleBrand> getMultipleBranList(String id, String parentId,String  binSection,String  checkCycle,String year,String month) {
-		List<MultipleBrand> list  = baseMapper.selectMultipleBranList(id,parentId,binSection,checkCycle,year,month);
+	public List<MultipleBrand> getMultipleBranList(String id, String parentId, String binSection, String checkCycle, String year, String month) {
+		List<MultipleBrand> list = baseMapper.selectMultipleBranList(id, parentId, binSection, checkCycle, year, month);
 		return list;
 	}
 
 	@Override
-	public List<MultipleBrand> getMultipleBranList2( String organizationId, String parentId, String binSection, String checkCycle, String year, String month) {
-		List<MultipleBrand> list  = baseMapper.selectMultipleBranList2(organizationId,parentId,binSection,checkCycle,year,month);
+	public List<MultipleBrand> getMultipleBranList2(String organizationId, String parentId, String binSection, String checkCycle, String year, String month) {
+		List<MultipleBrand> list = baseMapper.selectMultipleBranList2(organizationId, parentId, binSection, checkCycle, year, month);
 		return list;
 	}
 
+	@Override
+	public void exportExcel(String binSection, String checkCycle, String year, HttpServletResponse response) throws IOException {
+		// 设置响应头信息,以附件形式下载
+		response.setHeader("Content-Disposition", "attachment; filename=multiple_brand.xlsx");
+		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+
+		// 创建新的Excel工作簿
+		Workbook workbook = new XSSFWorkbook();
+
+		// 创建新的工作表
+		Sheet sheet = workbook.createSheet("Sheet1");
+
+		// 创建表头
+		Row headerRow = sheet.createRow(0);
+		List<String> headers = Arrays.asList("ID", "单位名称", "业务属性", "考评周期", "利润金额", "分数", "年", "月", "备注");
+		for (int i = 0; i < headers.size(); i++) {
+			Cell cell = headerRow.createCell(i);
+			cell.setCellValue(headers.get(i));
+		}
+
+		//行数据
+		List<MultipleBrand> firstOrderList = baseMapper.selectMultipleBranList("", "0", binSection, checkCycle, year, "");
+		List<MultipleBrand> secondLevelList = baseMapper.selectMultipleBranList("", "", "", checkCycle, year, "");
+		List<MultipleBrand> multipleBrandList = convert(firstOrderList, secondLevelList);
+
+		// 填充数据到工作表
+		int rowIndex = 1; // 从第二行开始填充数据(第一行是表头)
+		for (MultipleBrand multipleBrand : multipleBrandList) {
+			Row row = sheet.createRow(rowIndex++);
+
+			// 设置ID
+			row.createCell(0).setCellValue(multipleBrand.getId());
+
+			// 设置其他数据
+			row.createCell(1).setCellValue(multipleBrand.getOrganizationName());
+			row.createCell(2).setCellValue(multipleBrand.getBinSectionName());
+			if ("NDKP".equals(multipleBrand.getCheckCycle())) {
+				checkCycle = "年度考评";
+			} else if ("JDKP".equals(multipleBrand.getCheckCycle())) {
+				checkCycle = "季度考评";
+			} else if ("YDKP".equals(multipleBrand.getCheckCycle())) {
+				checkCycle = "月度考评";
+			}
+			row.createCell(3).setCellValue(checkCycle);
+			row.createCell(4).setCellValue(multipleBrand.getProfit());
+			row.createCell(5).setCellValue(multipleBrand.getScore());
+			row.createCell(6).setCellValue(multipleBrand.getYear());
+			row.createCell(7).setCellValue(multipleBrand.getMonth());
+			row.createCell(8).setCellValue(multipleBrand.getRemark());
+		}
+
+		// 隐藏第一列(ID列)
+		sheet.setColumnHidden(0, true);
+
+		// 将工作簿写入到输出流
+		try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+			workbook.write(outputStream);
+			response.getOutputStream().write(outputStream.toByteArray());
+			response.getOutputStream().flush();
+		}
+
+		// 关闭工作簿
+		workbook.close();
+	}
+
+	@Override
+	public void importTemplate(HttpServletResponse response) throws IOException {
+		// 设置响应头信息,以附件形式下载
+		response.setHeader("Content-Disposition", "attachment; filename=multiple_brand.xlsx");
+		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+
+		// 创建新的Excel工作簿
+		Workbook workbook = new XSSFWorkbook();
+
+		// 创建新的工作表
+		Sheet sheet = workbook.createSheet("Sheet1");
+
+		// 创建表头
+		Row headerRow = sheet.createRow(0);
+		List<String> headers = Arrays.asList("单位名称", "业务属性", "考评周期", "利润金额", "分数", "年", "月", "备注");
+		for (int i = 0; i < headers.size(); i++) {
+			Cell cell = headerRow.createCell(i);
+			cell.setCellValue(headers.get(i));
+		}
+
+		// 将工作簿写入到输出流
+		try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+			workbook.write(outputStream);
+			response.getOutputStream().write(outputStream.toByteArray());
+			response.getOutputStream().flush();
+		}
+
+		// 关闭工作簿
+		workbook.close();
+	}
+
+	@Override
+	public R importExcel(MultipartFile file) {
+		if (!file.isEmpty()) {
+			try {
+				//获取原始的文件名
+				String originalFilename = file.getOriginalFilename();
+				//获取文件类型
+				String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
+				//默认从第一行开始读取
+				int startRows = 1;
+				//获取输入流
+				InputStream is = file.getInputStream();
+				List<MultipleBrand> multipleBrandList = new ArrayList<>();
+				//Excel导入导出的单元类
+				List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);
+				//遍历Excel表每一行的数据
+				for (String[] str : strings) {
+					MultipleBrand multipleBrand = new MultipleBrand();
+					if (OrganizationEvaluationRuleServiceImpl.verifyID(str[0])) {
+						multipleBrand.setId(str[0]);
+						multipleBrand.setProfit(Double.valueOf(str[4]));
+						multipleBrand.setScore(Double.valueOf(str[5]));
+						multipleBrand.setRemark(str[8]);
+						multipleBrandList.add(multipleBrand);
+					} else {
+						/*multipleBrand.setOrganizationId();
+						multipleBrand.setOrganizationName();
+						multipleBrand.setParentId();
+						multipleBrand.setProfit();
+						multipleBrand.setScore();
+						multipleBrand.setBinSection();
+						multipleBrand.setCheckCycle();
+						multipleBrand.setYear();
+						multipleBrand.setMonth();
+						multipleBrand.setRemark();*/
+						multipleBrandList.add(multipleBrand);
+					}
+				}
+				boolean b = super.saveOrUpdateBatch(multipleBrandList);
+				if (b) {
+					return R.ok().data(b);
+				} else {
+					return R.error("导入失败!");
+				}
+			} catch (Exception e) {
+				return R.customError(e.getMessage()).data("失败!");
+			}
+		}
+		return R.error("上传文件为空!");
+	}
+
 
 	/**
 	 * 转换为有树形结构的列表
@@ -56,24 +215,24 @@ public class MultipleBrandServiceImpl extends ServiceImpl<MultipleBrandMapper, M
 	 * @param brands 源数据所有数据
 	 * @return
 	 */
-	public List<MultipleBrand> convert(List<MultipleBrand> result,List<MultipleBrand> brands) {
+	public List<MultipleBrand> convert(List<MultipleBrand> result, List<MultipleBrand> brands) {
 		if (CollectionUtil.isEmpty(brands)) {
 			return new ArrayList<>();
 		}
 
-		brands = brands.stream().filter(f->!"0".equals(f.getParentId())).collect(Collectors.toList());
+		brands = brands.stream().filter(f -> !"0".equals(f.getParentId())).collect(Collectors.toList());
 //		Map<String ,List<MultipleBrand>> brandMap = brands.stream().collect(Collectors.groupingBy(MultipleBrand::getParentId));
 
 //		Map<String, List<MultipleBrand>> groupedBrands = brands.stream()
 //			.collect(Collectors.groupingBy(brand -> brand.getParentId() + "_" + brand.getCheckCycle()));
 		for (MultipleBrand brandsVO : result) {
 			// 循环一级之后子级
-			List<MultipleBrand>  newbrands = null;
-			if("NDKP".equals(brandsVO.getCheckCycle())){
+			List<MultipleBrand> newbrands = null;
+			if ("NDKP".equals(brandsVO.getCheckCycle())) {
 
-				newbrands = brands.stream().filter(f->brandsVO.getOrganizationId().equals(f.getParentId()) && brandsVO.getCheckCycle().equals(f.getCheckCycle())).collect(Collectors.toList());
-			}else{
-				newbrands = brands.stream().filter(f->brandsVO.getOrganizationId().equals(f.getParentId()) && brandsVO.getCheckCycle().equals(f.getCheckCycle()) && brandsVO.getMonth().equals(f.getMonth())).collect(Collectors.toList());
+				newbrands = brands.stream().filter(f -> brandsVO.getOrganizationId().equals(f.getParentId()) && brandsVO.getCheckCycle().equals(f.getCheckCycle())).collect(Collectors.toList());
+			} else {
+				newbrands = brands.stream().filter(f -> brandsVO.getOrganizationId().equals(f.getParentId()) && brandsVO.getCheckCycle().equals(f.getCheckCycle()) && brandsVO.getMonth().equals(f.getMonth())).collect(Collectors.toList());
 			}
 			brandsVO.setChildren(newbrands);
 		}

+ 15 - 16
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/OrganizationEvaluationRuleServiceImpl.java

@@ -3,14 +3,14 @@ package com.ims.eval.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.common.utils.StringUtils;
 import com.ims.eval.cache.CacheContext;
 import com.ims.eval.config.CustomException;
-import com.ims.eval.entity.*;
 import com.ims.eval.dao.OrganizationEvaluationRuleMapper;
+import com.ims.eval.entity.*;
 import com.ims.eval.entity.dto.result.R;
 import com.ims.eval.service.*;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.eval.util.ExcelUtil;
 import net.sourceforge.pinyin4j.PinyinHelper;
 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
@@ -33,6 +33,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -438,7 +440,7 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 				//遍历Excel表每一行的数据
 				for (String[] str : strings) {
 					OrganizationEvaluationRule organizationEvaluationRule = new OrganizationEvaluationRule();
-					if (isValidUUIDWithoutHyphens(str[0])) {
+					if (verifyID(str[0])) {
 						organizationEvaluationRule.setId(str[0]);
 						organizationEvaluationRule.setScjyWeight(Double.parseDouble(str[6]));
 						organizationEvaluationRule.setQqWeight(Double.parseDouble(str[7]));
@@ -455,6 +457,7 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 						}
 						organizationEvaluationRule.setOrganizationType("DWKP");
 						organizationEvaluationRule.setEvaluationCycle(toFullSpell(str[1]));
+						str[2].replaceAll(",", ",");
 						String[] evaluateRuleNames = str[2].split(",");
 						StringBuilder evaluateRuleIds = new StringBuilder();
 						StringBuilder binSections = new StringBuilder();
@@ -468,7 +471,7 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 						organizationEvaluationRule.setEvaluateRuleId(evaluateRuleIds.toString());
 						organizationEvaluationRule.setBinSection(binSections.toString());
 						organizationEvaluationRule.setBinStage(binStages.toString());
-						organizationEvaluationRule.setDelFlag(true);
+						organizationEvaluationRule.setDelFlag(false);
 						if ("是".equals(str[3])) {
 							organizationEvaluationRule.setIsCheck(true);
 						} else if ("否".equals(str[3])) {
@@ -556,18 +559,14 @@ public class OrganizationEvaluationRuleServiceImpl extends ServiceImpl<Organizat
 		return true;
 	}
 
-	public static boolean isValidUUIDWithoutHyphens(String uuid) {
-		if (uuid == null || (uuid.length() != 32 && uuid.length() != 36)) {
-			return false;
-		}
-		try {
-			// 尝试将不带连字符的字符串转换为UUID
-			UUID.fromString(uuid);
-			return true;
-		} catch (IllegalArgumentException e) {
-			// 如果转换失败,说明不是有效的UUID
-			return false;
-		}
+	public static boolean verifyID(String str) {
+		Pattern isPureNumericPattern = Pattern.compile("^\\d+$");
+		Matcher isPureNumericMatcher = isPureNumericPattern.matcher(str);
+
+		Pattern containsAlphaNumericPattern = Pattern.compile("^(?=.*\\d)(?=.*[a-zA-Z]).+$");
+		Matcher containsAlphaNumericMatcher = containsAlphaNumericPattern.matcher(str);
+
+		return isPureNumericMatcher.matches() || containsAlphaNumericMatcher.matches();
 	}
 
 	public static String toFullSpell(String chinese) {

+ 4 - 14
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/PartyBuildingMultiplierServiceImpl.java

@@ -3,18 +3,14 @@ package com.ims.eval.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.common.utils.StringUtils;
 import com.ims.eval.config.CustomException;
-import com.ims.eval.entity.PartyBuildingMultiplier;
 import com.ims.eval.dao.PartyBuildingMultiplierMapper;
-import com.ims.eval.entity.dto.response.PartyBuildingMultiplierDto;
-import com.ims.eval.service.IOrganizationStructureService;
+import com.ims.eval.entity.PartyBuildingMultiplier;
 import com.ims.eval.service.IPartyBuildingMultiplierService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -28,14 +24,8 @@ import java.util.List;
 @Service
 public class PartyBuildingMultiplierServiceImpl extends ServiceImpl<PartyBuildingMultiplierMapper, PartyBuildingMultiplier> implements IPartyBuildingMultiplierService {
 
-	@Autowired
-	private PartyBuildingMultiplierMapper partyBuildingMultiplierMapper;
-
-	@Autowired
-	private IOrganizationStructureService iOrganizationStructureService;
-
 	@Override
-	public IPage<PartyBuildingMultiplier> listAll(Integer pageNum,Integer pageSize,String id, String departId, String sectionId, String year) {
+	public IPage<PartyBuildingMultiplier> listAll(Integer pageNum,Integer pageSize,String id, String departId, String sectionId, String year, String organizationName) {
 
 
 		if (null == pageNum || null == pageSize) {
@@ -44,7 +34,7 @@ public class PartyBuildingMultiplierServiceImpl extends ServiceImpl<PartyBuildin
 
 		Page<PartyBuildingMultiplier> page = new Page<>(pageNum, pageSize);
 
-		IPage<PartyBuildingMultiplier> list = partyBuildingMultiplierMapper.selectAll(page,id,departId,sectionId,year);
+		IPage<PartyBuildingMultiplier> list = baseMapper.selectAll(page,id,departId,sectionId,year, organizationName);
 
 		return list;
 

+ 4 - 5
ims-service/ims-eval/src/main/java/com/ims/eval/service/impl/YearGroupCoefficientServiceImpl.java

@@ -3,17 +3,15 @@ package com.ims.eval.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.common.utils.StringUtils;
-import com.ims.eval.cache.CacheContext;
 import com.ims.eval.config.CustomException;
+import com.ims.eval.dao.YearGroupCoefficientMapper;
 import com.ims.eval.dao.YearOperatingCoefficientMapper;
-import com.ims.eval.entity.Indicator;
 import com.ims.eval.entity.YearGroupCoefficient;
-import com.ims.eval.dao.YearGroupCoefficientMapper;
 import com.ims.eval.entity.YearOperatingCoefficient;
 import com.ims.eval.entity.dto.request.YearGroupCoefficientDTO;
 import com.ims.eval.service.IYearGroupCoefficientService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ims.eval.service.IYearOperatingCoefficientService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -72,7 +70,7 @@ public class YearGroupCoefficientServiceImpl extends ServiceImpl<YearGroupCoeffi
 		if (StringUtils.isNotEmpty(createBy)) {
 			qw.lambda().eq(YearGroupCoefficient::getCreateBy, createBy);
 		}
-
+		qw.lambda().orderByDesc(YearGroupCoefficient::getYear);
 		IPage<YearGroupCoefficient> list = baseMapper.selectPage(page, qw);
 
 		return list;
@@ -104,6 +102,7 @@ public class YearGroupCoefficientServiceImpl extends ServiceImpl<YearGroupCoeffi
 			qw.lambda().eq(YearGroupCoefficient::getCreateBy, createBy);
 		}
 
+		qw.lambda().orderByDesc(YearGroupCoefficient::getYear);
 		List<YearGroupCoefficient> list = baseMapper.selectList(qw);
 
 		return list;

+ 1 - 2
ims-service/ims-eval/src/main/resources/mappers/MultipleBrandMapper.xml

@@ -37,8 +37,7 @@
 
             </where>
 
-            order by m.year,m.month,m.check_cycle desc
-
+            ORDER BY CAST(m.year AS integer) DESC, CAST(m.month AS integer) DESC
 
         </select>
 

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

@@ -23,7 +23,12 @@
             <if test="year !=null and year !=''">
                 and a.year=#{year}
             </if>
+
+            <if test="organizationName !=null and organizationName !=''">
+                and a.organization_name like CONCAT('%',#{organizationName},'%')
+            </if>
         </where>
+        order by a.year desc
     </select>
 
 </mapper>