diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/AssessmentDataDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/AssessmentDataDAO.java index 72573d4b1..b1f3ebcc7 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/AssessmentDataDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/AssessmentDataDAO.java @@ -39,8 +39,11 @@ public class AssessmentDataDAO { return 0; } - public List selectList(Long shopId, String userId) { - return assessmentDataMapper.select(AssessmentDataDO.builder().shopId(shopId).assessmentUserId(userId).build()); + public List selectList(Long shopId, String userId, List templateIdList) { + Example example = new Example(AssessmentDataDO.class); + example.createCriteria().andEqualTo("assessmentUserId", userId).andEqualTo("shopId", shopId).andIn("templateId", templateIdList); + + return assessmentDataMapper.selectByExample(example); } public AssessmentDataDO selectByTemplateId(Long templateId, String userId, Long shopId) { @@ -60,4 +63,9 @@ public class AssessmentDataDAO { example.createCriteria().andEqualTo("assessmentUserId", userId).andEqualTo("shopId", shopId).andIsNotNull("qualified"); return assessmentDataMapper.selectCountByExample(example); } + + public AssessmentDataDO selectByPrimaryKey(Long id) { + return assessmentDataMapper.selectByPrimaryKey(id); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EmployeeTrainingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EmployeeTrainingDAO.java index 2c5ceea94..e95c02cdb 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EmployeeTrainingDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EmployeeTrainingDAO.java @@ -56,5 +56,11 @@ public class EmployeeTrainingDAO { return employeeTrainingMapper.trainingListByShopId(shopId, trainingTeacherUserId, status); } - + public List assessmentUserList(String name, String practicalAssessmentUserId, + Integer assessmentStatus, + String estimatedAssessmentBeginTime, String estimatedAssessmentEndTime, + String actualAssessmentBeginTime, String actualAssessmentEndTime) { + return employeeTrainingMapper.assessmentUserList(name, practicalAssessmentUserId, assessmentStatus, estimatedAssessmentBeginTime, + estimatedAssessmentEndTime, actualAssessmentBeginTime, actualAssessmentEndTime); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EmployeeTrainingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EmployeeTrainingMapper.java index e7a36cfad..7e0377878 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EmployeeTrainingMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EmployeeTrainingMapper.java @@ -11,13 +11,19 @@ import java.util.List; public interface EmployeeTrainingMapper extends Mapper { - List employeeTrainingMapper(@Param("keyWord") String keyWord, @Param("regionIdList") List regionIdList, - @Param("authRegionIdList") List authRegionIdList, @Param("assignFlag") Boolean assignFlag, - @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("shopIdList") List shopIdList, - @Param("theoreticalExamStatus") Integer theoreticalExamStatus, - @Param("practicalExamStatus") Integer practicalExamStatus, - @Param("assessmentStatus") Integer assessmentStatus); + List employeeTrainingMapper(@Param("keyWord") String keyWord, @Param("regionIdList") List regionIdList, + @Param("authRegionIdList") List authRegionIdList, @Param("assignFlag") Boolean assignFlag, + @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("shopIdList") List shopIdList, + @Param("theoreticalExamStatus") Integer theoreticalExamStatus, + @Param("practicalExamStatus") Integer practicalExamStatus, + @Param("assessmentStatus") Integer assessmentStatus); - List trainingListByShopId(@Param("shopId") Long shopId, @Param("trainingTeacherUserId") String trainingTeacherUserId, - @Param("status") Integer status); + List trainingListByShopId(@Param("shopId") Long shopId, @Param("trainingTeacherUserId") String trainingTeacherUserId, + @Param("status") Integer status); + + List assessmentUserList(@Param("name") String name, @Param("practicalAssessmentUserId") String practicalAssessmentUserId, + @Param("assessmentStatus") Integer assessmentStatus, + @Param("estimatedAssessmentBeginTime") String estimatedAssessmentBeginTime, @Param("estimatedAssessmentEndTime") String estimatedAssessmentEndTime, + @Param("actualAssessmentBeginTime") String actualAssessmentBeginTime, @Param("actualAssessmentEndTime") String actualAssessmentEndTime + ); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml index 22cd4df73..e40a5b4c9 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml @@ -124,4 +124,55 @@ and u.shop_id = #{shopId} + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/EmployeeTrainingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/EmployeeTrainingDO.java index e3e090c02..d964f2c60 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/EmployeeTrainingDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/EmployeeTrainingDO.java @@ -99,7 +99,7 @@ public class EmployeeTrainingDO { * 理论考试状态 0-未开始 1-合格 2-不合格 */ @Column(name = "theoretical_exam_status") - private Byte theoreticalExamStatus; + private Integer theoreticalExamStatus; /** * 理论考试分值 @@ -111,7 +111,7 @@ public class EmployeeTrainingDO { * 实操考试状态 0-未开始 1-合格 2-不合格 */ @Column(name = "practical_exam_status") - private Byte practicalExamStatus; + private Integer practicalExamStatus; /** * 实操考试分值 @@ -123,7 +123,7 @@ public class EmployeeTrainingDO { * 考核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过 */ @Column(name = "assessment_status") - private Byte assessmentStatus; + private Integer assessmentStatus; /** * 创建时间 diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitListRequest.java new file mode 100644 index 000000000..4f454b39e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitListRequest.java @@ -0,0 +1,20 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author byd + * @date 2024-04-30 17:30 + */ +@Data +public class EmployeeAssessmentCommitListRequest { + + @ApiModelProperty("培训id") + private Long employeeTrainingId; + + @ApiModelProperty("培训考核结果列表") + List list; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitRequest.java new file mode 100644 index 000000000..1ee6a66c8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentCommitRequest.java @@ -0,0 +1,27 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author byd + * @date 2024-04-30 11:10 + */ +@Data +public class EmployeeAssessmentCommitRequest { + + @ApiModelProperty("数据项id") + private Long id; + + @ApiModelProperty("模版id") + private Long templateId; + + @ApiModelProperty("店铺id") + private Long shopId; + + @ApiModelProperty("得分") + private Long score; + + @ApiModelProperty("评语") + private String comments; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentRequest.java new file mode 100644 index 000000000..b2012b535 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentRequest.java @@ -0,0 +1,37 @@ +package com.cool.store.request; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author byd + * @date 2024-04-30 11:10 + */ +@Data +public class EmployeeAssessmentRequest extends PageBasicInfo { + + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("预计考核时间-开始") + private Long estimatedAssessmentBeginTime; + + @ApiModelProperty("预计考核时间-结束") + private Long estimatedAssessmentEndTime; + + @ApiModelProperty("实际考核时间-开始") + private Long actualAssessmentBeginTime; + + @ApiModelProperty("实际考核时间-结束") + private Long actualAssessmentEndTime; + + @ApiModelProperty("实训门店id列表") + private List storeIdList; + + @ApiModelProperty("考核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过") + private Integer assessmentStatus; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentTurnRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentTurnRequest.java new file mode 100644 index 000000000..d4f7ba0c9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeAssessmentTurnRequest.java @@ -0,0 +1,20 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author byd + * @date 2024-04-30 11:10 + */ +@Data +public class EmployeeAssessmentTurnRequest { + + + @ApiModelProperty("员工id") + private Long id; + + @ApiModelProperty("转交人id") + private String turnUserId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java index cd1f4fdd6..ef8552e7d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java @@ -10,9 +10,11 @@ import lombok.Data; @Data public class EmployeeTrainingCommitRequest { + @ApiModelProperty("数据项id") + private Long id; @ApiModelProperty("模版id") - private Long templateId; + private Long templateId; @ApiModelProperty("店铺id") private Long shopId; @@ -25,6 +27,4 @@ public class EmployeeTrainingCommitRequest { */ @ApiModelProperty("店铺是否合格") private Boolean qualified; - - } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentUserTrainingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentUserTrainingVO.java new file mode 100644 index 000000000..6819f035e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentUserTrainingVO.java @@ -0,0 +1,110 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Column; +import java.util.Date; +import java.util.List; + +/** + * @author byd + * @date 2024-04-30 10:53 + */ +@Data +public class AssessmentUserTrainingVO { + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("名字") + private String username; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("身份证号") + private String idCard; + + @ApiModelProperty("区域id") + private Long regionId; + + @ApiModelProperty("角色id 170000000-店长 180000000-店员") + private Long roleId; + + @ApiModelProperty("店铺id") + private Long shopId; + + @ApiModelProperty("店铺名称") + private String shopName; + + @ApiModelProperty("培训id") + private Long employeeTrainingId; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店ID") + private String trainingStoreId; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店名称") + private String trainingStoreName; + + /** + * 实操考核人员ID + */ + @ApiModelProperty("实操考核人员ID") + private String practicalAssessmentUserId; + + @ApiModelProperty("实操考核人员名称") + private String practicalAssessmentUserName; + + /** + * 预计考核时间 + */ + @ApiModelProperty("预计考核时间") + private Date estimatedAssessmentTime; + + /** + * 实际考核时间 + */ + @ApiModelProperty("实际考核时间") + private Date actualAssessmentTime; + + /** + * 理论考试状态 0-未开始 1-合格 2-不合格 + */ + @ApiModelProperty("理论考试状态 0-未开始 1-合格 2-不合格") + private Integer theoreticalExamStatus; + + /** + * 理论考试分值 + */ + @ApiModelProperty("理论考试分值") + private Integer theoreticalExamScore; + + /** + * 实操考试分值 + */ + @ApiModelProperty("实操考试分值") + private Integer practicalExamScore; + + + @ApiModelProperty("实操考试状态") + private Integer practicalExamStatus; + + + /** + * 考核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过 + */ + @ApiModelProperty("核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过") + private Integer assessmentStatus; + + + @ApiModelProperty("考核数据") + List templateDataList; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingDetailVO.java index 3ea95994d..38c38acd5 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingDetailVO.java @@ -130,7 +130,7 @@ public class EmployeeTrainingDetailVO { * 理论考试状态 0-未开始 1-合格 2-不合格 */ @ApiModelProperty("理论考试状态 0-未开始 1-合格 2-不合格") - private Byte theoreticalExamStatus; + private Integer theoreticalExamStatus; /** * 理论考试分值 @@ -142,7 +142,7 @@ public class EmployeeTrainingDetailVO { * 实操考试状态 0-未开始 1-合格 2-不合格 */ @ApiModelProperty("实操考试状态 0-未开始 1-合格 2-不合格") - private Byte practicalExamStatus; + private Integer practicalExamStatus; /** * 实操考试分值 @@ -154,6 +154,6 @@ public class EmployeeTrainingDetailVO { * 考核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过 */ @ApiModelProperty("考核状态 0-培训中 1-带考核 2-考核通过 3-考核不通过") - private Byte assessmentStatus; + private Integer assessmentStatus; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingVO.java index 6b3936b03..cdf193800 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeTrainingVO.java @@ -3,6 +3,7 @@ package com.cool.store.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.persistence.Column; import java.util.Date; /** @@ -107,4 +108,15 @@ public class EmployeeTrainingVO { @ApiModelProperty("实操考核人员名称") private String practicalAssessmentUserName; + /** + * 预计考核时间 + */ + @ApiModelProperty("预计考核时间") + private Date estimatedAssessmentTime; + + /** + * 实际考核时间 + */ + @ApiModelProperty("实际考核时间") + private Date actualAssessmentTime; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EmployeeTrainingService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EmployeeTrainingService.java index 55dd55ef9..42784f2b6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/EmployeeTrainingService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EmployeeTrainingService.java @@ -1,8 +1,7 @@ package com.cool.store.service; -import com.cool.store.request.EmployeeTrainingCommitListRequest; -import com.cool.store.request.EmployeeTrainingDetailRequest; -import com.cool.store.request.EmployeeTrainingRequest; +import com.cool.store.request.*; +import com.cool.store.vo.AssessmentUserTrainingVO; import com.cool.store.vo.EmployeeTrainingDetailVO; import com.cool.store.vo.EmployeeTrainingVO; import com.cool.store.vo.EmployeeUserTrainingVO; @@ -29,4 +28,12 @@ public interface EmployeeTrainingService { EmployeeUserTrainingVO trainerUserDetail(Long id); void trainerUserCommit(EmployeeTrainingCommitListRequest request); + + PageInfo assessmentUserList(String userId, EmployeeAssessmentRequest request); + + AssessmentUserTrainingVO assessmentUserDetail(Long id); + + void turn(Long id, String userId, String turnUserId); + + void assessmentUserCommit(EmployeeAssessmentCommitListRequest request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EmployeeTrainingServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EmployeeTrainingServiceImpl.java index 234b0b807..825696ac0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EmployeeTrainingServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EmployeeTrainingServiceImpl.java @@ -1,23 +1,17 @@ package com.cool.store.service.impl; -import cn.hutool.core.date.DateUtil; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.entity.*; import com.cool.store.enums.AssessmentTemplateType; import com.cool.store.exception.ServiceException; -import com.cool.store.request.EmployeeTrainingCommitListRequest; -import com.cool.store.request.EmployeeTrainingDetailRequest; -import com.cool.store.request.EmployeeTrainingRequest; +import com.cool.store.request.*; import com.cool.store.service.EmployeeTrainingService; import com.cool.store.service.RegionService; import com.cool.store.service.SysRoleService; import com.cool.store.service.UserAuthMappingService; import com.cool.store.utils.poi.DateUtils; -import com.cool.store.vo.AssessmentTemplateDataVO; -import com.cool.store.vo.EmployeeTrainingDetailVO; -import com.cool.store.vo.EmployeeTrainingVO; -import com.cool.store.vo.EmployeeUserTrainingVO; +import com.cool.store.vo.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; @@ -27,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; /** * @author byd @@ -60,7 +55,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { private EnterpriseUserDAO enterpriseUserDAO; @Resource - private StoreDao storeDao; + private StoreDao storeDAO; @Resource private AssessmentTemplateDAO assessmentTemplateDAO; @@ -68,6 +63,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { @Resource private AssessmentDataDAO assessmentDataDAO; + @Override public PageInfo employeeTrainingList(String userId, EmployeeTrainingRequest request) { List authRegionIdList = new ArrayList<>(); @@ -76,8 +72,8 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { } PageHelper.startPage(request.getPageNum(), request.getPageSize()); List list = employeeTrainingDAO.employeeTrainingList(request.getKeyWord(), request.getRegionIdList(), authRegionIdList, request.getAssignFlag(), - DateUtil.format(new Date(request.getBeginTime()), DateUtils.YYYY_MM_DD_HH_MM_SS), - DateUtil.format(new Date(request.getEndTime()), DateUtils.YYYY_MM_DD_HH_MM_SS), null, + DateUtils.parseLongDateToStr(request.getBeginTime()), + DateUtils.parseLongDateToStr(request.getEndTime()), null, request.getTheoreticalExamStatus(), request.getPracticalExamStatus(), request.getAssessmentStatus()); list.forEach(item -> { @@ -103,7 +99,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { employeeTrainingVO.setTrainingStartTime(employeeTrainingDO.getTrainingStartTime()); employeeTrainingVO.setTrainingEndTime(employeeTrainingDO.getTrainingEndTime()); employeeTrainingVO.setTrainingStoreId(employeeTrainingDO.getTrainingStoreId()); - StoreDO storeDO = storeDao.getByStoreId(employeeTrainingDO.getTrainingStoreId()); + StoreDO storeDO = storeDAO.getByStoreId(employeeTrainingDO.getTrainingStoreId()); if (storeDO != null) { employeeTrainingVO.setTrainingStoreName(storeDO.getStoreName()); } @@ -162,6 +158,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { employeeTrainingDO.setEstimatedAssessmentTime(request.getEstimatedAssessmentTime()); employeeTrainingDO.setAssessmentNum(0); employeeTrainingDO.setAssessmentTotalNum(assessmentTemplateDOList.size()); + employeeTrainingDO.setAssessmentStatus(0); if (employeeTrainingDO.getId() == null) { employeeTrainingDO.setXfsgUserDetailId(tempUserDetailDO.getId()); employeeTrainingDO.setRegionId(tempUserDetailDO.getRegionId()); @@ -189,7 +186,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { List list = employeeTrainingDAO.trainingListByShopId(shopId, null, null); list.forEach(item -> { - StoreDO storeDO = storeDao.getByStoreId(item.getTrainingStoreId()); + StoreDO storeDO = storeDAO.getByStoreId(item.getTrainingStoreId()); if (storeDO != null) { item.setTrainingStoreName(storeDO.getStoreName()); } @@ -201,7 +198,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { public List trainerUserList(String userId, Integer status) { List list = employeeTrainingDAO.trainingListByShopId(null, userId, status); list.forEach(item -> { - StoreDO storeDO = storeDao.getByStoreId(item.getTrainingStoreId()); + StoreDO storeDO = storeDAO.getByStoreId(item.getTrainingStoreId()); if (storeDO != null) { item.setTrainingStoreName(storeDO.getStoreName()); } @@ -228,8 +225,9 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { employeeUserTrainingVO.setRoleId(tempUserDetailDO.getRoleId()); employeeUserTrainingVO.setIdCard(tempUserDetailDO.getIdCard()); List assessmentTemplateDOList = assessmentTemplateDAO.listByType(AssessmentTemplateType.TRAINER.getCode()); + List templateIdList = assessmentTemplateDOList.stream().map(AssessmentTemplateDO::getId).collect(Collectors.toList()); - List assessmentDataDOList = assessmentDataDAO.selectList(tempUserDetailDO.getShopId(), enterpriseUserDO.getUserId()); + List assessmentDataDOList = assessmentDataDAO.selectList(tempUserDetailDO.getShopId(), enterpriseUserDO.getUserId(), templateIdList); Map assessmentDataMap = new HashMap<>(); assessmentDataDOList.forEach(item -> { @@ -262,7 +260,7 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { @Transactional(rollbackFor = Exception.class) @Override public void trainerUserCommit(EmployeeTrainingCommitListRequest request) { - if(CollectionUtils.isEmpty(request.getList())){ + if (CollectionUtils.isEmpty(request.getList())) { return; } Long shopId = request.getList().get(0).getShopId(); @@ -273,7 +271,12 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); String userId = enterpriseUserDO.getUserId(); request.getList().forEach(item -> { - AssessmentDataDO assessmentDataDO = assessmentDataDAO.selectByTemplateId(item.getTemplateId(), item.getUserDetailId(), item.getShopId()); + AssessmentDataDO assessmentDataDO = null; + if (item.getId() != null) { + assessmentDataDO = assessmentDataDAO.selectByPrimaryKey(item.getId()); + } else { + assessmentDataDO = assessmentDataDAO.selectByTemplateId(item.getTemplateId(), item.getUserDetailId(), item.getShopId()); + } if (assessmentDataDO != null) { assessmentDataDO.setQualified(item.getQualified()); assessmentDataDAO.updateByPrimaryKeySelective(assessmentDataDO); @@ -288,6 +291,162 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { }); Integer num = assessmentDataDAO.selectCount(userId, shopId); employeeTrainingDO.setAssessmentNum(num); + if(num.equals(employeeTrainingDO.getAssessmentTotalNum())){ + employeeTrainingDO.setAssessmentStatus(1); + } + employeeTrainingDAO.updateByPrimaryKeySelective(employeeTrainingDO); + } + + @Override + public PageInfo assessmentUserList(String userId, EmployeeAssessmentRequest request) { + + PageHelper.startPage(request.getPageNum(), request.getPageSize()); + List employeeTrainingVOList = employeeTrainingDAO.assessmentUserList(request.getName(), userId, request.getAssessmentStatus(), + DateUtils.parseLongDateToStr(request.getEstimatedAssessmentBeginTime()), + DateUtils.parseLongDateToStr(request.getEstimatedAssessmentEndTime()), + DateUtils.parseLongDateToStr(request.getActualAssessmentBeginTime()), + DateUtils.parseLongDateToStr(request.getActualAssessmentEndTime())); + if (CollectionUtils.isEmpty(employeeTrainingVOList)) { + return new PageInfo<>(employeeTrainingVOList); + } + List storeIdList = employeeTrainingVOList.stream().map(EmployeeTrainingVO::getTrainingStoreId).collect(Collectors.toList()); + List storeDOList = storeDAO.getEffectiveStoreByStoreIds(storeIdList); + Map storeNameMap = storeDOList.stream().collect(Collectors.toMap(StoreDO::getStoreId, StoreDO::getStoreName)); + employeeTrainingVOList.forEach(item -> { + item.setTrainingStoreName(storeNameMap.get(item.getTrainingStoreId())); + }); + return new PageInfo<>(employeeTrainingVOList); + } + + @Override + public AssessmentUserTrainingVO assessmentUserDetail(Long id) { + AssessmentUserTrainingVO assessmentUserTrainingVO = new AssessmentUserTrainingVO(); + TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(id); + + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); + + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectByUserDetailId(id); + assessmentUserTrainingVO.setEmployeeTrainingId(employeeTrainingDO.getId()); + assessmentUserTrainingVO.setTrainingStoreId(employeeTrainingDO.getTrainingStoreId()); + StoreDO storeDO = storeDAO.getByStoreId(employeeTrainingDO.getTrainingStoreId()); + if (storeDO != null) { + assessmentUserTrainingVO.setTrainingStoreName(storeDO.getStoreName()); + } + assessmentUserTrainingVO.setPracticalAssessmentUserId(employeeTrainingDO.getPracticalAssessmentUserId()); + assessmentUserTrainingVO.setPracticalAssessmentUserName(enterpriseUserDAO.getUserName(employeeTrainingDO.getPracticalAssessmentUserId())); + assessmentUserTrainingVO.setMobile(tempUserDetailDO.getMobile()); + assessmentUserTrainingVO.setRoleId(tempUserDetailDO.getRoleId()); + assessmentUserTrainingVO.setIdCard(tempUserDetailDO.getIdCard()); + assessmentUserTrainingVO.setActualAssessmentTime(employeeTrainingDO.getActualAssessmentTime()); + assessmentUserTrainingVO.setEstimatedAssessmentTime(employeeTrainingDO.getEstimatedAssessmentTime()); + assessmentUserTrainingVO.setUsername(tempUserDetailDO.getUsername()); + assessmentUserTrainingVO.setAssessmentStatus(employeeTrainingDO.getAssessmentStatus()); + assessmentUserTrainingVO.setShopId(tempUserDetailDO.getShopId()); + assessmentUserTrainingVO.setTheoreticalExamStatus(employeeTrainingDO.getTheoreticalExamStatus()); + assessmentUserTrainingVO.setTheoreticalExamScore(employeeTrainingDO.getTheoreticalExamScore()); + assessmentUserTrainingVO.setPracticalExamScore(employeeTrainingDO.getPracticalExamScore()); + assessmentUserTrainingVO.setPracticalExamStatus(employeeTrainingDO.getPracticalExamStatus()); + ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(employeeTrainingDO.getShopId()); + if (shopInfoDO != null) { + assessmentUserTrainingVO.setShopName(shopInfoDO.getShopName()); + } + + List assessmentTemplateDOList = assessmentTemplateDAO.listByType(AssessmentTemplateType.STORE_MANAGER.getCode()); + + List templateIdList = assessmentTemplateDOList.stream().map(AssessmentTemplateDO::getId).collect(Collectors.toList()); + + List assessmentDataDOList = assessmentDataDAO.selectList(tempUserDetailDO.getShopId(), enterpriseUserDO.getUserId(), templateIdList); + + Map assessmentDataMap = new HashMap<>(); + assessmentDataDOList.forEach(item -> { + assessmentDataMap.put(item.getTemplateId() + CommonConstants.COLON + item.getAssessmentUserId(), item); + }); + List templateDataVOList = new ArrayList<>(); + assessmentTemplateDOList.forEach(item -> { + AssessmentTemplateDataVO assessmentTemplateDataVO = new AssessmentTemplateDataVO(); + AssessmentDataDO assessmentDataDO = assessmentDataMap.get(item.getId() + CommonConstants.COLON + enterpriseUserDO.getUserId()); + if (assessmentDataDO != null) { + assessmentTemplateDataVO.setGoalScore(assessmentDataDO.getScore()); + assessmentTemplateDataVO.setReason(assessmentDataDO.getReason()); + assessmentTemplateDataVO.setComments(assessmentDataDO.getComments()); + assessmentTemplateDataVO.setQualified(assessmentDataDO.getQualified()); + assessmentTemplateDataVO.setAssessmentDataId(assessmentDataDO.getId()); + } + assessmentTemplateDataVO.setScore(item.getScore()); + assessmentTemplateDataVO.setTemplateName(item.getTemplateName()); + assessmentTemplateDataVO.setTemplateRemarkList(Arrays.asList(item.getTemplateRemark().split(CommonConstants.COMMA))); + assessmentTemplateDataVO.setCategory(item.getCategory()); + assessmentTemplateDataVO.setId(item.getId()); + assessmentTemplateDataVO.setType(item.getType()); + assessmentTemplateDataVO.setCategory(item.getCategory()); + assessmentTemplateDataVO.setTemplateRequirements(item.getTemplateRequirements()); + templateDataVOList.add(assessmentTemplateDataVO); + }); + assessmentUserTrainingVO.setTemplateDataList(templateDataVOList); + return assessmentUserTrainingVO; + } + + @Override + public void turn(Long id, String userId, String turnUserId) { + TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(id); + + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectByUserDetailId(id); + + employeeTrainingDO.setPracticalAssessmentUserId(turnUserId); + + employeeTrainingDAO.updateByPrimaryKeySelective(employeeTrainingDO); + } + + @Override + public void assessmentUserCommit(EmployeeAssessmentCommitListRequest request) { + if (CollectionUtils.isEmpty(request.getList())) { + return; + } + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectById(request.getEmployeeTrainingId()); + TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(employeeTrainingDO.getXfsgUserDetailId()); + + Boolean pass = true; + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); + String userId = enterpriseUserDO.getUserId(); + AtomicReference totalScore = new AtomicReference<>(0L); + request.getList().forEach(item -> { + AssessmentDataDO assessmentDataDO = null; + totalScore.set(totalScore.get() + item.getScore()); + if (item.getId() != null) { + assessmentDataDO = assessmentDataDAO.selectByPrimaryKey(item.getId()); + } else { + assessmentDataDO = assessmentDataDAO.selectByTemplateId(item.getTemplateId(), employeeTrainingDO.getXfsgUserDetailId().toString(), item.getShopId()); + } + if (assessmentDataDO != null) { + assessmentDataDO.setScore(item.getScore()); + assessmentDataDO.setComments(item.getComments()); + assessmentDataDAO.updateByPrimaryKeySelective(assessmentDataDO); + } else { + assessmentDataDO = new AssessmentDataDO(); + assessmentDataDO.setTemplateId(item.getTemplateId()); + assessmentDataDO.setShopId(item.getShopId()); + assessmentDataDO.setComments(item.getComments()); + assessmentDataDO.setScore(item.getScore()); + assessmentDataDO.setAssessmentUserId(employeeTrainingDO.getXfsgUserDetailId().toString()); + assessmentDataDAO.insertSelective(assessmentDataDO); + } + }); + + employeeTrainingDO.setPracticalAssessmentUserId(userId); + employeeTrainingDO.setPracticalExamScore(totalScore.get().intValue()); + if (totalScore.get().intValue() > CommonConstants.NINETY) { + employeeTrainingDO.setPracticalExamStatus(1); + } else { + employeeTrainingDO.setPracticalExamStatus(0); + } + employeeTrainingDO.setPracticalExamScore(totalScore.get().intValue()); + employeeTrainingDO.setActualAssessmentTime(new Date()); + if(employeeTrainingDO.getPracticalExamStatus() == 2 || employeeTrainingDO.getTheoreticalExamStatus() == 2){ + employeeTrainingDO.setAssessmentStatus(3); + } + if(employeeTrainingDO.getPracticalExamStatus() == 1 && employeeTrainingDO.getTheoreticalExamStatus() == 1){ + employeeTrainingDO.setAssessmentStatus(2); + } employeeTrainingDAO.updateByPrimaryKeySelective(employeeTrainingDO); } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TempUserDetailServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TempUserDetailServiceImpl.java index 6d3f77d51..f0ec22dff 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TempUserDetailServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TempUserDetailServiceImpl.java @@ -98,9 +98,9 @@ public class TempUserDetailServiceImpl implements TempUserDetailService { if(shopInfoDO == null){ throw new ServiceException("该店铺不存在"); } - if(StringUtil.isNotBlank(shopInfoDO.getStoreNum())){ - throw new ServiceException("系统建店已完成,无法手动登记"); - } +// if(StringUtil.isNotBlank(shopInfoDO.getStoreNum())){ +// throw new ServiceException("系统建店已完成,无法手动登记"); +// } tempUserDetailDO = new TempUserDetailDO(); tempUserDetailDO.setLineId(shopInfoDO.getLineId()); tempUserDetailDO.setShopId(tempUserDetailRequest.getShopId()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java index 704be6ea3..dbd836155 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java @@ -17,8 +17,7 @@ import java.util.Date; * * @author fanlyun */ -public class DateUtils extends org.apache.commons.lang3.time.DateUtils -{ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String YYYY = "yyyy"; public static String YYYY_MM = "yyyy-MM"; @@ -47,8 +46,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils * * @return Date() 当前日期 */ - public static Date getNowDate() - { + public static Date getNowDate() { return new Date(); } @@ -57,56 +55,48 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils * * @return String */ - public static String getDate() - { + public static String getDate() { return dateTimeNow(YYYY_MM_DD); } - public static String getTime() - { + public static String getTime() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS); } - public static String dateTimeNow() - { + public static String dateTimeNow() { return dateTimeNow(YYYYMMDDHHMMSS); } - public static String dateTimeNow(final String format) - { + public static String dateTimeNow(final String format) { return parseDateToStr(format, new Date()); } - public static String dateTime(final Date date) - { + public static String dateTime(final Date date) { return parseDateToStr(YYYY_MM_DD, date); } /** * 格式化日期 + * * @param format 格式化规则 - * @param date 日期 + * @param date 日期 * @return 格式化完毕的日期 */ - public static String parseDateToStr(final String format, final Date date) - { + public static String parseDateToStr(final String format, final Date date) { return new SimpleDateFormat(format).format(date); } /** * 以规则解析时间字符串 + * * @param format 格式化规则 - * @param ts 时间字符串 + * @param ts 时间字符串 * @return 解析后时间 */ - public static Date dateTime(final String format, final String ts) - { - try - { + public static Date dateTime(final String format, final String ts) { + try { return new SimpleDateFormat(format).parse(ts); - } - catch (ParseException e) - { + } catch (ParseException e) { throw new RuntimeException(e); } } @@ -114,8 +104,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 日期路径 即年/月/日 如2018/08/08 */ - public static String datePath() - { + public static String datePath() { Date now = new Date(); return DateFormatUtils.format(now, "yyyy/MM/dd"); } @@ -123,8 +112,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 日期路径 即年/月/日 如20180808 */ - public static String dateTime() - { + public static String dateTime() { Date now = new Date(); return DateFormatUtils.format(now, "yyyyMMdd"); } @@ -132,18 +120,13 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 日期型字符串转化为日期 格式 */ - public static Date parseDate(Object str) - { - if (str == null) - { + public static Date parseDate(Object str) { + if (str == null) { return null; } - try - { + try { return parseDate(str.toString(), parsePatterns); - } - catch (ParseException e) - { + } catch (ParseException e) { return null; } } @@ -151,8 +134,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 获取服务器启动时间 */ - public static Date getServerStartDate() - { + public static Date getServerStartDate() { long time = ManagementFactory.getRuntimeMXBean().getStartTime(); return new Date(time); } @@ -160,8 +142,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 计算两个时间差 */ - public static String getDatePoor(Date endDate, Date nowDate) - { + public static String getDatePoor(Date endDate, Date nowDate) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; @@ -181,6 +162,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 以规则解析时间字符串 + * * @param strDate 时间字符串 * @param pattern 格式化规则 * @return 解析后时间 @@ -193,6 +175,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 根据毫秒数获取时间 + * * @param millis 毫秒数 * @return 时间 */ @@ -201,16 +184,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils SimpleDateFormat simpleDateFormat = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS); Date date = new Date(); date.setTime(millis); - return simpleDateFormat.format(date); + return simpleDateFormat.format(date); } - public static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; public static String NOTICE_DATE = "yyyy年MM月dd日 HH:mm"; /** * 返回11个月之前的月,从月的第一天开始,如当前是2020-05-03 返回的是2019-06-01 00:00:00 + * * @return Date */ public static Date getNestOneYear() { @@ -220,6 +203,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils /** * 从1.8新增的{@link LocalDate}转换为{@link Date} + * * @param localDate {@link LocalDate} * @return 时间 */ @@ -229,4 +213,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils return Date.from(instant); } + public static String parseLongDateToStr(final Long time) { + if (time == null) { + return null; + } + return new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS).format(new Date(time)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/EmployeeTrainingController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/EmployeeTrainingController.java index 45fb89c6a..3e2d81c87 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/EmployeeTrainingController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/EmployeeTrainingController.java @@ -1,11 +1,10 @@ package com.cool.store.controller.webb; import com.cool.store.context.CurrentUserHolder; -import com.cool.store.request.EmployeeTrainingCommitListRequest; -import com.cool.store.request.EmployeeTrainingDetailRequest; -import com.cool.store.request.EmployeeTrainingRequest; +import com.cool.store.request.*; import com.cool.store.response.ResponseResult; import com.cool.store.service.EmployeeTrainingService; +import com.cool.store.vo.AssessmentUserTrainingVO; import com.cool.store.vo.EmployeeTrainingDetailVO; import com.cool.store.vo.EmployeeTrainingVO; import com.cool.store.vo.EmployeeUserTrainingVO; @@ -81,6 +80,39 @@ public class EmployeeTrainingController { @ApiOperation("培训-教练员-提交培训") @PostMapping("/trainerUserCommit") public ResponseResult trainerUserCommit(@RequestBody EmployeeTrainingCommitListRequest request) { + employeeTrainingService.trainerUserCommit(request); return ResponseResult.success(Boolean.TRUE); } + + + @ApiOperation("培训-战区经理-考核员工列表") + @PostMapping("/assessmentUserList") + public ResponseResult> assessmentUserList(@RequestBody EmployeeAssessmentRequest request) { + return ResponseResult.success(employeeTrainingService.assessmentUserList(CurrentUserHolder.getUserId(), request)); + } + + @ApiOperation("培训-战区经理-员工考核详情") + @PostMapping("/assessmentUserDetail") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "员工id", required = true) + }) + public ResponseResult assessmentUserDetail(Long id) { + return ResponseResult.success(employeeTrainingService.assessmentUserDetail(id)); + } + + @ApiOperation("培训-实训考核-转交") + @PostMapping("/turn") + public ResponseResult turn(@RequestBody EmployeeAssessmentTurnRequest request) { + employeeTrainingService.turn(request.getId(), CurrentUserHolder.getUserId(), request.getTurnUserId()); + return ResponseResult.success(Boolean.TRUE); + } + + @ApiOperation("培训-实训考核-提交考核结果") + @PostMapping("/assessmentUserCommit") + public ResponseResult assessmentUserCommit(@RequestBody EmployeeAssessmentCommitListRequest request) { + employeeTrainingService.assessmentUserCommit(request); + return ResponseResult.success(Boolean.TRUE); + } + + }