diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java index c026ff4c5..723b17382 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/LocalDateUtils.java @@ -11,33 +11,33 @@ import java.util.Date; public class LocalDateUtils { - public static LocalDateTime DateToLocalDateTime(Date date) { + public static LocalDateTime dateToLocalDateTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant, zone); } - public static LocalDate DateToLocalDate(Date date) { + public static LocalDate dateToLocalDate(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); return localDateTime.toLocalDate(); } - public static LocalTime DateToLocalTime(Date date) { + public static LocalTime dateToLocalTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); return localDateTime.toLocalTime(); } - public static Date LocalDateTimeToDate(LocalDateTime localDateTime) { + public static Date localDateTimeToDate(LocalDateTime localDateTime) { ZoneId zone = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zone).toInstant(); return Date.from(instant); } - public static Date LocalDateToDate(LocalDate localDate) { + public static Date localDateToDate(LocalDate localDate) { ZoneId zone = ZoneId.systemDefault(); Instant instant = localDate.atStartOfDay().atZone(zone).toInstant(); return Date.from(instant); diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java index 0626f2f75..039ccdcf9 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreDTO.java @@ -18,9 +18,11 @@ package com.elink.esua.epdc.dto; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import javax.validation.constraints.Min; @@ -37,7 +39,7 @@ import javax.validation.constraints.NotEmpty; @Data public class KpiManualScoreDTO implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 866931079518321362L; /** * 主键 @@ -61,16 +63,18 @@ public class KpiManualScoreDTO implements Serializable { */ @NotBlank(message = "得分不能为空") @Min(0) - private Integer score; + private BigDecimal score; /** * 考核起止日期 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date scoreStartDate; /** * 考核终止日期 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date scoreEndDate; /** diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreRuleDTO.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreRuleDTO.java index d37d96a28..c55555435 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreRuleDTO.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/KpiManualScoreRuleDTO.java @@ -32,7 +32,7 @@ import java.math.BigDecimal; @Data public class KpiManualScoreRuleDTO implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = -3127206787305914421L; /** * 主键 @@ -57,7 +57,7 @@ public class KpiManualScoreRuleDTO implements Serializable { /** * 满分 */ - private Integer fullMarks; + private BigDecimal fullMarks; /** * 乐观锁 diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/result/ImportExcelErrorResultDTO.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/result/ImportExcelErrorResultDTO.java deleted file mode 100644 index d581645b6..000000000 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-client/src/main/java/com/elink/esua/epdc/dto/result/ImportExcelErrorResultDTO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.elink.esua.epdc.dto.result; - -import cn.afterturn.easypoi.excel.annotation.Excel; -import lombok.Data; - -import java.io.Serializable; - -/** - * @Description - * @Author yinzuomei - * @Date 2019/12/5 17:27 - */ -@Data -public class ImportExcelErrorResultDTO implements Serializable { - private static final long serialVersionUID = -6085396247858232510L; - - /** - * 错误数据行数 - */ - private String errorLine; - /** - * 错误数据信息 - */ - private String errorInfo; -} diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/KpiManualScoreController.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/KpiManualScoreController.java index a3c25b29f..135969eb7 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/KpiManualScoreController.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/controller/KpiManualScoreController.java @@ -17,6 +17,7 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.commons.mybatis.annotation.DataFilter; 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; @@ -56,6 +57,7 @@ public class KpiManualScoreController { private KpiManualScoreService kpiManualScoreService; @GetMapping("page") + @DataFilter(prefix = "and", tableAlias = "kmc", isPendingCreator = false) public Result> page(@RequestParam Map params) { PageData page = kpiManualScoreService.listKpiManualScoreResultDTO(params); return new Result>().ok(page); @@ -95,6 +97,19 @@ public class KpiManualScoreController { ExcelUtils.exportExcelToTarget(response, null, list, KpiManualScoreExcel.class); } + /** + * 导出打分模版前,校验选项 + * + * @param params + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/12/16 14:17 + */ + @GetMapping("checkExportTemplate") + public Result checkExportTemplate(@RequestParam Map params) { + return kpiManualScoreService.checkExportTemplate(params); + } + /** * @param params * @return void @@ -107,7 +122,6 @@ public class KpiManualScoreController { List list = kpiManualScoreService.listKpiManualScoreTemplateResultDTO(params); ExcelUtils.exportExcelToTarget(response, DateUtils.format(new Date(), DateUtils.DATE_TIME_NO_SPLIT), list, KpiManualScoreTemplateExcel.class); - } /** diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreRuleEntity.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreRuleEntity.java index dd6565885..773a7bcb4 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreRuleEntity.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreRuleEntity.java @@ -24,7 +24,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; -import java.util.Date; /** * 手动打分项 @@ -37,7 +36,7 @@ import java.util.Date; @TableName("epdc_kpi_manual_score_rule") public class KpiManualScoreRuleEntity extends BaseEpdcEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1073211664180968064L; /** * 打分项名称 @@ -57,6 +56,6 @@ public class KpiManualScoreRuleEntity extends BaseEpdcEntity { /** * 满分 */ - private Integer fullMarks; + private BigDecimal fullMarks; } diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreTempEntity.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreTempEntity.java index fa8c561df..686bb7774 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreTempEntity.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/entity/KpiManualScoreTempEntity.java @@ -17,7 +17,6 @@ package com.elink.esua.epdc.entity; -import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -32,10 +31,12 @@ import java.util.Date; */ @Data @EqualsAndHashCode(callSuper = false) -public class KpiManualScoreTempEntity extends BaseEpdcEntity { +public class KpiManualScoreTempEntity { private static final long serialVersionUID = -207911504856288902L; + private String id; + /** * epdc_kpi_rule表主键 */ diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/KpiManualScoreTemplateExcel.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/KpiManualScoreTemplateExcel.java index 15376ed2c..7de1f4d38 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/KpiManualScoreTemplateExcel.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/excel/KpiManualScoreTemplateExcel.java @@ -13,105 +13,95 @@ import java.util.Date; @Data public class KpiManualScoreTemplateExcel { - /** - * 街道 - */ - @Excel(name = "街道") - private String street; - - /** - * 社区 - */ - @Excel(name = "社区") - private String community; - - /** - * 网格 - */ - @Excel(name = "网格") - private String grid; - - /** - * 规则名称 - */ - @Excel(name = "规则名称") - private String ruleName; - - /** - * 考核周期 - */ - @Excel(name = "考核周期") - private String kpiCycleName; - - /** - * 考核起止日期 - */ - @Excel(name = "考核起止日期") - private String scoreStartTime; - - /** - * 考核终止日期 - */ - @Excel(name = "考核终止日期") - private String scoreEndTime; - - /** - * 得分 - */ - @Excel(name = "得分") - private Integer score; - - /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ - /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ - /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ - /** - * 部门名称 - * - */ - private String deptName; - - /************************************************ 组装数据 ************************************************************************/ - /** - * epdc_kpi_rule表主键 - */ - private String ruleId; - - /** - * 被打分的部门id - */ - private String deptId; - /** - * 考核起止日期 - */ - private Date scoreStartDate; - - /** - * 考核终止日期 - */ - private Date scoreEndDate; - - /** - * 所有父级部门id - */ - private String parentDeptIds; - - /** - * 所有父级部门名称 - */ - private String parentDeptNames; - - /** - * 完整部门id - */ - private String allDeptIds; - - /** - * 完整部门名称 - */ - private String allDeptNames; - - /** - * 导出用户id - */ - private String userId; + /** + * 街道 + */ + @Excel(name = "街道") + private String street; + + /** + * 社区 + */ + @Excel(name = "社区") + private String community; + + /** + * 网格 + */ + @Excel(name = "网格") + private String grid; + + /** + * 规则名称 + */ + @Excel(name = "规则名称") + private String ruleName; + + /** + * 考核周期 + */ + @Excel(name = "考核周期") + private String kpiCycleName; + + /** + * 考核起始日期 + */ + @Excel(name = "考核起始日", format = "yyyy-MM-dd") + private Date scoreStartDate; + + /** + * 考核终止日期 + */ + @Excel(name = "考核终止日", format = "yyyy-MM-dd") + private Date scoreEndDate; + + /** + * 得分 + */ + @Excel(name = "得分") + private Integer score; + + /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ + /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ + /************************************************ 我 是 一 条 分 割 线 ************************************************************************/ + /** + * 部门名称 + */ + private String deptName; + + /************************************************ 组装数据 ************************************************************************/ + /** + * epdc_kpi_rule表主键 + */ + private String ruleId; + + /** + * 被打分的部门id + */ + private String deptId; + + /** + * 所有父级部门id + */ + private String parentDeptIds; + + /** + * 所有父级部门名称 + */ + private String parentDeptNames; + + /** + * 完整部门id + */ + private String allDeptIds; + + /** + * 完整部门名称 + */ + private String allDeptNames; + + /** + * 导出用户id + */ + private String userId; } diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/KpiManualScoreService.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/KpiManualScoreService.java index 0fb4ed3f5..b5898080f 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/KpiManualScoreService.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/KpiManualScoreService.java @@ -123,4 +123,14 @@ public interface KpiManualScoreService extends BaseService * @Date 2019/12/5 15:46 **/ Result importManualScoreExcel(MultipartFile file); + + /** + * 导出打分模版前,校验选项 + * + * @param params + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/12/16 14:12 + */ + Result checkExportTemplate(Map params); } diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java index 09f3bc85f..50b8e7ed7 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/java/com/elink/esua/epdc/service/impl/KpiManualScoreServiceImpl.java @@ -26,8 +26,6 @@ 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; @@ -43,7 +41,6 @@ import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.SysDeptDTO; 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.ImportExcelErrorResultDTO; import com.elink.esua.epdc.dto.result.KpiManualScoreResultDTO; import com.elink.esua.epdc.dto.result.KpiManualScoreTemplateResultDTO; import com.elink.esua.epdc.entity.KpiManualScoreEntity; @@ -132,6 +129,36 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl params) { + //用户所选规则 + String ruleId = params.get("ruleId").toString(); + // yyyy-MM + String scoreStartMonth = params.get("scoreStartDate").toString(); + // 考核周期开始月 + YearMonth scoreStartDateMonth = YearMonth.parse(scoreStartMonth); + + // 考核规则 + KpiRuleEntity kpiRuleEntity = kpiRuleDao.selectById(ruleId); + + 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 月份可以进行季度打分 + if (monthValue != NumConstant.ONE && monthValue != NumConstant.FOUR + && monthValue != NumConstant.SEVEN && monthValue != NumConstant.TEN) { + return new Result().error("季度打分只能在1/4/7/10月份进行"); + } + } else { + int monthValue = scoreStartDateMonth.getMonthValue(); + // 只有1月份可以进行年度打分 + if (monthValue != NumConstant.ONE) { + return new Result().error("年度打分只能在1月份进行"); + } + } + return new Result(); + } + /** * @param * @return java.util.List @@ -145,7 +172,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl errorRecordList = new ArrayList<>(); List 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); + return new Result().error("Excel数据异常,请修改后重新导入"); } List kpiManualScoreEntityList = ConvertUtils.sourceToTarget(tempEntityList, KpiManualScoreEntity.class); //循环插入:如果存在则删除原纪录 @@ -342,7 +349,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl kpiManualScoreRuleEntity.getFullMarks()) { + } else if (null != kpiManualScoreRuleEntity && dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) { return new Result().error("得分不能高于满分"); } @@ -388,7 +395,7 @@ public class KpiManualScoreServiceImpl extends BaseServiceImpl kpiManualScoreRuleEntity.getFullMarks()) { + } else if (null != kpiManualScoreRuleEntity && dto.getScore().compareTo(kpiManualScoreRuleEntity.getFullMarks()) == NumConstant.ONE) { return new Result().error("得分不能高于满分"); } updateById(entity); diff --git a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/KpiManualScoreDao.xml b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/KpiManualScoreDao.xml index 95b9c9f18..257e6431f 100644 --- a/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/KpiManualScoreDao.xml +++ b/esua-epdc/epdc-module/epdc-kpi/epdc-kpi-server/src/main/resources/mapper/KpiManualScoreDao.xml @@ -4,16 +4,16 @@ - insert into epdc_kpi_manual_score_temp(rule_name, street, community ,grid ,DEPT_NAME, KPI_CYCLE_NAME, Rule_Id, + insert into epdc_kpi_manual_score_temp(id ,rule_name, street, community ,grid , KPI_CYCLE_NAME, Rule_Id, dept_id,score_start_date,score_end_date,parent_dept_ids,parent_dept_names,all_dept_ids,all_dept_names,user_id) values ( + replace(uuid(), '-', ''), #{item.ruleName,jdbcType=VARCHAR}, #{item.street,jdbcType=VARCHAR}, #{item.community,jdbcType=VARCHAR}, #{item.grid,jdbcType=VARCHAR}, - #{item.deptName,jdbcType=VARCHAR}, #{item.kpiCycleName,jdbcType=VARCHAR}, #{item.ruleId,jdbcType=VARCHAR}, #{item.deptId,jdbcType=VARCHAR}, @@ -71,7 +71,7 @@ WHERE RULE_ID =#{ruleId} AND user_id = #{userId} - AND score_start_time = STR_TO_DATE( #{scoreStartDate}, '%Y-%m-%d' ) + AND score_start_date = STR_TO_DATE( #{scoreStartDate}, '%Y-%m-%d' )