From 3951445ab376866251bf2eda99df134d492c3fd7 Mon Sep 17 00:00:00 2001 From: bianyadong Date: Tue, 30 Apr 2024 18:29:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=B9=E8=AE=AD=E6=95=99=E7=BB=83=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/enums/AssessmentTemplateType.java | 40 +++++ .../com/cool/store/dao/AssessmentDataDAO.java | 27 ++- .../cool/store/dao/EmployeeTrainingDAO.java | 26 ++- .../store/mapper/EmployeeTrainingMapper.java | 10 +- .../mapper/EmployeeTrainingMapper.xml | 44 +++++ .../cool/store/entity/AssessmentDataDO.java | 150 ++-------------- .../cool/store/entity/TempUserDetailDO.java | 4 +- .../EmployeeTrainingCommitListRequest.java | 17 ++ .../EmployeeTrainingCommitRequest.java | 30 ++++ .../request/EmployeeTrainingRequest.java | 10 ++ .../store/vo/AssessmentTemplateDataVO.java | 84 +++++++++ .../com/cool/store/vo/EmployeeTrainingVO.java | 44 +++++ .../cool/store/vo/EmployeeUserTrainingVO.java | 85 +++++++++ .../service/EmployeeTrainingService.java | 12 ++ .../impl/EmployeeTrainingServiceImpl.java | 167 +++++++++++++++++- .../webb/EmployeeTrainingController.java | 45 ++++- .../webc/MiniEmployeeTrainingController.java | 40 +++++ 17 files changed, 678 insertions(+), 157 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/AssessmentTemplateType.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitListRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentTemplateDataVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeUserTrainingVO.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniEmployeeTrainingController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AssessmentTemplateType.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AssessmentTemplateType.java new file mode 100644 index 000000000..298c9e4ef --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AssessmentTemplateType.java @@ -0,0 +1,40 @@ +package com.cool.store.enums; + +/** + * @author byd + * @date 2024-04-30 15:54 + */ +public enum AssessmentTemplateType { + + TRAINER(0, "教练员"), + STORE_MANAGER(1, "店长"), + CLERK(2, "店员"), + TRIPARTITE_ACCEPTANCE(3, "三方验收"), + ; + + private Integer code; + + private String name; + + private AssessmentTemplateType(Integer code, String name) { + this.code = code; + this.name = name; + } + + public Integer getCode() { + return code; + } + + public String getName() { + return name; + } + + public static AssessmentTemplateType getByCode(Integer code) { + for (AssessmentTemplateType auditStatusEnum : AssessmentTemplateType.values()) { + if (auditStatusEnum.getCode().equals(code)) { + return auditStatusEnum; + } + } + return null; + } +} 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 580fcdf48..c3cc956cc 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 @@ -5,6 +5,7 @@ import com.cool.store.mapper.AssessmentDataMapper; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; +import tk.mybatis.mapper.entity.Example; import javax.annotation.Resource; import java.util.List; @@ -19,6 +20,7 @@ import java.util.List; public class AssessmentDataDAO { @Resource private AssessmentDataMapper assessmentDataMapper; + public Boolean batchInsert(List assessmentDataDOS) { if (CollectionUtils.isEmpty(assessmentDataDOS) && assessmentDataDOS.size() > 0) { for (AssessmentDataDO assessmentDataDO : assessmentDataDOS) { @@ -26,8 +28,9 @@ public class AssessmentDataDAO { } return Boolean.TRUE; } - return Boolean.FALSE; + return Boolean.FALSE; } + public Integer batchUpdate(List assessmentDataDOS) { if (CollectionUtils.isEmpty(assessmentDataDOS) && assessmentDataDOS.size() > 0) { @@ -35,4 +38,26 @@ public class AssessmentDataDAO { } return 0; } + + public List selectList(Long shopId, String userId) { + return assessmentDataMapper.select(AssessmentDataDO.builder().shopId(shopId).assessmentUserId(userId).build()); + } + + public AssessmentDataDO selectByTemplateId(Long templateId, String userId, Long shopId) { + return assessmentDataMapper.selectOne(AssessmentDataDO.builder().shopId(shopId).templateId(templateId).assessmentUserId(userId).build()); + } + + public Integer updateByPrimaryKeySelective(AssessmentDataDO assessmentDataDO) { + return assessmentDataMapper.updateByPrimaryKeySelective(assessmentDataDO); + } + + public Integer insertSelective(AssessmentDataDO assessmentDataDO) { + return assessmentDataMapper.insertSelective(assessmentDataDO); + } + + public Integer selectCount(String userId, Long shopId) { + Example example = new Example(AssessmentDataDO.class); + example.createCriteria().andEqualTo("assessmentUserId", userId).andEqualTo("shopId", shopId).andIsNotNull("qualified"); + return assessmentDataMapper.selectCountByExample(example); + } } 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 3569cd7a6..2c5ceea94 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 @@ -4,6 +4,7 @@ import com.cool.store.entity.EmployeeTrainingDO; import com.cool.store.mapper.EmployeeTrainingMapper; import com.cool.store.vo.EmployeeTrainingVO; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import javax.annotation.Resource; @@ -22,9 +23,13 @@ public class EmployeeTrainingDAO { public List employeeTrainingList(String keyWord, List regionIdList, List authRegionIdList, Boolean assignFlag, - String beginTime, String endTime, List shopIdList) { + String beginTime, String endTime, List shopIdList, + Integer theoreticalExamStatus, + Integer practicalExamStatus, + Integer assessmentStatus) { - return employeeTrainingMapper.employeeTrainingMapper(keyWord, regionIdList, authRegionIdList, assignFlag, beginTime, endTime, shopIdList); + return employeeTrainingMapper.employeeTrainingMapper(keyWord, regionIdList, authRegionIdList, assignFlag, beginTime, endTime, shopIdList, + theoreticalExamStatus, practicalExamStatus, assessmentStatus); } public EmployeeTrainingDO selectById(Long id) { @@ -35,4 +40,21 @@ public class EmployeeTrainingDAO { public EmployeeTrainingDO selectByUserDetailId(Long userDetailId) { return employeeTrainingMapper.selectOne(EmployeeTrainingDO.builder().xfsgUserDetailId(userDetailId).build()); } + + public int insertSelective(EmployeeTrainingDO employeeTrainingDO) { + + return employeeTrainingMapper.insertSelective(employeeTrainingDO); + } + + public int updateByPrimaryKeySelective(EmployeeTrainingDO employeeTrainingDO) { + + return employeeTrainingMapper.updateByPrimaryKeySelective(employeeTrainingDO); + } + + public List trainingListByShopId(Long shopId, String trainingTeacherUserId, Integer status) { + + return employeeTrainingMapper.trainingListByShopId(shopId, trainingTeacherUserId, status); + } + + } 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 c4389e9b4..e7a36cfad 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 @@ -2,6 +2,8 @@ package com.cool.store.mapper; import com.cool.store.entity.EmployeeTrainingDO; import com.cool.store.vo.EmployeeTrainingVO; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; @@ -11,5 +13,11 @@ 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("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); } \ 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 ed2b20ca4..22cd4df73 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EmployeeTrainingMapper.xml @@ -79,5 +79,49 @@ #{item} + + and e.theoretical_exam_status = #{theoreticalExamStatus} + + + and e.practical_exam_status = #{practicalExamStatus} + + + and e.assessment_total_num > e.assessment_num + + + and e.assessment_total_num = e.assessment_num + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/AssessmentDataDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/AssessmentDataDO.java index 622934ded..f3fb1776a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/AssessmentDataDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/AssessmentDataDO.java @@ -1,7 +1,16 @@ package com.cool.store.entity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + import javax.persistence.*; +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor @Table(name = "xfsg_assessment_data") public class AssessmentDataDO { @Id @@ -29,7 +38,7 @@ public class AssessmentDataDO { /** * 店铺是否合格 */ - private Byte qualified; + private Boolean qualified; /** * 评分 @@ -46,143 +55,4 @@ public class AssessmentDataDO { */ private String comments; - /** - * @return id - */ - public Long getId() { - return id; - } - - /** - * @param id - */ - public void setId(Long id) { - this.id = id; - } - - /** - * 获取xfsg_assessment_template.id - * - * @return template_id - xfsg_assessment_template.id - */ - public Long getTemplateId() { - return templateId; - } - - /** - * 设置xfsg_assessment_template.id - * - * @param templateId xfsg_assessment_template.id - */ - public void setTemplateId(Long templateId) { - this.templateId = templateId; - } - - /** - * 获取 xfsg_shop_info id - * - * @return shop_id - xfsg_shop_info id - */ - public Long getShopId() { - return shopId; - } - - /** - * 设置 xfsg_shop_info id - * - * @param shopId xfsg_shop_info id - */ - public void setShopId(Long shopId) { - this.shopId = shopId; - } - - /** - * 获取考核人 - * - * @return assessment_user_id - 考核人 - */ - public String getAssessmentUserId() { - return assessmentUserId; - } - - /** - * 设置考核人 - * - * @param assessmentUserId 考核人 - */ - public void setAssessmentUserId(String assessmentUserId) { - this.assessmentUserId = assessmentUserId; - } - - /** - * 获取店铺是否合格 - * - * @return qualified - 店铺是否合格 - */ - public Byte getQualified() { - return qualified; - } - - /** - * 设置店铺是否合格 - * - * @param qualified 店铺是否合格 - */ - public void setQualified(Byte qualified) { - this.qualified = qualified; - } - - /** - * 获取评分 - * - * @return score - 评分 - */ - public Long getScore() { - return score; - } - - /** - * 设置评分 - * - * @param score 评分 - */ - public void setScore(Long score) { - this.score = score; - } - - /** - * 获取原因 - * - * @return reason - 原因 - */ - public String getReason() { - return reason; - } - - /** - * 设置原因 - * - * @param reason 原因 - */ - public void setReason(String reason) { - this.reason = reason; - } - - /** - * 获取评语 - * - * @return comments - 评语 - */ - public String getComments() { - return comments; - } - - /** - * 设置评语 - * - * @param comments 评语 - */ - public void setComments(String comments) { - this.comments = comments; - } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/TempUserDetailDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/TempUserDetailDO.java index 82ed44ddc..d08cd38b1 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/TempUserDetailDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/TempUserDetailDO.java @@ -1,13 +1,13 @@ package com.cool.store.entity; -import io.swagger.models.auth.In; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; import javax.persistence.*; +import java.util.Date; + @Data @Builder @NoArgsConstructor diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitListRequest.java new file mode 100644 index 000000000..3d09a7536 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitListRequest.java @@ -0,0 +1,17 @@ +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 EmployeeTrainingCommitListRequest { + + @ApiModelProperty("培训结果列表") + List list; +} 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 new file mode 100644 index 000000000..cd1f4fdd6 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingCommitRequest.java @@ -0,0 +1,30 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author byd + * @date 2024-04-30 11:10 + */ +@Data +public class EmployeeTrainingCommitRequest { + + + @ApiModelProperty("模版id") + private Long templateId; + + @ApiModelProperty("店铺id") + private Long shopId; + + @ApiModelProperty("考核人id") + private String userDetailId; + + /** + * 店铺是否合格 + */ + @ApiModelProperty("店铺是否合格") + private Boolean qualified; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingRequest.java index 9a73600b6..f9b40500d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/EmployeeTrainingRequest.java @@ -31,4 +31,14 @@ public class EmployeeTrainingRequest extends PageBasicInfo { @ApiModelProperty("门店id列表") private List storeIdList; + + @ApiModelProperty("理论考试状态 0-未开始 1-合格 2-不合格") + private Integer theoreticalExamStatus; + + @ApiModelProperty("实操考试状态 0-未开始 1-合格 2-不合格") + private Integer practicalExamStatus; + + @ApiModelProperty("带训状态 0-未完成 1-已完成") + private Integer assessmentStatus; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentTemplateDataVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentTemplateDataVO.java new file mode 100644 index 000000000..07eb7e342 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/AssessmentTemplateDataVO.java @@ -0,0 +1,84 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2024/4/25 11:26 + * @Version 1.0 + */ +@Data +public class AssessmentTemplateDataVO { + + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("数据项id") + private Long assessmentDataId; + + /** + * 模板类型:0 - 教练员, 1 - 店长, 2 - 店员, 3 - 三方验收 + */ + @ApiModelProperty("模板类型:0 - 教练员, 1 - 店长, 2 - 店员, 3 - 三方验收") + private Integer type; + + /** + * 模板类别,可为空 + */ + @ApiModelProperty("分类") + private String category; + + /** + * 模板名称 + */ + @ApiModelProperty("模板名称") + private String templateName; + + /** + * 模板remark + */ + @ApiModelProperty("模板remark") + private List templateRemarkList; + + /** + * 考核项分值 + */ + @ApiModelProperty("考核项分值") + private Long score; + + /** + * 模板要求明细,包括详细的考核要求描述 + */ + @ApiModelProperty("模板要求明细,包括详细的考核要求描述") + private String templateRequirements; + + + /** + * 店铺是否合格 + */ + @ApiModelProperty("店铺是否合格") + private Boolean qualified; + + /** + * 评分 + */ + @ApiModelProperty("得分") + private Long goalScore; + + /** + * 原因 + */ + @ApiModelProperty("原因") + private String reason; + + /** + * 评语 + */ + @ApiModelProperty("评语") + private String comments; + + +} 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 7c68a15c7..6b3936b03 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,8 @@ package com.cool.store.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * @author byd * @date 2024-04-30 10:53 @@ -19,6 +21,9 @@ public class EmployeeTrainingVO { @ApiModelProperty("手机号") private String mobile; + @ApiModelProperty("身份证号") + private String idCard; + @ApiModelProperty("区域id") private Long regionId; @@ -63,4 +68,43 @@ public class EmployeeTrainingVO { @ApiModelProperty("大区名称") private String largeRegionName; + /** + * 实训结束时间 + */ + @ApiModelProperty("实训结束时间") + private Date trainingEndTime; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店ID") + private String trainingStoreId; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店名称") + private String trainingStoreName; + + /** + * 带教老师ID + */ + @ApiModelProperty("带教老师ID") + private String trainingTeacherUserId; + + /** + * 带教老师ID + */ + @ApiModelProperty("带教老师名称") + private String trainingTeacherUserName; + + /** + * 实操考核人员ID + */ + @ApiModelProperty("实操考核人员ID") + private String practicalAssessmentUserId; + + @ApiModelProperty("实操考核人员名称") + private String practicalAssessmentUserName; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeUserTrainingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeUserTrainingVO.java new file mode 100644 index 000000000..c73d7d3fb --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/EmployeeUserTrainingVO.java @@ -0,0 +1,85 @@ +package com.cool.store.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author byd + * @date 2024-04-30 10:53 + */ +@Data +public class EmployeeUserTrainingVO { + + @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 Long shopName; + + @ApiModelProperty("培训id") + private Long employeeTrainingId; + + @ApiModelProperty("考核项数") + private Integer assessmentNum; + + @ApiModelProperty("考核总项数") + private Integer assessmentTotalNum; + + @ApiModelProperty("实训开始时间") + private Date trainingStartTime; + /** + * 实训结束时间 + */ + @ApiModelProperty("实训结束时间") + private Date trainingEndTime; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店ID") + private String trainingStoreId; + + /** + * 实训门店ID + */ + @ApiModelProperty("实训门店名称") + private String trainingStoreName; + + /** + * 带教老师ID + */ + @ApiModelProperty("带教老师ID") + private String trainingTeacherUserId; + + /** + * 带教老师ID + */ + @ApiModelProperty("带教老师名称") + private String trainingTeacherUserName; + + + @ApiModelProperty("培训数据") + List templateDataList; + +} 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 ff69111a7..55dd55ef9 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,11 +1,15 @@ 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.vo.EmployeeTrainingDetailVO; import com.cool.store.vo.EmployeeTrainingVO; +import com.cool.store.vo.EmployeeUserTrainingVO; import com.github.pagehelper.PageInfo; +import java.util.List; + /** * @author byd * @date 2024-04-30 10:16 @@ -17,4 +21,12 @@ public interface EmployeeTrainingService { EmployeeTrainingDetailVO employeeTrainingDetail(Long id); void distribution(EmployeeTrainingDetailRequest request); + + List trainingListByShopId(Long shopId); + + List trainerUserList(String userId, Integer status); + + EmployeeUserTrainingVO trainerUserDetail(Long id); + + void trainerUserCommit(EmployeeTrainingCommitListRequest 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 422eebf45..234b0b807 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,12 +1,12 @@ 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.EmployeeTrainingDO; -import com.cool.store.entity.ShopInfoDO; -import com.cool.store.entity.StoreDO; -import com.cool.store.entity.TempUserDetailDO; +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.service.EmployeeTrainingService; @@ -14,14 +14,19 @@ 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.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; /** * @author byd @@ -57,6 +62,12 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { @Resource private StoreDao storeDao; + @Resource + private AssessmentTemplateDAO assessmentTemplateDAO; + + @Resource + private AssessmentDataDAO assessmentDataDAO; + @Override public PageInfo employeeTrainingList(String userId, EmployeeTrainingRequest request) { List authRegionIdList = new ArrayList<>(); @@ -66,7 +77,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); + DateUtil.format(new Date(request.getEndTime()), DateUtils.YYYY_MM_DD_HH_MM_SS), null, + request.getTheoreticalExamStatus(), request.getPracticalExamStatus(), request.getAssessmentStatus()); list.forEach(item -> { Long regionId = item.getRegionId(); @@ -124,15 +136,158 @@ public class EmployeeTrainingServiceImpl implements EmployeeTrainingService { return employeeTrainingVO; } + @Transactional(rollbackFor = Exception.class) @Override public void distribution(EmployeeTrainingDetailRequest request) { TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(request.getId()); + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectByUserDetailId(request.getId()); - if(employeeTrainingDO != null && employeeTrainingDO.getAssignFlag()){ + if (employeeTrainingDO != null && employeeTrainingDO.getAssignFlag()) { throw new ServiceException("已经分配"); } + if (employeeTrainingDO == null) { + employeeTrainingDO = new EmployeeTrainingDO(); + } + List assessmentTemplateDOList = assessmentTemplateDAO.listByType(AssessmentTemplateType.TRAINER.getCode()); + employeeTrainingDO.setAssignFlag(true); + employeeTrainingDO.setTrainingTeacherUserId(request.getTrainingTeacherUserId()); + employeeTrainingDO.setTrainingStoreId(request.getTrainingStoreId()); + employeeTrainingDO.setTrainingStartTime(request.getTrainingStartTime()); + employeeTrainingDO.setTrainingEndTime(request.getTrainingEndTime()); + employeeTrainingDO.setPracticalAssessmentUserId(request.getPracticalAssessmentUserId()); + employeeTrainingDO.setEstimatedAssessmentTime(request.getEstimatedAssessmentTime()); + employeeTrainingDO.setAssessmentNum(0); + employeeTrainingDO.setAssessmentTotalNum(assessmentTemplateDOList.size()); + if (employeeTrainingDO.getId() == null) { + employeeTrainingDO.setXfsgUserDetailId(tempUserDetailDO.getId()); + employeeTrainingDO.setRegionId(tempUserDetailDO.getRegionId()); + employeeTrainingDO.setShopId(tempUserDetailDO.getShopId()); + employeeTrainingDAO.insertSelective(employeeTrainingDO); + } else { + employeeTrainingDAO.updateByPrimaryKeySelective(employeeTrainingDO); + } + Long shopId = tempUserDetailDO.getShopId(); + + //分配教练员之后初始化实训数据 + List assessmentDataDOList = new ArrayList<>(); + assessmentTemplateDOList.forEach(assessmentTemplateDO -> { + AssessmentDataDO assessmentDataDO = new AssessmentDataDO(); + assessmentDataDO.setTemplateId(assessmentTemplateDO.getId()); + assessmentDataDO.setAssessmentUserId(enterpriseUserDO.getUserId()); + assessmentDataDO.setShopId(shopId); + assessmentDataDOList.add(assessmentDataDO); + }); + assessmentDataDAO.batchInsert(assessmentDataDOList); + } + + @Override + public List trainingListByShopId(Long shopId) { + + List list = employeeTrainingDAO.trainingListByShopId(shopId, null, null); + list.forEach(item -> { + StoreDO storeDO = storeDao.getByStoreId(item.getTrainingStoreId()); + if (storeDO != null) { + item.setTrainingStoreName(storeDO.getStoreName()); + } + }); + return list; + } + + @Override + public List trainerUserList(String userId, Integer status) { + List list = employeeTrainingDAO.trainingListByShopId(null, userId, status); + list.forEach(item -> { + StoreDO storeDO = storeDao.getByStoreId(item.getTrainingStoreId()); + if (storeDO != null) { + item.setTrainingStoreName(storeDO.getStoreName()); + } + }); + return list; + } + + @Override + public EmployeeUserTrainingVO trainerUserDetail(Long id) { + EmployeeUserTrainingVO employeeUserTrainingVO = new EmployeeUserTrainingVO(); + TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(id); + + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); + + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectByUserDetailId(id); + employeeUserTrainingVO.setEmployeeTrainingId(employeeTrainingDO.getId()); + employeeUserTrainingVO.setTrainingTeacherUserId(employeeTrainingDO.getTrainingTeacherUserId()); + employeeUserTrainingVO.setTrainingStoreId(employeeTrainingDO.getTrainingStoreId()); + employeeUserTrainingVO.setTrainingStartTime(employeeTrainingDO.getTrainingStartTime()); + employeeUserTrainingVO.setTrainingEndTime(employeeTrainingDO.getTrainingEndTime()); + employeeUserTrainingVO.setAssessmentNum(employeeTrainingDO.getAssessmentNum()); + employeeUserTrainingVO.setAssessmentTotalNum(employeeTrainingDO.getAssessmentTotalNum()); + employeeUserTrainingVO.setMobile(tempUserDetailDO.getMobile()); + employeeUserTrainingVO.setRoleId(tempUserDetailDO.getRoleId()); + employeeUserTrainingVO.setIdCard(tempUserDetailDO.getIdCard()); + List assessmentTemplateDOList = assessmentTemplateDAO.listByType(AssessmentTemplateType.TRAINER.getCode()); + + List assessmentDataDOList = assessmentDataDAO.selectList(tempUserDetailDO.getShopId(), enterpriseUserDO.getUserId()); + + 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.setTemplateRequirements(item.getTemplateRequirements()); + templateDataVOList.add(assessmentTemplateDataVO); + }); + employeeUserTrainingVO.setTemplateDataList(templateDataVOList); + return employeeUserTrainingVO; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void trainerUserCommit(EmployeeTrainingCommitListRequest request) { + if(CollectionUtils.isEmpty(request.getList())){ + return; + } + Long shopId = request.getList().get(0).getShopId(); + Long userDetailId = request.getList().get(0).getShopId(); + TempUserDetailDO tempUserDetailDO = tempUserDetailDAO.selectById(userDetailId); + EmployeeTrainingDO employeeTrainingDO = employeeTrainingDAO.selectByUserDetailId(userDetailId); + + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoByThirdOaUniqueFlag(tempUserDetailDO.getIdCard()); + String userId = enterpriseUserDO.getUserId(); + request.getList().forEach(item -> { + AssessmentDataDO assessmentDataDO = assessmentDataDAO.selectByTemplateId(item.getTemplateId(), item.getUserDetailId(), item.getShopId()); + if (assessmentDataDO != null) { + assessmentDataDO.setQualified(item.getQualified()); + assessmentDataDAO.updateByPrimaryKeySelective(assessmentDataDO); + } else { + assessmentDataDO = new AssessmentDataDO(); + assessmentDataDO.setTemplateId(item.getTemplateId()); + assessmentDataDO.setAssessmentUserId(item.getUserDetailId()); + assessmentDataDO.setShopId(item.getShopId()); + assessmentDataDO.setQualified(item.getQualified()); + assessmentDataDAO.insertSelective(assessmentDataDO); + } + }); + Integer num = assessmentDataDAO.selectCount(userId, shopId); + employeeTrainingDO.setAssessmentNum(num); + employeeTrainingDAO.updateByPrimaryKeySelective(employeeTrainingDO); } } 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 f9c304b0b..45fb89c6a 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,12 +1,14 @@ 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.response.ResponseResult; import com.cool.store.service.EmployeeTrainingService; import com.cool.store.vo.EmployeeTrainingDetailVO; import com.cool.store.vo.EmployeeTrainingVO; +import com.cool.store.vo.EmployeeUserTrainingVO; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -15,6 +17,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * @author byd @@ -37,15 +40,47 @@ public class EmployeeTrainingController { @ApiOperation("员工培训详情") @GetMapping("/employeeTrainingDetail") @ApiImplicitParams({ - @ApiImplicitParam(name = "employeeTrainingId", value = "培训id", required = true) + @ApiImplicitParam(name = "id", value = "id", required = true) }) - public ResponseResult employeeTrainingDetail(@RequestParam("employeeTrainingId") Long employeeTrainingId) { - return ResponseResult.success(employeeTrainingService.employeeTrainingDetail(employeeTrainingId)); + public ResponseResult employeeTrainingDetail(@RequestParam("id") Long id) { + return ResponseResult.success(employeeTrainingService.employeeTrainingDetail(id)); } @ApiOperation("员工培训--分配") @PostMapping("/distribution") - public ResponseResult distribution(@RequestBody EmployeeTrainingDetailRequest request) { - return ResponseResult.success(employeeTrainingService.employeeTrainingDetail(request.getId())); + public ResponseResult distribution(@RequestBody EmployeeTrainingDetailRequest request) { + employeeTrainingService.distribution(request); + return ResponseResult.success(Boolean.TRUE); + } + + @ApiOperation("培训进度-列表") + @PostMapping("/trainingScheduleList") + public ResponseResult> trainingScheduleList(@RequestBody EmployeeTrainingRequest employeeTrainingRequest) { + return ResponseResult.success(employeeTrainingService.employeeTrainingList(CurrentUserHolder.getUserId(), employeeTrainingRequest)); + } + + + @ApiOperation("培训-教练员-员工列表") + @PostMapping("/trainerUserList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "status", value = "带训状态 0-未完成 1-已完成", required = true) + }) + public ResponseResult> trainerUserList(@RequestParam("status") Integer status) { + return ResponseResult.success(employeeTrainingService.trainerUserList(CurrentUserHolder.getUserId(), status)); + } + + @ApiOperation("培训-教练员-员工带训详情") + @PostMapping("/trainerUserDetail") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "用户id", required = true) + }) + public ResponseResult trainerUserDetail(Long id) { + return ResponseResult.success(employeeTrainingService.trainerUserDetail(id)); + } + + @ApiOperation("培训-教练员-提交培训") + @PostMapping("/trainerUserCommit") + public ResponseResult trainerUserCommit(@RequestBody EmployeeTrainingCommitListRequest request) { + return ResponseResult.success(Boolean.TRUE); } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniEmployeeTrainingController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniEmployeeTrainingController.java new file mode 100644 index 000000000..4ba29a0ca --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniEmployeeTrainingController.java @@ -0,0 +1,40 @@ +package com.cool.store.controller.webc; + +import com.cool.store.response.ResponseResult; +import com.cool.store.service.EmployeeTrainingService; +import com.cool.store.vo.EmployeeTrainingVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author byd + * @date 2024-04-30 10:15 + */ +@Api(tags = "mini员工培训") +@RestController +@RequestMapping("mini/employeeTraining") +public class MiniEmployeeTrainingController { + + @Resource + private EmployeeTrainingService employeeTrainingService; + + @ApiOperation("培训员工列表") + @PostMapping("/trainingListByShopId") + @ApiImplicitParams({ + @ApiImplicitParam(name = "shopId", value = "店铺id", required = true) + }) + public ResponseResult> trainingListByShopId(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(employeeTrainingService.trainingListByShopId(shopId)); + } + +}