Browse Source

治理排行 - 手动打分 功能开发

feature/dangjian
zhangyongzhangyong 6 years ago
parent
commit
dca5480c68
  1. 31
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/ManualScoreDTO.java
  2. 85
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/ManualScoreController.java
  3. 13
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/dao/ManualScoreDao.java
  4. 57
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/ManualScoreExcel.java
  5. 29
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/ManualScoreService.java
  6. 364
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/ManualScoreServiceImpl.java
  7. 22
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/ManualScoreDao.xml

31
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/ManualScoreDTO.java

@ -124,4 +124,35 @@ public class ManualScoreDTO implements Serializable {
*/
private String delFlag;
//虚拟字段--------------
/**
* 所属机构名称
*/
private String deptName;
/**
* 被打分的机构类型
*/
private String deptType;
/**
* 考核起始日
*/
private Date scoreStartDate;
/**
* 得分 String类型
*/
private String scoreString;
/**
* 考核月度 String类型
*/
private String monthString;
/**
* 得分类型 String类型
*/
private String manualScore;
}

85
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/ManualScoreController.java

@ -17,7 +17,10 @@
package com.elink.esua.epdc.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
@ -28,10 +31,23 @@ import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.dto.ManualScoreDTO;
import com.elink.esua.epdc.excel.ManualScoreExcel;
import com.elink.esua.epdc.service.ManualScoreService;
import org.apache.poi.hssf.usermodel.HSSFDataValidation;
import org.apache.poi.hssf.usermodel.HSSFDataValidationHelper;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -51,13 +67,23 @@ public class ManualScoreController {
@GetMapping("page")
public Result<PageData<ManualScoreDTO>> page(@RequestParam Map<String, Object> params){
PageData<ManualScoreDTO> page = manualScoreService.page(params);
PageData<ManualScoreDTO> page = manualScoreService.listManualScoreResultDTO(params);
return new Result<PageData<ManualScoreDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<ManualScoreDTO> get(@PathVariable("id") String id){
ManualScoreDTO data = manualScoreService.get(id);
if (data.getScore().compareTo(new BigDecimal(100)) == 0){
data.setManualScore("优");
} else if (data.getScore().compareTo(new BigDecimal(80)) == 0){
data.setManualScore("良");
} else if (data.getScore().compareTo(new BigDecimal(60)) == 0){
data.setManualScore("中");
} else if (data.getScore().compareTo(new BigDecimal(40)) == 0){
data.setManualScore("差");
}
data.setMonthString(data.getMonth().toString());
return new Result<ManualScoreDTO>().ok(data);
}
@ -91,4 +117,61 @@ public class ManualScoreController {
ExcelUtils.exportExcelToTarget(response, null, list, ManualScoreExcel.class);
}
/**
* @Description: 导出治理排行管理-手动打分录入模板
* @Param: [params]
* @return: java.util.List<com.elink.esua.epdc.dto.ManualScoreDTO>
* @Author: zy
* @Date: 2020-04-13
*/
@GetMapping("exportTemplate")
public void exportTemplate(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<ManualScoreDTO> list = manualScoreService.listManualScoreExportTemplate(params);
List<Object> targetList = new ArrayList<>(list.size());
for(Object source : list){
Object target = ManualScoreExcel.class.newInstance();
BeanUtils.copyProperties(source, target);
targetList.add(target);
}
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), ManualScoreExcel.class, targetList);
Sheet sheet1 = workbook.getSheetAt(0);
sheet1.setDefaultColumnWidth(50*256);
sheet1.setDefaultRowHeight((short)(2*256));
String[] datas = new String[] {"优","良","中", "差"};
HSSFDataValidationHelper dataValidationHelper = new HSSFDataValidationHelper((HSSFSheet) sheet1);
DataValidationConstraint dataValidation = dataValidationHelper.createExplicitListConstraint(datas);
CellRangeAddressList addressList = null;
HSSFDataValidation validation = null;
for (int i = 0; i < list.size(); i++) {
addressList = new CellRangeAddressList(i + 1, i + 1, 4, 4);
validation = (HSSFDataValidation) dataValidationHelper.createValidation(
dataValidation, addressList);
sheet1.addValidationData(validation);
}
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("手动打分", "UTF-8") + ".xls");
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
/**
* @Description: 导入治理排行管理-手动打分记录
* @Param: [file]
* @return: Result
* @Author: zy
* @Date: 2020-04-14
*/
@PostMapping("importManualScoreExcel")
public Result importManualScoreExcel(@RequestParam("file") MultipartFile file) {
return manualScoreService.importManualScoreExcel(file);
}
}

