|
|
@@ -1,5 +1,6 @@
|
|
|
package com.xunmei.core.edu.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
@@ -12,27 +13,36 @@ import com.xunmei.common.core.constant.ErrorMsgConstants;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
import com.xunmei.common.core.domain.DateRange;
|
|
|
import com.xunmei.common.core.domain.edu.domain.*;
|
|
|
+import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskEditDto;
|
|
|
import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskPageDto;
|
|
|
+import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskReportDto;
|
|
|
import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
|
|
|
import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
|
|
|
import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
|
|
|
+import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
|
|
|
import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
|
|
|
import com.xunmei.common.core.enums.edu.EduTrainingType;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.web.page.TableDataInfo;
|
|
|
+import com.xunmei.common.security.utils.SecurityUtils;
|
|
|
import com.xunmei.core.edu.mapper.CoreEduTrainingTaskMapper;
|
|
|
import com.xunmei.core.edu.mapper.CoreEduTrainingTaskToRoleMapper;
|
|
|
import com.xunmei.core.edu.mapper.CoreEduTrainingTaskToUserMapper;
|
|
|
import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
|
|
|
import com.xunmei.core.edu.service.ICoreEduTrainingTaskToRoleService;
|
|
|
+import com.xunmei.core.edu.service.ICoreEduTrainingTaskToUserService;
|
|
|
import com.xunmei.system.api.RemoteOrgService;
|
|
|
import com.xunmei.system.api.domain.SysOrg;
|
|
|
import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.text.NumberFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -55,6 +65,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
private CoreEduTrainingTaskToRoleMapper taskToRoleMapper;
|
|
|
@Autowired
|
|
|
private CoreEduTrainingTaskToUserMapper taskToUserMapper;
|
|
|
+ @Autowired
|
|
|
+ private ICoreEduTrainingTaskToUserService coreEduTrainingTaskToUserService;
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<CoreEduTrainingTaskPageVo> selectPage(CoreEduTrainingTaskPageDto request) {
|
|
|
@@ -79,10 +91,9 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
record.setTaskRoleNameList(coreEduTrainingTaskToRoles.stream().map(CoreEduTrainingTaskToRole::getRoleName).collect(Collectors.joining(",")));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//抓换为TableDataInfo适配前端
|
|
|
return TableDataInfo.build(pageData);
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -95,8 +106,10 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
@Override
|
|
|
public CoreEduTrainingTaskDetailVo selectCoreEduTrainingTaskById(Long id) {
|
|
|
CoreEduTrainingTaskDetailVo detailVo = coreEduTrainingTaskMapper.selectEduTrainingTaskDetail(id);
|
|
|
- List<CoreEduTrainingTaskToUser> userList = taskToUserMapper.selectByMap(MapUtil.of("plan_id", id));
|
|
|
- detailVo.setTaskUserList(userList);
|
|
|
+ List<CoreEduTrainingTaskToUser> userList = taskToUserMapper.selectByMap(MapUtil.of("edu_training_task_id", id));
|
|
|
+ if(ObjectUtil.isNotEmpty(userList)){
|
|
|
+ detailVo.setTaskUserList(userList);
|
|
|
+ }
|
|
|
return detailVo;
|
|
|
}
|
|
|
|
|
|
@@ -126,11 +139,23 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
/**
|
|
|
* 修改教育任务
|
|
|
*
|
|
|
- * @param coreEduTrainingTask 教育任务
|
|
|
+ * @param request 教育任务
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateCoreEduTrainingTask(CoreEduTrainingTask coreEduTrainingTask) {
|
|
|
+ public int updateCoreEduTrainingTask(CoreEduTrainingTaskEditDto request) {
|
|
|
+ CoreEduTrainingTask coreEduTrainingTask = coreEduTrainingTaskMapper.selectById(request.getId());
|
|
|
+ BeanUtils.copyProperties(request, coreEduTrainingTask);
|
|
|
+
|
|
|
+ List<CoreEduTrainingTaskToUser> taskUserList = request.getTaskUserList();
|
|
|
+ if (taskUserList != null && taskUserList.size() > 0) {
|
|
|
+ coreEduTrainingTaskToUserService.saveBatch(taskUserList);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.equal(request.getSubmitType(), 2)) {
|
|
|
+ coreEduTrainingTask.setStatus(EduTrainingDoStatus.WAIT_SIGN.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ coreEduTrainingTask.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
|
|
|
coreEduTrainingTask.setUpdateTime(DateUtils.getNowDate());
|
|
|
return coreEduTrainingTaskMapper.updateById(coreEduTrainingTask);
|
|
|
}
|
|
|
@@ -198,8 +223,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
trainingTask.setContent(null);
|
|
|
trainingTask.setTitle(plan.getPlanName());
|
|
|
trainingTask.setNote(null);
|
|
|
- trainingTask.setDateTime(null);
|
|
|
- trainingTask.setHostId(null);
|
|
|
+ trainingTask.setTrainingStartDateTime(null);
|
|
|
+ trainingTask.setTrainingEndDateTime(null);
|
|
|
trainingTask.setFileList(ObjectUtil.isEmpty(plan.getFileList()) ? null : JSON.toJSONString(plan.getFileList()));
|
|
|
trainingTask.setImageList(null);
|
|
|
trainingTask.setOrgId(org.getId());
|
|
|
@@ -229,6 +254,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
coreEduTrainingTaskToRoleService.saveBatch(taskRoleList);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CoreEduTrainingTaskReportVo> selectCoreEduTrainingTaskReport(CoreEduTrainingTaskReportDto request) {
|
|
|
+ request.setStartDate(DateUtil.beginOfMonth(request.getDate()));
|
|
|
+ request.setEndDate(DateUtil.endOfMonth(request.getDate()));
|
|
|
+ Long orgId = request.getOrgId();
|
|
|
+
|
|
|
+ List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ if (ObjectUtil.isEmpty(sysOrgList)) {
|
|
|
+
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<CoreEduTrainingTaskReportVo> list = coreEduTrainingTaskMapper.selectReport(request);
|
|
|
+ list.forEach(item -> {
|
|
|
+ item.setFinishRate(calculatePercent(item.getShouldFinish(), item.getFinish()));
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String calculatePercent(Integer num1, Integer num2) {
|
|
|
+ if (num1 == 0 || num2 == 0) {
|
|
|
+ return "0%";
|
|
|
+ }
|
|
|
+ BigDecimal a1 = new BigDecimal(num1);
|
|
|
+ BigDecimal a2 = new BigDecimal(num2);
|
|
|
+ BigDecimal r = a1.divide(a2, 4, RoundingMode.HALF_UP);
|
|
|
+ NumberFormat percent = NumberFormat.getPercentInstance();
|
|
|
+ percent.setMaximumFractionDigits(4);
|
|
|
+ return percent.format(r.doubleValue());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|