Browse Source

单条手动打分新增

feature/dangjian
yujintao 6 years ago
parent
commit
3ee4458481
  1. 5
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java
  2. 14
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java
  3. 153
      esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java

5
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java

@ -24,6 +24,11 @@ public class LocalDateUtils {
return localDateTime.toLocalDate(); return localDateTime.toLocalDate();
} }
public static YearMonth dateToYearMonth(Date date) {
LocalDate localDate = dateToLocalDate(date);
return YearMonth.of(localDate.getYear(), localDate.getMonthValue());
}
public static LocalTime dateToLocalTime(Date date) { public static LocalTime dateToLocalTime(Date date) {
Instant instant = date.toInstant(); Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault(); ZoneId zone = ZoneId.systemDefault();

14
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java

@ -68,13 +68,13 @@ public class KpiManualScoreDTO implements Serializable {
/** /**
* 考核起止日期 * 考核起止日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JSONField(format = "yyyy-MM-dd")
private Date scoreStartDate; private Date scoreStartDate;
/** /**
* 考核终止日期 * 考核终止日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JSONField(format = "yyyy-MM-dd")
private Date scoreEndDate; private Date scoreEndDate;
/** /**
@ -127,6 +127,16 @@ public class KpiManualScoreDTO implements Serializable {
*/ */
private String allDeptNames; private String allDeptNames;
/**
* 打分者的部门id
*/
private String creatorDeptName;
/**
* 打分者的部门名称
*/
private Long creatorDeptId;
/** /**
* 考核周期起始月 * 考核周期起始月
*/ */

153
esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java

@ -26,8 +26,8 @@ import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.constant.StrConstant;
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.page.PageData;
import com.elink.esua.epdc.commons.tools.redis.UserDetailRedis;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; 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.security.user.UserDetail;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
@ -51,7 +51,6 @@ import com.elink.esua.epdc.entity.KpiRuleEntity;
import com.elink.esua.epdc.enums.KpiCycleEnum; import com.elink.esua.epdc.enums.KpiCycleEnum;
import com.elink.esua.epdc.excel.KpiManualScoreTemplateExcel; import com.elink.esua.epdc.excel.KpiManualScoreTemplateExcel;
import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.redis.KpiManualScoreRedis;
import com.elink.esua.epdc.service.KpiManualScoreService; import com.elink.esua.epdc.service.KpiManualScoreService;
import com.elink.esua.epdc.utils.StreamUtils; import com.elink.esua.epdc.utils.StreamUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -64,8 +63,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.YearMonth; import java.time.YearMonth;
import java.util.*; import java.util.*;
@ -81,23 +78,16 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
private KpiManualScoreRedis kpiManualScoreRedis;
@Autowired
private KpiManualScoreRuleDao kpiManualScoreRuleDao; private KpiManualScoreRuleDao kpiManualScoreRuleDao;
@Autowired @Autowired
private KpiRuleDao kpiRuleDao; private KpiRuleDao kpiRuleDao;
@Autowired @Autowired
private UserDetailRedis userDetailRedis;
@Autowired
private AdminFeignClient adminFeignClient; private AdminFeignClient adminFeignClient;
//设置日期格式
private SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override @Override
public PageData<KpiManualScoreDTO> page(Map<String, Object> params) { public PageData<KpiManualScoreDTO> page(Map<String, Object> params) {
String ruleId = params.containsKey("ruleId") ? params.get("ruleId").toString() : null; String ruleId = params.containsKey("ruleId") ? params.get("ruleId").toString() : null;
String createdTime = params.containsKey("createdTime") ? params.get("createdTime").toString() : null; String createdTime = params.containsKey(FieldConstant.CREATED_TIME_HUMP) ? params.get(FieldConstant.CREATED_TIME_HUMP).toString() : null;
QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>(); QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(ruleId), "RULE_ID", ruleId); wrapper.eq(StringUtils.isNotBlank(ruleId), "RULE_ID", ruleId);
wrapper.between(StringUtils.isNotBlank(createdTime), "DATE_FORMAT(CREATED_TIME, '%Y-%m' )", createdTime, createdTime); wrapper.between(StringUtils.isNotBlank(createdTime), "DATE_FORMAT(CREATED_TIME, '%Y-%m' )", createdTime, createdTime);
@ -141,23 +131,42 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
// 考核规则 // 考核规则
KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(ruleId); KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(ruleId);
// 考核周期
String kpiCycle = kpiRuleEntity.getKpiCycle();
checkMonthAndCycle(kpiCycle, scoreStartDateMonth);
return new Result();
}
/**
* 根据选择的月份和考核周期判断是否可以进行考核打分
*
* @param kpiCycle
* @param scoreStartDateMonth
* @return void
* @author work@yujt.net.cn
* @date 2019/12/16 15:38
*/
private void checkMonthAndCycle(String kpiCycle, YearMonth scoreStartDateMonth) {
YearMonth now = YearMonth.now();
if (now.compareTo(scoreStartDateMonth) <= NumConstant.ZERO) {
throw new RenException("只能针对过去的月份进行考核打分");
}
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) {
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
int monthValue = scoreStartDateMonth.getMonthValue(); int monthValue = scoreStartDateMonth.getMonthValue();
// 只有1,4,7,10 月份可以进行季度打分
// 季度打分
if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
if (monthValue != NumConstant.ONE && monthValue != NumConstant.FOUR if (monthValue != NumConstant.ONE && monthValue != NumConstant.FOUR
&& monthValue != NumConstant.SEVEN && monthValue != NumConstant.TEN) { && monthValue != NumConstant.SEVEN && monthValue != NumConstant.TEN) {
return new Result().error("季度打分只能在1/4/7/10月份进行"); throw new RenException("季度打分只能在1/4/7/10月份进行");
} }
} else { } else if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_YEAR.getValue())) {
int monthValue = scoreStartDateMonth.getMonthValue();
// 只有1月份可以进行年度打分
if (monthValue != NumConstant.ONE) { if (monthValue != NumConstant.ONE) {
return new Result().error("年度打分只能在1月份进行"); throw new RenException("年度打分只能在1月份进行");
} }
} }
return new Result();
} }
/** /**
@ -301,7 +310,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
tempEntityList.get(0).getRuleId(), tempEntityList.get(0).getRuleId(),
DateUtils.format(tempEntityList.get(0).getScoreStartDate())); DateUtils.format(tempEntityList.get(0).getScoreStartDate()));
} finally { } finally {
// logger.info("记得删除文件哦"); // 删除文件
this.deleteAllFilesOfDir(f); this.deleteAllFilesOfDir(f);
} }
return new Result(); return new Result();
@ -339,11 +348,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
public KpiManualScoreDTO get(String id) { public KpiManualScoreDTO get(String id) {
KpiManualScoreEntity entity = baseDao.selectById(id); KpiManualScoreEntity entity = baseDao.selectById(id);
KpiManualScoreDTO kpiManualScoreDTO = ConvertUtils.sourceToTarget(entity, KpiManualScoreDTO.class); KpiManualScoreDTO kpiManualScoreDTO = ConvertUtils.sourceToTarget(entity, KpiManualScoreDTO.class);
try { kpiManualScoreDTO.setScoreStartMonth(kpiManualScoreDTO.getScoreStartDate());
kpiManualScoreDTO.setScoreStartMonth(monthFormat.parse(monthFormat.format(kpiManualScoreDTO.getScoreStartDate())));
} catch (ParseException e) {
e.printStackTrace();
}
return kpiManualScoreDTO; return kpiManualScoreDTO;
} }
@ -355,10 +360,12 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(kpiRuleEntity.getId()); KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(kpiRuleEntity.getId());
if (null == kpiManualScoreRuleEntity) { if (null == kpiManualScoreRuleEntity) {
return new Result().error("没有找到关联的手动打分项"); return new Result().error("没有找到关联的手动打分项");
} else if (null != kpiManualScoreRuleEntity && dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) { } else if (dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) {
return new Result().error("得分不能高于满分"); return new Result().error("得分不能高于满分:" + kpiManualScoreRuleEntity.getFullMarks());
} }
YearMonth scoreStartMonth = LocalDateUtils.dateToYearMonth(dto.getScoreStartMonth());
// 考核部门基本信息 // 考核部门基本信息
Result<SysDeptDTO> sysDeptDTOResult = adminFeignClient.getSysDeptDTO(Long.valueOf(dto.getDeptId())); Result<SysDeptDTO> sysDeptDTOResult = adminFeignClient.getSysDeptDTO(Long.valueOf(dto.getDeptId()));
if (!sysDeptDTOResult.success()) { if (!sysDeptDTOResult.success()) {
@ -368,16 +375,22 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
return new Result().error("所选部门不在当前规则考核范围内"); return new Result().error("所选部门不在当前规则考核范围内");
} }
Date scoreEndDateMonth = new Date(); // 考核周期
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) { String kpiCycle = kpiRuleEntity.getKpiCycle();
scoreEndDateMonth = dto.getScoreStartMonth(); checkMonthAndCycle(kpiCycle, scoreStartMonth);
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
scoreEndDateMonth = stepMonth(dto.getScoreStartMonth(), 2); // 考核开始日
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_YEAR.getValue())) { dto.setScoreStartDate(LocalDateUtils.localDateToDate(scoreStartMonth.atDay(NumConstant.ONE)));
scoreEndDateMonth = stepMonth(dto.getScoreStartMonth(), 11);
// 考核结束日
if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) {
dto.setScoreEndDate(LocalDateUtils.localDateToDate(scoreStartMonth.atEndOfMonth()));
} else if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
dto.setScoreEndDate(LocalDateUtils.localDateToDate(scoreStartMonth.plusMonths(NumConstant.TWO).atEndOfMonth()));
} else if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_YEAR.getValue())) {
dto.setScoreEndDate(LocalDateUtils.localDateToDate(scoreStartMonth.plusMonths(NumConstant.ELEVEN).atEndOfMonth()));
} }
dto.setScoreStartDate(getFirstDayDateOfMonth(dto.getScoreStartMonth()));
dto.setScoreEndDate(getLastDayOfMonth(scoreEndDateMonth));
//根据部门ID获取上级所有部门信息 //根据部门ID获取上级所有部门信息
Result<ParentAndAllDeptDTO> parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(String.valueOf(dto.getDeptId())); Result<ParentAndAllDeptDTO> parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(String.valueOf(dto.getDeptId()));
if (!parentAndAllDeptDTOResult.success()) { if (!parentAndAllDeptDTOResult.success()) {
@ -387,7 +400,11 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
dto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); dto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds());
dto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); dto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames());
dto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); dto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds());
UserDetail user = SecurityUser.getUser();
dto.setCreatorDeptId(user.getDeptId());
dto.setCreatorDeptName(user.getDeptName());
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class); KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class);
baseDao.delete(getUniqueWrapper(entity)); baseDao.delete(getUniqueWrapper(entity));
insert(entity); insert(entity);
return new Result(); return new Result();
@ -401,7 +418,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(dto.getRuleId()); KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(dto.getRuleId());
if (null == kpiManualScoreRuleEntity) { if (null == kpiManualScoreRuleEntity) {
return new Result().error("没有找到关联的手动打分项"); return new Result().error("没有找到关联的手动打分项");
} else if (null != kpiManualScoreRuleEntity && dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) { } else if (dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) {
return new Result().error("得分不能高于满分"); return new Result().error("得分不能高于满分");
} }
updateById(entity); updateById(entity);
@ -431,64 +448,6 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
return wrapper; return wrapper;
} }
/**
* @param sourceDate
* @param month
* @return java.util.Date
* @Author yinzuomei
* @Description
* @Date 2019/12/5 13:46
**/
public Date stepMonth(Date sourceDate, int month) {
Calendar c = Calendar.getInstance();
c.setTime(sourceDate);
c.add(Calendar.MONTH, month);
return c.getTime();
}
/**
* @param date
* @return java.util.Date
* @Author yinzuomei
* @Description 获取传入日期所在月的第一天
* @Date 2019/12/5 13:46
**/
public Date getFirstDayDateOfMonth(Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
return cal.getTime();
}
/**
* @param date
* @return java.util.Date
* @Author yinzuomei
* @Description 获取传入日期所在月的最后一天
* @Date 2019/12/5 13:47
**/
public Date getLastDayOfMonth(Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
return cal.getTime();
}
private QueryWrapper<KpiManualScoreEntity> getWrapper(Map<String, Object> params) { private QueryWrapper<KpiManualScoreEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP); String id = (String) params.get(FieldConstant.ID_HUMP);

Loading…
Cancel
Save