13
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/dao/ManualScoreDao.java

@ -18,9 +18,13 @@
package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.ManualScoreDTO;
import com.elink.esua.epdc.entity.ManualScoreEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* 手动打分表
*
@ -30,4 +34,13 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ManualScoreDao extends BaseDao<ManualScoreEntity> {
/**
* @Description: 治理排行管理-手动打分列表查询
* @Param: [params]
* @return: java.util.List<com.elink.esua.epdc.dto.ManualScoreDTO>
* @Author: zy
* @Date: 2020-04-14
*/
List<ManualScoreDTO> selectListManualScoreResultDTO(Map<String, Object> params);
}

57
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/ManualScoreExcel.java

@ -20,7 +20,6 @@ package com.elink.esua.epdc.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -32,59 +31,19 @@ import java.util.Date;
@Data
public class ManualScoreExcel {
@Excel(name = "主键")
private String id;
@Excel(name = "所属机构")
private String deptName;
@Excel(name = "被打分的部门ID")
private Long deptId;
@Excel(name = "被打分的机构类型")
private String deptType;
@Excel(name = "考核月度")
private Date month;
@Excel(name = "考核年度")
private Date year;
@Excel(name = "考核打分类型 0-月,1-年")
@Excel(name = "考核周期")
private String scoreType;
@Excel(name = "打分的部门ID")
private Long creatorDeptId;
@Excel(name = "打分的部门名称")
private String creatorDeptName;
@Excel(name = "考核起始日", format = "yyyy-MM-dd")
private Date scoreStartDate;
@Excel(name = "得分")
private BigDecimal score;
@Excel(name = "所有父级部门ID")
private String parentDeptIds;
@Excel(name = "所有父级部门名称")
private String parentDeptNames;
@Excel(name = "完整部门ID")
private String allDeptIds;
@Excel(name = "完整部门名称")
private String allDeptNames;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
@Excel(name = "删除标记")
private String delFlag;
private String score;
}

29
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/ManualScoreService.java

@ -19,8 +19,10 @@ package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.ManualScoreDTO;
import com.elink.esua.epdc.entity.ManualScoreEntity;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
@ -92,4 +94,31 @@ public interface ManualScoreService extends BaseService<ManualScoreEntity> {
* @date 2020-04-13
*/
void delete(String[] ids);
/**
* @Description: 导出治理排行管理-手动打分录入模板
* @Param: [params]
* @return: java.util.List<com.elink.esua.epdc.dto.ManualScoreDTO>
* @Author: zy
* @Date: 2020-04-13
*/
List<ManualScoreDTO> listManualScoreExportTemplate(Map<String, Object> params);
/**
* @Description: 导入治理排行管理-手动打分记录
* @Param: [file]
* @return: Result
* @Author: zy
* @Date: 2020-04-14
*/
Result importManualScoreExcel(MultipartFile file);
/***
* @Description: 治理排行管理-手动打分列表查询
* @Param: [params]
* @return: com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.ManualScoreDTO>
* @Author: zy
* @Date: 2020-04-14
*/
PageData<ManualScoreDTO> listManualScoreResultDTO(Map<String, Object> params);
}

364
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/ManualScoreServiceImpl.java

