|
|
@ -24,16 +24,19 @@ 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.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.ErrorCode; |
|
|
|
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; |
|
|
|
import com.elink.esua.epdc.commons.tools.utils.DateUtils; |
|
|
|
import com.elink.esua.epdc.commons.tools.utils.LocalDateUtils; |
|
|
|
import com.elink.esua.epdc.commons.tools.utils.Result; |
|
|
|
import com.elink.esua.epdc.dao.KpiManualScoreDao; |
|
|
|
import com.elink.esua.epdc.dao.KpiManualScoreRuleDao; |
|
|
|
import com.elink.esua.epdc.dao.KpiManualScoreTempDao; |
|
|
|
import com.elink.esua.epdc.dao.KpiRuleDao; |
|
|
|
import com.elink.esua.epdc.dto.KpiManualScoreDTO; |
|
|
|
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; |
|
|
@ -52,8 +55,8 @@ 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.service.KpiManualScoreTempService; |
|
|
|
import com.elink.esua.epdc.utils.StreamUtils; |
|
|
|
import com.google.common.collect.Lists; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
@ -65,6 +68,8 @@ 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.*; |
|
|
|
|
|
|
|
/** |
|
|
@ -76,411 +81,407 @@ import java.util.*; |
|
|
|
@Service |
|
|
|
public class KpiManualScoreServiceImpl extends BaseServiceImpl<KpiManualScoreDao, KpiManualScoreEntity> implements KpiManualScoreService { |
|
|
|
|
|
|
|
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; |
|
|
|
@Autowired |
|
|
|
private KpiManualScoreTempDao kpiManualScoreTempDao; |
|
|
|
@Autowired |
|
|
|
private KpiManualScoreTempService kpiManualScoreTempService; |
|
|
|
//设置日期格式
|
|
|
|
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; |
|
|
|
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); |
|
|
|
IPage<KpiManualScoreEntity> page = baseDao.selectPage( |
|
|
|
getPage(params, FieldConstant.CREATED_TIME, false), |
|
|
|
wrapper |
|
|
|
); |
|
|
|
PageData<KpiManualScoreDTO> list = getPageData(page, KpiManualScoreDTO.class); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param params |
|
|
|
* @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.result.KpiManualScoreResultDTO> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 列表查询 |
|
|
|
* @Date 2019/12/4 17:37 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public PageData<KpiManualScoreResultDTO> listKpiManualScoreResultDTO(Map<String, Object> params) { |
|
|
|
IPage<KpiManualScoreResultDTO> page = getPage(params); |
|
|
|
List<KpiManualScoreResultDTO> list = baseDao.selectListKpiManualScoreResultDTO(params); |
|
|
|
return new PageData<>(list, page.getTotal()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<KpiManualScoreDTO> list(Map<String, Object> params) { |
|
|
|
List<KpiManualScoreEntity> entityList = baseDao.selectList(getWrapper(params)); |
|
|
|
|
|
|
|
return ConvertUtils.sourceToTarget(entityList, KpiManualScoreDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param |
|
|
|
* @return java.util.List<com.elink.esua.epdc.dto.result.KpiManualScoreTemplateResultDTO> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 导出录入模板 |
|
|
|
* @Date 2019/12/4 18:00 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<KpiManualScoreTemplateResultDTO> listKpiManualScoreTemplateResultDTO(Map<String, Object> params) { |
|
|
|
List<KpiManualScoreTemplateResultDTO> list = new ArrayList<>(); |
|
|
|
//用户所选规则
|
|
|
|
String ruleId = params.get("ruleId").toString(); |
|
|
|
String scoreStartTime = params.get("scoreStartTime").toString(); |
|
|
|
Date scoreStartDateMonth = new Date(); |
|
|
|
try { |
|
|
|
scoreStartDateMonth = monthFormat.parse(scoreStartTime); |
|
|
|
} catch (ParseException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
Date scoreEndDateMonth = new Date(); |
|
|
|
|
|
|
|
KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(ruleId); |
|
|
|
|
|
|
|
//考核周期赋值
|
|
|
|
String kpiCycleName = ""; |
|
|
|
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) { |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_MONTH.getName(); |
|
|
|
scoreEndDateMonth = scoreStartDateMonth; |
|
|
|
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) { |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_QUARTER.getName(); |
|
|
|
scoreEndDateMonth = stepMonth(scoreStartDateMonth, 2); |
|
|
|
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_YEAR.getValue())) { |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_YEAR.getName(); |
|
|
|
scoreEndDateMonth = stepMonth(scoreStartDateMonth, 11); |
|
|
|
} |
|
|
|
|
|
|
|
// 用户拥有的所有部门权限
|
|
|
|
List<Long> dataScopeDeptList = getDataScopeDeptList(); |
|
|
|
|
|
|
|
//调用admin模块查询部门信息详情
|
|
|
|
UserSysDeptInfoFormDTO userSysDeptInfoFormDTO = new UserSysDeptInfoFormDTO(); |
|
|
|
userSysDeptInfoFormDTO.setDeptIdList(dataScopeDeptList); |
|
|
|
List<String> typeKeyList = new ArrayList<>(); |
|
|
|
typeKeyList.add(kpiRuleEntity.getDeptTypeKey()); |
|
|
|
userSysDeptInfoFormDTO.setTypeKeyList(typeKeyList); |
|
|
|
Result<List<UserSysDeptInfoResultDTO>> result = this.queryUserSysDeptInfo(userSysDeptInfoFormDTO); |
|
|
|
|
|
|
|
if (result.getCode() == 0 && result.getData().size() > 0) { |
|
|
|
List<UserSysDeptInfoResultDTO> userSysDeptInfoResultDTOList = result.getData(); |
|
|
|
for (UserSysDeptInfoResultDTO userSysDeptInfoResultDTO : userSysDeptInfoResultDTOList) { |
|
|
|
|
|
|
|
KpiManualScoreTemplateResultDTO kpiManualScoreTemplateResultDTO = new KpiManualScoreTemplateResultDTO(); |
|
|
|
|
|
|
|
kpiManualScoreTemplateResultDTO.setRuleName(kpiRuleEntity.getRuleName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setStreet(userSysDeptInfoResultDTO.getStreet()); |
|
|
|
kpiManualScoreTemplateResultDTO.setCommunity(userSysDeptInfoResultDTO.getCommunity()); |
|
|
|
kpiManualScoreTemplateResultDTO.setGrid(userSysDeptInfoResultDTO.getGrid()); |
|
|
|
kpiManualScoreTemplateResultDTO.setDeptName(userSysDeptInfoResultDTO.getName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setKpiCycleName(kpiCycleName); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreStartTime(dateFormat.format(getFirstDayDateOfMonth(scoreStartDateMonth))); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreEndTime(dateFormat.format(getLastDayOfMonth(scoreEndDateMonth))); |
|
|
|
kpiManualScoreTemplateResultDTO.setScore(null); |
|
|
|
|
|
|
|
kpiManualScoreTemplateResultDTO.setRuleId(kpiRuleEntity.getId()); |
|
|
|
kpiManualScoreTemplateResultDTO.setDeptId(userSysDeptInfoResultDTO.getId().toString()); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreStartDate(getFirstDayDateOfMonth(scoreStartDateMonth)); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreEndDate(getLastDayOfMonth(scoreEndDateMonth)); |
|
|
|
kpiManualScoreTemplateResultDTO.setParentDeptIds(userSysDeptInfoResultDTO.getPids()); |
|
|
|
kpiManualScoreTemplateResultDTO.setParentDeptNames(userSysDeptInfoResultDTO.getParentNames()); |
|
|
|
kpiManualScoreTemplateResultDTO.setAllDeptIds(userSysDeptInfoResultDTO.getPids() + "," + userSysDeptInfoResultDTO.getId()); |
|
|
|
kpiManualScoreTemplateResultDTO.setAllDeptNames(userSysDeptInfoResultDTO.getParentNames() + "-" + userSysDeptInfoResultDTO.getName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setUserId(SecurityUser.getUserId().toString()); |
|
|
|
list.add(kpiManualScoreTemplateResultDTO); |
|
|
|
} |
|
|
|
//删除临时表数据
|
|
|
|
kpiManualScoreTempDao.deleteManualScoreTemp(SecurityUser.getUserId().toString(), |
|
|
|
kpiRuleEntity.getId(), |
|
|
|
dateFormat.format(getFirstDayDateOfMonth(scoreStartDateMonth))); |
|
|
|
//插入临时表
|
|
|
|
List<KpiManualScoreTempEntity> tempEntityList = ConvertUtils.sourceToTarget(list, KpiManualScoreTempEntity.class); |
|
|
|
kpiManualScoreTempService.insertBatch(tempEntityList, 200); |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param file |
|
|
|
* @return com.elink.esua.epdc.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 导入手动打分记录 |
|
|
|
* @Date 2019/12/5 15:46 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result importManualScoreExcel(MultipartFile file) { |
|
|
|
File f = StreamUtils.conversionFile(file); |
|
|
|
try { |
|
|
|
//判断上传文件类型
|
|
|
|
String originalFilename = file.getOriginalFilename(); |
|
|
|
if (!originalFilename.contains(".xlsx") && !originalFilename.contains(".xls")) { |
|
|
|
return new Result().error("请选择.xls或者.xlsx格式文件"); |
|
|
|
} |
|
|
|
ImportParams importParams = new ImportParams(); |
|
|
|
List<KpiManualScoreTemplateExcel> recordList = ExcelImportUtil.importExcel(f, KpiManualScoreTemplateExcel.class, importParams); |
|
|
|
if (CollUtil.isEmpty(recordList)) { |
|
|
|
return new Result().error("导入内容不能为空"); |
|
|
|
} |
|
|
|
//校验记录数是否一致
|
|
|
|
List<ImportExcelErrorResultDTO> errorRecordList = new ArrayList<>(); |
|
|
|
List<KpiManualScoreTempEntity> tempEntityList = kpiManualScoreTempDao.selectListKpiManualScoreTemp(SecurityUser.getUserId().toString(), recordList); |
|
|
|
if (CollUtil.isEmpty(tempEntityList) || tempEntityList.size() != recordList.size()) { |
|
|
|
ImportExcelErrorResultDTO excelErrorResultDTO = new ImportExcelErrorResultDTO(); |
|
|
|
excelErrorResultDTO.setErrorLine("0"); |
|
|
|
excelErrorResultDTO.setErrorInfo("导入记录条数与导出模板不一致,请核对"); |
|
|
|
errorRecordList.add(excelErrorResultDTO); |
|
|
|
} |
|
|
|
if (CollUtil.isNotEmpty(errorRecordList)) { |
|
|
|
Result errorResult = new Result(); |
|
|
|
errorResult.setCode(ErrorCode.INTERNAL_SERVER_ERROR); |
|
|
|
return errorResult.ok(errorRecordList); |
|
|
|
} |
|
|
|
List<KpiManualScoreEntity> kpiManualScoreEntityList = ConvertUtils.sourceToTarget(tempEntityList, KpiManualScoreEntity.class); |
|
|
|
//循环插入:如果存在则删除原纪录
|
|
|
|
for (KpiManualScoreEntity kpiManualScoreEntity : kpiManualScoreEntityList) { |
|
|
|
baseDao.delete(getUniqueWrapper(kpiManualScoreEntity)); |
|
|
|
baseDao.insert(kpiManualScoreEntity); |
|
|
|
} |
|
|
|
//删除临时表数据
|
|
|
|
kpiManualScoreTempDao.deleteManualScoreTemp(SecurityUser.getUserId().toString(), |
|
|
|
tempEntityList.get(0).getRuleId(), |
|
|
|
tempEntityList.get(0).getScoreStartTime()); |
|
|
|
} finally { |
|
|
|
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; |
|
|
|
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); |
|
|
|
IPage<KpiManualScoreEntity> page = baseDao.selectPage( |
|
|
|
getPage(params, FieldConstant.CREATED_TIME, false), |
|
|
|
wrapper |
|
|
|
); |
|
|
|
PageData<KpiManualScoreDTO> list = getPageData(page, KpiManualScoreDTO.class); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param params |
|
|
|
* @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.result.KpiManualScoreResultDTO> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 列表查询 |
|
|
|
* @Date 2019/12/4 17:37 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public PageData<KpiManualScoreResultDTO> listKpiManualScoreResultDTO(Map<String, Object> params) { |
|
|
|
IPage<KpiManualScoreResultDTO> page = getPage(params); |
|
|
|
List<KpiManualScoreResultDTO> list = baseDao.selectListKpiManualScoreResultDTO(params); |
|
|
|
return new PageData<>(list, page.getTotal()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<KpiManualScoreDTO> list(Map<String, Object> params) { |
|
|
|
List<KpiManualScoreEntity> entityList = baseDao.selectList(getWrapper(params)); |
|
|
|
|
|
|
|
return ConvertUtils.sourceToTarget(entityList, KpiManualScoreDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param |
|
|
|
* @return java.util.List<com.elink.esua.epdc.dto.result.KpiManualScoreTemplateResultDTO> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 导出录入模板 |
|
|
|
* @Date 2019/12/4 18:00 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public List<KpiManualScoreTemplateResultDTO> listKpiManualScoreTemplateResultDTO(Map<String, Object> params) { |
|
|
|
|
|
|
|
//用户所选规则
|
|
|
|
String ruleId = params.get("ruleId").toString(); |
|
|
|
// yyyy-MM
|
|
|
|
String scoreStartMonth = params.get("scoreStartTime").toString(); |
|
|
|
// 考核周期开始月
|
|
|
|
YearMonth scoreStartDateMonth = YearMonth.parse(scoreStartMonth); |
|
|
|
|
|
|
|
// 考核规则
|
|
|
|
KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(ruleId); |
|
|
|
|
|
|
|
// 考核周期结束日
|
|
|
|
LocalDate scoreEndDate; |
|
|
|
//考核周期赋值
|
|
|
|
String kpiCycleName; |
|
|
|
if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_MONTH.getValue())) { |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_MONTH.getName(); |
|
|
|
scoreEndDate = scoreStartDateMonth.atEndOfMonth(); |
|
|
|
} else if (kpiRuleEntity.getKpiCycle().equals(KpiCycleEnum.KPI_CYCLE_QUARTER.getValue())) { |
|
|
|
int monthValue = scoreStartDateMonth.getMonthValue(); |
|
|
|
// 只有1,4,7,10 月份可以进行季度打分
|
|
|
|
if (monthValue != NumConstant.ONE && monthValue != NumConstant.FOUR |
|
|
|
&& monthValue != NumConstant.SEVEN && monthValue != NumConstant.TEN) { |
|
|
|
throw new RenException("当前选择的月份无法进行季度考核打分"); |
|
|
|
} |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_QUARTER.getName(); |
|
|
|
scoreEndDate = scoreStartDateMonth.plusMonths(NumConstant.TWO).atEndOfMonth(); |
|
|
|
} else { |
|
|
|
int monthValue = scoreStartDateMonth.getMonthValue(); |
|
|
|
// 只有1月份可以进行年度打分
|
|
|
|
if (monthValue != NumConstant.ONE) { |
|
|
|
throw new RenException("当前选择的月份无法进行年度考核打分"); |
|
|
|
} |
|
|
|
kpiCycleName = KpiCycleEnum.KPI_CYCLE_YEAR.getName(); |
|
|
|
scoreEndDate = scoreStartDateMonth.plusMonths(NumConstant.ELEVEN).atEndOfMonth(); |
|
|
|
} |
|
|
|
|
|
|
|
// 用户拥有的所有部门权限
|
|
|
|
List<Long> dataScopeDeptList = SecurityUser.getUser().getDeptIdList(); |
|
|
|
Result<List<UserSysDeptInfoResultDTO>> result = queryUserSysDeptInfo(dataScopeDeptList, kpiRuleEntity.getDeptTypeKey()); |
|
|
|
|
|
|
|
if (!result.success() || CollUtil.isEmpty(result.getData())) { |
|
|
|
return Lists.newArrayList(); |
|
|
|
} |
|
|
|
List<KpiManualScoreTemplateResultDTO> list = Lists.newArrayList(); |
|
|
|
|
|
|
|
List<UserSysDeptInfoResultDTO> userSysDeptInfoResultDTOList = result.getData(); |
|
|
|
for (UserSysDeptInfoResultDTO userSysDeptInfoResultDTO : userSysDeptInfoResultDTOList) { |
|
|
|
|
|
|
|
KpiManualScoreTemplateResultDTO kpiManualScoreTemplateResultDTO = new KpiManualScoreTemplateResultDTO(); |
|
|
|
|
|
|
|
kpiManualScoreTemplateResultDTO.setRuleName(kpiRuleEntity.getRuleName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setStreet(userSysDeptInfoResultDTO.getStreet()); |
|
|
|
kpiManualScoreTemplateResultDTO.setCommunity(userSysDeptInfoResultDTO.getCommunity()); |
|
|
|
kpiManualScoreTemplateResultDTO.setGrid(userSysDeptInfoResultDTO.getGrid()); |
|
|
|
kpiManualScoreTemplateResultDTO.setDeptName(userSysDeptInfoResultDTO.getName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setKpiCycleName(kpiCycleName); |
|
|
|
kpiManualScoreTemplateResultDTO.setScore(null); |
|
|
|
|
|
|
|
kpiManualScoreTemplateResultDTO.setRuleId(kpiRuleEntity.getId()); |
|
|
|
kpiManualScoreTemplateResultDTO.setDeptId(userSysDeptInfoResultDTO.getId().toString()); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreStartDate(LocalDateUtils.LocalDateToDate(scoreStartDateMonth.atDay(NumConstant.ONE))); |
|
|
|
kpiManualScoreTemplateResultDTO.setScoreEndDate(LocalDateUtils.LocalDateToDate(scoreEndDate)); |
|
|
|
kpiManualScoreTemplateResultDTO.setParentDeptIds(userSysDeptInfoResultDTO.getPids()); |
|
|
|
kpiManualScoreTemplateResultDTO.setParentDeptNames(userSysDeptInfoResultDTO.getParentNames()); |
|
|
|
kpiManualScoreTemplateResultDTO.setAllDeptIds(userSysDeptInfoResultDTO.getPids() + StrConstant.COMMA + userSysDeptInfoResultDTO.getId()); |
|
|
|
kpiManualScoreTemplateResultDTO.setAllDeptNames(userSysDeptInfoResultDTO.getParentNames() + StrConstant.HYPHEN + userSysDeptInfoResultDTO.getName()); |
|
|
|
kpiManualScoreTemplateResultDTO.setUserId(SecurityUser.getUserId().toString()); |
|
|
|
list.add(kpiManualScoreTemplateResultDTO); |
|
|
|
} |
|
|
|
//删除临时表数据
|
|
|
|
baseDao.deleteManualScoreTemp(SecurityUser.getUserId().toString(), kpiRuleEntity.getId(), scoreStartDateMonth.atDay(NumConstant.ONE).toString()); |
|
|
|
//插入临时表
|
|
|
|
List<KpiManualScoreTempEntity> tempEntityList = ConvertUtils.sourceToTarget(list, KpiManualScoreTempEntity.class); |
|
|
|
baseDao.insertScoreTempBatch(tempEntityList); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 调用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 work@yujt.net.cn |
|
|
|
* @date 2019/12/13 14:38 |
|
|
|
*/ |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param file |
|
|
|
* @return com.elink.esua.epdc.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 导入手动打分记录 |
|
|
|
* @Date 2019/12/5 15:46 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
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格式文件"); |
|
|
|
} |
|
|
|
ImportParams importParams = new ImportParams(); |
|
|
|
List<KpiManualScoreTemplateExcel> recordList = ExcelImportUtil.importExcel(f, KpiManualScoreTemplateExcel.class, importParams); |
|
|
|
if (CollUtil.isEmpty(recordList)) { |
|
|
|
return new Result().error("导入内容不能为空"); |
|
|
|
} |
|
|
|
//校验记录数是否一致
|
|
|
|
List<ImportExcelErrorResultDTO> errorRecordList = new ArrayList<>(); |
|
|
|
List<KpiManualScoreTempEntity> tempEntityList = baseDao.selectListKpiManualScoreTemp(SecurityUser.getUserId().toString(), recordList); |
|
|
|
if (CollUtil.isEmpty(tempEntityList) || tempEntityList.size() != recordList.size()) { |
|
|
|
ImportExcelErrorResultDTO excelErrorResultDTO = new ImportExcelErrorResultDTO(); |
|
|
|
excelErrorResultDTO.setErrorLine("0"); |
|
|
|
excelErrorResultDTO.setErrorInfo("导入记录条数与导出模板不一致,请核对"); |
|
|
|
errorRecordList.add(excelErrorResultDTO); |
|
|
|
} |
|
|
|
if (CollUtil.isNotEmpty(errorRecordList)) { |
|
|
|
Result errorResult = new Result(); |
|
|
|
errorResult.setCode(ErrorCode.INTERNAL_SERVER_ERROR); |
|
|
|
return errorResult.ok(errorRecordList); |
|
|
|
} |
|
|
|
List<KpiManualScoreEntity> kpiManualScoreEntityList = ConvertUtils.sourceToTarget(tempEntityList, KpiManualScoreEntity.class); |
|
|
|
//循环插入:如果存在则删除原纪录
|
|
|
|
for (KpiManualScoreEntity kpiManualScoreEntity : kpiManualScoreEntityList) { |
|
|
|
baseDao.delete(getUniqueWrapper(kpiManualScoreEntity)); |
|
|
|
baseDao.insert(kpiManualScoreEntity); |
|
|
|
} |
|
|
|
//删除临时表数据
|
|
|
|
baseDao.deleteManualScoreTemp(SecurityUser.getUserId().toString(), |
|
|
|
tempEntityList.get(0).getRuleId(), |
|
|
|
DateUtils.format(tempEntityList.get(0).getScoreStartDate())); |
|
|
|
} finally { |
|
|
|
// logger.info("记得删除文件哦");
|
|
|
|
this.deleteAllFilesOfDir(f); |
|
|
|
} |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除文件夹(强制删除) |
|
|
|
* |
|
|
|
* @param path |
|
|
|
*/ |
|
|
|
public 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 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(); |
|
|
|
} |
|
|
|
return kpiManualScoreDTO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result save(KpiManualScoreDTO dto) { |
|
|
|
KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(dto.getRuleId()); |
|
|
|
//得分不能大于满分
|
|
|
|
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(kpiRuleEntity.getId()); |
|
|
|
if (null == kpiManualScoreRuleEntity) { |
|
|
|
return new Result().error("没有找到关联的手动打分项"); |
|
|
|
} else if (null != kpiManualScoreRuleEntity && dto.getScore() > kpiManualScoreRuleEntity.getFullMarks()) { |
|
|
|
return new Result().error("得分不能高于满分"); |
|
|
|
} |
|
|
|
|
|
|
|
// 考核部门基本信息
|
|
|
|
Result<SysDeptDTO> sysDeptDTOResult=adminFeignClient.getSysDeptDTO(Long.valueOf(dto.getDeptId())); |
|
|
|
if(!sysDeptDTOResult.success()){ |
|
|
|
return new Result().error(sysDeptDTOResult.getMsg()); |
|
|
|
} |
|
|
|
if(!kpiManualScoreRuleEntity.getDeptTypeKey().equals(sysDeptDTOResult.getData().getTypeKey())){ |
|
|
|
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); |
|
|
|
} |
|
|
|
dto.setScoreStartDate(getFirstDayDateOfMonth(dto.getScoreStartMonth())); |
|
|
|
dto.setScoreEndDate(getLastDayOfMonth(scoreEndDateMonth)); |
|
|
|
//根据部门ID获取上级所有部门信息
|
|
|
|
Result<ParentAndAllDeptDTO> parentAndAllDeptDTOResult=adminFeignClient.getParentAndAllDept(dto.getDeptId()); |
|
|
|
if(!parentAndAllDeptDTOResult.success()){ |
|
|
|
return new Result().error(parentAndAllDeptDTOResult.getMsg()); |
|
|
|
} |
|
|
|
dto.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); |
|
|
|
dto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); |
|
|
|
dto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); |
|
|
|
dto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); |
|
|
|
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class); |
|
|
|
baseDao.delete(getUniqueWrapper(entity)); |
|
|
|
insert(entity); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result update(KpiManualScoreDTO dto) { |
|
|
|
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class); |
|
|
|
//得分不能大于满分
|
|
|
|
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(dto.getRuleId()); |
|
|
|
if (null == kpiManualScoreRuleEntity) { |
|
|
|
return new Result().error("没有找到关联的手动打分项"); |
|
|
|
} else if (null != kpiManualScoreRuleEntity && dto.getScore() > kpiManualScoreRuleEntity.getFullMarks()) { |
|
|
|
return new Result().error("得分不能高于满分"); |
|
|
|
} |
|
|
|
updateById(entity); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delete(String[] ids) { |
|
|
|
// 逻辑删除(@TableLogic 注解)
|
|
|
|
baseDao.deleteBatchIds(Arrays.asList(ids)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param entity |
|
|
|
* @return com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<com.elink.esua.epdc.entity.KpiManualScoreEntity> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description |
|
|
|
* @Date 2019/12/6 13:58 |
|
|
|
**/ |
|
|
|
public QueryWrapper<KpiManualScoreEntity> getUniqueWrapper(KpiManualScoreEntity entity) { |
|
|
|
QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(entity.getRuleId()), "RULE_ID", entity.getRuleId()) |
|
|
|
.eq(StringUtils.isNotBlank(entity.getDeptId()), "DEPT_ID", entity.getDeptId()) |
|
|
|
.eq("score_end_date", entity.getScoreEndDate()) |
|
|
|
.eq("score_start_date", entity.getScoreStartDate()); |
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param userSysDeptInfoFormDTO |
|
|
|
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO>> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description |
|
|
|
* @Date 2019/12/6 13:58 |
|
|
|
**/ |
|
|
|
public Result<List<UserSysDeptInfoResultDTO>> queryUserSysDeptInfo(UserSysDeptInfoFormDTO userSysDeptInfoFormDTO) { |
|
|
|
return adminFeignClient.queryUserSysDeptInfo(userSysDeptInfoFormDTO); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param |
|
|
|
* @return java.util.List<java.lang.Long> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 用户拥有的所有部门权限 |
|
|
|
* @Date 2019/12/5 16:29 |
|
|
|
**/ |
|
|
|
public List<Long> getDataScopeDeptList() { |
|
|
|
Long userId = SecurityUser.getUserId(); |
|
|
|
// 查询当前用户所具有的的数据权限
|
|
|
|
UserDetail userDetail = userDetailRedis.get(userId); |
|
|
|
// 用户拥有的所有部门权限
|
|
|
|
return userDetail.getDeptIdList(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @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); |
|
|
|
|
|
|
|
QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); |
|
|
|
|
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
this.deleteAllFilesOfDir(f); |
|
|
|
} |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除文件夹(强制删除) |
|
|
|
* |
|
|
|
* @param path |
|
|
|
*/ |
|
|
|
public 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 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(); |
|
|
|
} |
|
|
|
return kpiManualScoreDTO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result save(KpiManualScoreDTO dto) { |
|
|
|
KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(dto.getRuleId()); |
|
|
|
//得分不能大于满分
|
|
|
|
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(kpiRuleEntity.getId()); |
|
|
|
if (null == kpiManualScoreRuleEntity) { |
|
|
|
return new Result().error("没有找到关联的手动打分项"); |
|
|
|
} else if (null != kpiManualScoreRuleEntity && dto.getScore() > kpiManualScoreRuleEntity.getFullMarks()) { |
|
|
|
return new Result().error("得分不能高于满分"); |
|
|
|
} |
|
|
|
|
|
|
|
// 考核部门基本信息
|
|
|
|
Result<SysDeptDTO> sysDeptDTOResult = adminFeignClient.getSysDeptDTO(Long.valueOf(dto.getDeptId())); |
|
|
|
if (!sysDeptDTOResult.success()) { |
|
|
|
return new Result().error(sysDeptDTOResult.getMsg()); |
|
|
|
} |
|
|
|
if (!kpiManualScoreRuleEntity.getDeptTypeKey().equals(sysDeptDTOResult.getData().getTypeKey())) { |
|
|
|
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); |
|
|
|
} |
|
|
|
dto.setScoreStartDate(getFirstDayDateOfMonth(dto.getScoreStartMonth())); |
|
|
|
dto.setScoreEndDate(getLastDayOfMonth(scoreEndDateMonth)); |
|
|
|
//根据部门ID获取上级所有部门信息
|
|
|
|
Result<ParentAndAllDeptDTO> parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(dto.getDeptId()); |
|
|
|
if (!parentAndAllDeptDTOResult.success()) { |
|
|
|
return new Result().error(parentAndAllDeptDTOResult.getMsg()); |
|
|
|
} |
|
|
|
dto.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); |
|
|
|
dto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); |
|
|
|
dto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); |
|
|
|
dto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); |
|
|
|
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class); |
|
|
|
baseDao.delete(getUniqueWrapper(entity)); |
|
|
|
insert(entity); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result update(KpiManualScoreDTO dto) { |
|
|
|
KpiManualScoreEntity entity = ConvertUtils.sourceToTarget(dto, KpiManualScoreEntity.class); |
|
|
|
//得分不能大于满分
|
|
|
|
KpiManualScoreRuleEntity kpiManualScoreRuleEntity = kpiManualScoreRuleDao.selectOneKpiManualScoreRuleByRuleId(dto.getRuleId()); |
|
|
|
if (null == kpiManualScoreRuleEntity) { |
|
|
|
return new Result().error("没有找到关联的手动打分项"); |
|
|
|
} else if (null != kpiManualScoreRuleEntity && dto.getScore() > kpiManualScoreRuleEntity.getFullMarks()) { |
|
|
|
return new Result().error("得分不能高于满分"); |
|
|
|
} |
|
|
|
updateById(entity); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delete(String[] ids) { |
|
|
|
// 逻辑删除(@TableLogic 注解)
|
|
|
|
baseDao.deleteBatchIds(Arrays.asList(ids)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param entity |
|
|
|
* @return com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<com.elink.esua.epdc.entity.KpiManualScoreEntity> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description |
|
|
|
* @Date 2019/12/6 13:58 |
|
|
|
**/ |
|
|
|
public QueryWrapper<KpiManualScoreEntity> getUniqueWrapper(KpiManualScoreEntity entity) { |
|
|
|
QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(entity.getRuleId()), "RULE_ID", entity.getRuleId()) |
|
|
|
.eq(StringUtils.isNotBlank(entity.getDeptId()), "DEPT_ID", entity.getDeptId()) |
|
|
|
.eq("score_end_date", entity.getScoreEndDate()) |
|
|
|
.eq("score_start_date", entity.getScoreStartDate()); |
|
|
|
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); |
|
|
|
|
|
|
|
QueryWrapper<KpiManualScoreEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); |
|
|
|
|
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
} |
|
|
|