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. 155
      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();
}
public static YearMonth dateToYearMonth(Date date) {
LocalDate localDate = dateToLocalDate(date);
return YearMonth.of(localDate.getYear(), localDate.getMonthValue());
}
public static LocalTime dateToLocalTime(Date date) {
Instant instant = date.toInstant();
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;
/**
* 考核终止日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@JSONField(format = "yyyy-MM-dd")
private Date scoreEndDate;
/**
@ -127,6 +127,16 @@ public class KpiManualScoreDTO implements Serializable {
*/
private String allDeptNames;
/**
* 打分者的部门id
*/
private String creatorDeptName;
/**
* 打分者的部门名称
*/
private Long creatorDeptId;
/**
* 考核周期起始月
*/

155
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.NumConstant;
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.redis.UserDetailRedis;
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;
@ -51,7 +51,6 @@ import com.elink.esua.epdc.entity.KpiRuleEntity;
import com.elink.esua.epdc.enums.KpiCycleEnum;
import com.elink.esua.epdc.excel.KpiManualScoreTemplateExcel;
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.utils.StreamUtils;
import com.google.common.collect.Lists;
@ -64,8 +63,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.*;
@ -81,23 +78,16 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private KpiManualScoreRedis kpiManualScoreRedis;
@Autowired
private KpiManualScoreRuleDao kpiManualScoreRuleDao;
@Autowired
private KpiRuleDao kpiRuleDao;
@Autowired
private UserDetailRedis userDetailRedis;
@Autowired
private AdminFeignClient adminFeignClient;
//设置日期格式
private SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public PageData<KpiManualScoreDTO> page(Map<String, Object> params) {
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<>();
wrapper.eq(StringUtils.isNotBlank(ruleId), "RULE_ID", ruleId);
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);
// 考核周期
String kpiCycle = kpiRuleEntity.getKpiCycle();
checkMonthAndCycle(kpiCycle, scoreStartDateMonth);
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) {
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
int monthValue = scoreStartDateMonth.getMonthValue();
// 只有1,4,7,10 月份可以进行季度打分
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("只能针对过去的月份进行考核打分");
}
int monthValue = scoreStartDateMonth.getMonthValue();
// 季度打分
if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) {
if (monthValue != NumConstant.ONE && monthValue != NumConstant.FOUR
&& monthValue != NumConstant.SEVEN && monthValue != NumConstant.TEN) {
return new Result().error("季度打分只能在1/4/7/10月份进行");
throw new RenException("季度打分只能在1/4/7/10月份进行");
}
} else {
int monthValue = scoreStartDateMonth.getMonthValue();
// 只有1月份可以进行年度打分
} else if (kpiCycle.equals(KpiCycleEnum.KPI_CYCLE_YEAR.getValue())) {
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(),
DateUtils.format(tempEntityList.get(0).getScoreStartDate()));
} finally {
// logger.info("记得删除文件哦");
// 删除文件
this.deleteAllFilesOfDir(f);
}
return new Result();
@ -339,11 +348,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
public KpiManualScoreDTO get(String id) {
KpiManualScoreEntity entity = baseDao.selectById(id);
KpiManualScoreDTO kpiManualScoreDTO = ConvertUtils.sourceToTarget(entity, KpiManualScoreDTO.class);
try {
kpiManualScoreDTO.setScoreStartMonth(monthFormat.parse(monthFormat.format(kpiManualScoreDTO.getScoreStartDate())));
} catch (ParseException e) {
e.printStackTrace();
}
kpiManualScoreDTO.setScoreStartMonth(kpiManualScoreDTO.getScoreStartDate());
return kpiManualScoreDTO;
}
@ -355,10 +360,12 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(kpiRuleEntity.getId());
if (null == kpiManualScoreRuleEntity) {
return new Result().error("没有找到关联的手动打分项");
} else if (null != kpiManualScoreRuleEntity && dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) {
return new Result().error("得分不能高于满分");
} else if (dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) {
return new Result().error("得分不能高于满分:" + kpiManualScoreRuleEntity.getFullMarks());
}
YearMonth scoreStartMonth = LocalDateUtils.dateToYearMonth(dto.getScoreStartMonth());
// 考核部门基本信息
Result<SysDeptDTO> sysDeptDTOResult = adminFeignClient.getSysDeptDTO(Long.valueOf(dto.getDeptId()));
if (!sysDeptDTOResult.success()) {
@ -368,16 +375,22 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
return new Result().error("所选部门不在当前规则考核范围内");
}
Date scoreEndDateMonth = new Date();
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) {
scoreEndDateMonth = dto.getScoreStartMonth();
} 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())) {
scoreEndDateMonth = stepMonth(dto.getScoreStartMonth(), 11);
// 考核周期
String kpiCycle = kpiRuleEntity.getKpiCycle();
checkMonthAndCycle(kpiCycle, scoreStartMonth);
// 考核开始日
dto.setScoreStartDate(LocalDateUtils.localDateToDate(scoreStartMonth.atDay(NumConstant.ONE)));
// 考核结束日
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获取上级所有部门信息
Result<ParentAndAllDeptDTO> parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(String.valueOf(dto.getDeptId()));
if (!parentAndAllDeptDTOResult.success()) {
@ -387,7 +400,11 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
dto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds());
dto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames());
dto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds());
UserDetail user = SecurityUser.getUser();
dto.setCreatorDeptId(user.getDeptId());
dto.setCreatorDeptName(user.getDeptName());
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class);
baseDao.delete(getUniqueWrapper(entity));
insert(entity);
return new Result();
@ -401,7 +418,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(dto.getRuleId());
if (null == kpiManualScoreRuleEntity) {
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("得分不能高于满分");
}
updateById(entity);
@ -431,64 +448,6 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao
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) {
String id = (String) params.get(FieldConstant.ID_HUMP);

Loading…
Cancel
Save