@ -17,25 +17,65 @@
package com.elink.esua.epdc.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant;
import com.elink.esua.epdc.commons.tools.constant.StrConstant;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.utils.LocalDateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.xss.XssHttpServletRequestWrapper;
import com.elink.esua.epdc.constant.WorkAppMenuConstant;
import com.elink.esua.epdc.dao.ManualScoreDao;
import com.elink.esua.epdc.dto.DeptLevelAndLeaderDTO;
import com.elink.esua.epdc.dto.ManualScoreDTO;
import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO;
import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO;
import com.elink.esua.epdc.dto.result.KpiManualScoreResultDTO;
import com.elink.esua.epdc.dto.result.KpiManualScoreTemplateResultDTO;
import com.elink.esua.epdc.entity.KpiManualScoreEntity;
import com.elink.esua.epdc.entity.KpiRuleEntity;
import com.elink.esua.epdc.entity.ManualScoreEntity;
import com.elink.esua.epdc.enums.KpiCycleEnum;
import com.elink.esua.epdc.excel.KpiManualScoreTemplateExcel;
import com.elink.esua.epdc.excel.ManualScoreExcel;
import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.redis.ManualScoreRedis;
import com.elink.esua.epdc.service.ExplicitConstraint;
import com.elink.esua.epdc.service.ManualScoreService;
import com.elink.esua.epdc.utils.DeptUtils;
import com.elink.esua.epdc.utils.StreamUtils;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.File;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.*;
/**
* 手动打分表
@ -49,6 +89,12 @@ public class ManualScoreServiceImpl extends BaseServiceImpl<ManualScoreDao, Manu
@Autowired
private ManualScoreRedis manualScoreRedis;
@Autowired
private AdminFeignClient adminFeignClient;
@Autowired
private DeptUtils deptUtils;
@Override
public PageData<ManualScoreDTO> page(Map<String, Object> params) {
IPage<ManualScoreEntity> page = baseDao.selectPage(
@ -83,13 +129,58 @@ public class ManualScoreServiceImpl extends BaseServiceImpl<ManualScoreDao, Manu
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ManualScoreDTO dto) {
UserDetail user = SecurityUser.getUser();
// 考核周期开始月
YearMonth scoreStartDateMonth = YearMonth.parse(dto.getMonthString());
dto.setMonth(LocalDateUtils.localDateToDate(scoreStartDateMonth.atDay(NumConstant.ONE)));
switch (dto.getManualScore()) {
case "优":
dto.setScore(new BigDecimal(100));
break;
case "良":
dto.setScore(new BigDecimal(80));
break;
case "中":
dto.setScore(new BigDecimal(60));
break;
case "差":
dto.setScore(new BigDecimal(40));
break;
default:
break;
}
ManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, ManualScoreEntity.class);
DeptLevelAndLeaderDTO deptLevelInfo = deptUtils.getDeptLevelInfo(entity.getDeptId(), YesOrNoEnum.YES);
entity.setDeptId(deptLevelInfo.getDeptId());
entity.setAllDeptIds(deptLevelInfo.getAllDeptIds());
entity.setAllDeptNames(deptLevelInfo.getAllDeptNames());
entity.setParentDeptIds(deptLevelInfo.getParentDeptIds());
entity.setParentDeptNames(deptLevelInfo.getParentDeptNames());
entity.setCreatorDeptId(user.getDeptId());
entity.setCreatorDeptName(user.getDeptName());
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ManualScoreDTO dto) {
switch (dto.getManualScore()) {
case "优":
dto.setScore(new BigDecimal(100));
break;
case "良":
dto.setScore(new BigDecimal(80));
break;
case "中":
dto.setScore(new BigDecimal(60));
break;
case "差":
dto.setScore(new BigDecimal(40));
break;
default:
break;
}
ManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, ManualScoreEntity.class);
updateById(entity);
}
@ -101,4 +192,271 @@ public class ManualScoreServiceImpl extends BaseServiceImpl<ManualScoreDao, Manu
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public List<ManualScoreDTO> listManualScoreExportTemplate(Map<String, Object> params) {
//用户所选被打分的机构类型
String deptType = params.get("deptType").toString();
// yyyy-MM
String month = params.get("month").toString();
// 考核周期开始月
YearMonth scoreStartDateMonth = YearMonth.parse(month);
// 用户拥有的所有部门权限
List<Long> dataScopeDeptList = SecurityUser.getUser().getDeptIdList();
Result<List<UserSysDeptInfoResultDTO>> result = queryUserSysDeptInfo(dataScopeDeptList, deptType);
if (!result.success() || CollUtil.isEmpty(result.getData())) {
return Lists.newArrayList();
}
List<ManualScoreDTO> list = Lists.newArrayList();
List<UserSysDeptInfoResultDTO> userSysDeptInfoResultDTOList = result.getData();
for (UserSysDeptInfoResultDTO userSysDeptInfoResultDTO : userSysDeptInfoResultDTOList) {
ManualScoreDTO manualScoreDTO = new ManualScoreDTO();
if (OrganizationTypeConstant.ORG_TYPE_STREET_DEPT.equals(params.get("deptType").toString())){
deptType = "街道";
manualScoreDTO.setDeptName(userSysDeptInfoResultDTO.getStreet());
} else if (OrganizationTypeConstant.ORG_TYPE_COMMUNITY_PARTY.equals(params.get("deptType").toString())){
deptType = "社区";
manualScoreDTO.setDeptName(userSysDeptInfoResultDTO.getStreet() + "-" +
userSysDeptInfoResultDTO.getName());
} else if (OrganizationTypeConstant.ORG_TYPE_GRID_PARTY.equals(params.get("deptType").toString())){
deptType = "网格";
manualScoreDTO.setDeptName(userSysDeptInfoResultDTO.getStreet() + "-" +
userSysDeptInfoResultDTO.getCommunity() + "-" + userSysDeptInfoResultDTO.getGrid());
}
manualScoreDTO.setDeptType(deptType);
if ("0".equals(params.get("scoreType").toString())){
manualScoreDTO.setScoreType("月");
} else {
manualScoreDTO.setScoreType("年");
}
manualScoreDTO.setScoreStartDate(LocalDateUtils.localDateToDate(scoreStartDateMonth.atDay(NumConstant.ONE)));
manualScoreDTO.setScore(null);
list.add(manualScoreDTO);
}
return list;
}
/**
* firstRow 開始行號 根据此项目默认为2(下标0开始)
* lastRow 根据此项目默认为最大65535
* firstCol 区域中第一个单元格的列号 (下标0开始)
* lastCol 区域中最后一个单元格的列号
* strings 下拉内容
* */
public static void selectList(Workbook workbook, int firstCol, int lastCol, String[] strings ){
Sheet sheet = workbook.getSheetAt(0);
// 生成下拉列表
// 只对(x,x)单元格有效
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(2, 65535, firstCol, lastCol);
// 生成下拉框内容
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(strings);
HSSFDataValidation dataValidation = new HSSFDataValidation(cellRangeAddressList, dvConstraint);
// 对sheet页生效
sheet.addValidationData(dataValidation);
}
@Override
public Result importManualScoreExcel(MultipartFile file) {
File f = StreamUtils.conversionFile(file);
try {
//判断上传文件类型
String originalFilename = file.getOriginalFilename();
if (!originalFilename.endsWith(StrConstant.EXCEL_SUFFIX_2003) && !originalFilename.endsWith(StrConstant.EXCEL_SUFFIX_2007)) {
return new Result().error("请选择.xls或者.xlsx格式文件");
}
List<ManualScoreExcel> recordList = ExcelImportUtil.importExcel(f, ManualScoreExcel.class, new ImportParams());
if (CollUtil.isEmpty(recordList)) {
return new Result().error("导入内容不能为空");
}
UserDetail user = SecurityUser.getUser();
// 校验excel数据
// List<ExcelError> checkResult = checkExcelForManualScore(recordList, user.getDeptIdList());
// if (CollUtil.isNotEmpty(checkResult)) {
// Result result = new Result().error();
// result.setData(checkResult);
// return result;
// }
for (ManualScoreExcel manualScoreExcel : recordList) {
ManualScoreEntity manualScoreEntity = packageManualScoreByExcelData(manualScoreExcel, user);
baseDao.insert(manualScoreEntity);
}
} catch (Exception e) {
return new Result().error("数据异常,解析excel文件失败");
} finally {
// 删除文件
this.deleteAllFilesOfDir(f);
}
return new Result();
}
/**
* @Description: 调用admin模块查询部门信息详情
* @param dataScopeDeptList 用户数据权限
* @param deptTypeKey 部门类别
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO>>
* @Author: zy
* @Date: 2020-04-14
*/
private Result<List<UserSysDeptInfoResultDTO>> queryUserSysDeptInfo(List<Long> dataScopeDeptList, String deptTypeKey) {
UserSysDeptInfoFormDTO userSysDeptInfoFormDTO = new UserSysDeptInfoFormDTO();
List<String> typeKeyList = new ArrayList<>();
typeKeyList.add(deptTypeKey);
userSysDeptInfoFormDTO.setTypeKeyList(typeKeyList);
userSysDeptInfoFormDTO.setDeptIdList(dataScopeDeptList);
return adminFeignClient.queryUserSysDeptInfo(userSysDeptInfoFormDTO);
}
/**
* @Description: 组装手动打分实体
* @Param: [excelData excel中的一条数据
* @Param: user] 当前用户
* @return: com.elink.esua.epdc.entity.ManualScoreEntity
* @Author: zy
* @Date: 2020-04-14
*/
private ManualScoreEntity packageManualScoreByExcelData(ManualScoreExcel excelData, UserDetail user) {
// 获取用户所有数据权限对应的部门
List<DeptLevelAndLeaderDTO> deptList = getDeptListByDateScope(user.getDeptIdList());
DeptLevelAndLeaderDTO deptByExcelData = getDeptByExcelData(excelData, deptList);
if (null == deptByExcelData) {
throw new RenException("匹配数据权限失败");
}
DeptLevelAndLeaderDTO deptLevelInfo = deptUtils.getDeptLevelInfo(deptByExcelData.getDeptId(), YesOrNoEnum.YES);
ManualScoreEntity manualScoreEntity = new ManualScoreEntity();
manualScoreEntity.setDeptId(deptLevelInfo.getDeptId());
manualScoreEntity.setAllDeptIds(deptLevelInfo.getAllDeptIds());
manualScoreEntity.setAllDeptNames(deptLevelInfo.getAllDeptNames());
manualScoreEntity.setParentDeptIds(deptLevelInfo.getParentDeptIds());
manualScoreEntity.setParentDeptNames(deptLevelInfo.getParentDeptNames());
manualScoreEntity.setCreatorDeptId(user.getDeptId());
manualScoreEntity.setCreatorDeptName(user.getDeptName());
switch (excelData.getScore()) {
case "优":
manualScoreEntity.setScore(new BigDecimal(100));
break;
case "良":
manualScoreEntity.setScore(new BigDecimal(80));
break;
case "中":
manualScoreEntity.setScore(new BigDecimal(60));
break;
case "差":
manualScoreEntity.setScore(new BigDecimal(40));
break;
default:
break;
}
//后期要进一步处理的字段值
manualScoreEntity.setMonth(excelData.getScoreStartDate());
manualScoreEntity.setScoreType(excelData.getScoreType());
return manualScoreEntity;
}
/**
* @Description: 通过数据权限获取所有部门列表
* @Param: [deptIdList]
* @return: java.util.List<com.elink.esua.epdc.dto.DeptLevelAndLeaderDTO>
* @Author: zy
* @Date: 2020-04-14
*/
private List<DeptLevelAndLeaderDTO> getDeptListByDateScope(List<Long> deptIdList) {
List<DeptLevelAndLeaderDTO> deptList = Lists.newArrayList();
DeptLevelAndLeaderDTO deptLevelInfo;
for (Long deptId : deptIdList) {
deptLevelInfo = deptUtils.getDeptLevelInfo(deptId, YesOrNoEnum.NO);
deptList.add(deptLevelInfo);
}
return deptList;
}
/**
* @Description: 从数据权限的所有部门中匹配excel中的一行数据
* @param excelData excel中的某一行
* @param deptList 用户部门权限中的所有部门
* @return: com.elink.esua.epdc.dto.DeptLevelAndLeaderDTO
* @Author: zy
* @Date: 2020-04-14
*/
private DeptLevelAndLeaderDTO getDeptByExcelData(ManualScoreExcel excelData, List<DeptLevelAndLeaderDTO> deptList) {
String[] deptNameAll = excelData.getDeptName().split("-");
String allDeptNames = "";
if (deptNameAll.length == 3) {
allDeptNames = deptNameAll[0].trim()
.concat(StrConstant.HYPHEN).concat(deptNameAll[1].trim())
.concat(StrConstant.HYPHEN).concat(deptNameAll[2].trim());
} else if (deptNameAll.length == 2) {
allDeptNames = deptNameAll[0].trim()
.concat(StrConstant.HYPHEN).concat(deptNameAll[1].trim());
} else if (deptNameAll.length == 1) {
allDeptNames = deptNameAll[0].trim();
}
for (DeptLevelAndLeaderDTO oneDept : deptList) {
if (oneDept.getAllDeptNames().contains(allDeptNames)) {
return oneDept;
}
}
return null;
}
/**
* 删除文件夹强制删除
*
* @param path
*/
private void deleteAllFilesOfDir(File path) {
if (null != path) {
if (!path.exists()) {
return;
}
if (path.isFile()) {
boolean result = path.delete();
int tryCount = 0;
while (!result && tryCount++ < 10) {
System.gc(); // 回收资源
result = path.delete();
}
}
File[] files = path.listFiles();
if (null != files) {
for (int i = 0; i < files.length; i++) {
deleteAllFilesOfDir(files[i]);
}
}
path.delete();
}
}
@Override
public PageData<ManualScoreDTO> listManualScoreResultDTO(Map<String, Object> params) {
String allDeptIds = "";
if (params.get("streetId") != "" && params.get("streetId") != null) {
allDeptIds = params.get("streetId").toString(); //查询条件 街道
}
if (params.get("communityId") != "" && params.get("communityId") != null) {
allDeptIds = params.get("communityId").toString(); //查询条件 社区
}
if (params.get("gridId") != "" && params.get("gridId") != null) {
allDeptIds = params.get("gridId").toString(); //查询条件 网格
}
params.put("allDeptIds", allDeptIds);
IPage<ManualScoreDTO> page = getPage(params);
List<ManualScoreDTO> list = baseDao.selectListManualScoreResultDTO(params);
return new PageData<>(list, page.getTotal());
}
}

22
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/ManualScoreDao.xml

@ -24,5 +24,25 @@
<result property="delFlag" column="DEL_FLAG"/>
</resultMap>
<select id="selectListManualScoreResultDTO" parameterType="map"
resultType="com.elink.esua.epdc.dto.ManualScoreDTO">
SELECT
m.ID id,
SUBSTRING_INDEX(m.ALL_DEPT_NAMES,'-',-1) AS deptName,
m.YEAR year,
m.MONTH month,
case SCORE_TYPE WHEN 0 THEN '月' WHEN 1 THEN '年' ELSE '' END AS scoreType,
m.CREATOR_DEPT_NAME creatorDeptName,
m.SCORE score
FROM
epdc_manual_score m
where m.DEL_FLAG = 0
<if test="scoreType == 0 and month != null and month != ''">
AND DATE_FORMAT( m.`MONTH`, '%Y-%m' ) = #{month}
</if>
<if test="allDeptIds != '' and allDeptIds != null">
AND m.all_dept_ids like concat('%',#{allDeptIds},'%')
</if>
ORDER BY m.CREATED_TIME DESC
</select>
</mapper>
Loading…
Cancel
Save