评价接口 阶段完成

This commit is contained in:
YY
2025-06-18 13:08:29 +08:00
parent 3fd26d71bd
commit 30bc81b773
29 changed files with 477 additions and 29 deletions

View File

@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
@ -15,6 +16,7 @@ import org.springframework.context.annotation.ComponentScan;
@EnableFeignClients
@ComponentScan("com.chinaunicom.mall.ebtp.common.*,com.chinaunicom.zyhy.ebtp.*")
@MapperScan({"com.chinaunicom.zyhy.ebtp.supplier.**.dao"})
@EnableScheduling
public class BizSupplierManageApplication {
public static void main(String[] args) {

View File

@ -0,0 +1,12 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.constant;
public interface EvaluateTaskConstant {
/**
* 评价结束状态
*/
public static final String EVALUATE_TASK_STATUS_END="2";
/**
* 开启权重
*/
public static final Long EVALUATE_TASK_WEIGHT_STATUS_YD = 1L;
}

View File

@ -0,0 +1,11 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.constant;
import lombok.Data;
public interface SupplierUserConstant {
/**
* 打分状态 已打分
*/
public static final Long SCORE_STATUS_YD=1L;
}

View File

@ -91,4 +91,6 @@ public class CoscoEvaluateTaskController extends BaseController {
return BaseResponse.success(coscoEvaluateTaskService.addTask(addCoscoEvaluateTaskVo));
}
}

View File

@ -7,6 +7,7 @@ import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTask
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.ICoscoEvaluateTaskSupplierService;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CoscoEvaluateTaskListVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.SupplierDimensionVo;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -25,6 +26,15 @@ public class CoscoEvaluateTaskSupplierController extends BaseController {
private ICoscoEvaluateTaskSupplierService coscoEvaluateTaskSupplierService;
/**
* 根据任务id查询供应商评价列表
*/
@PostMapping("/getPage")
public BaseResponse<IPage<CoscoEvaluateTaskSupplier>> getPage(@ApiParam(value = "对象数据", required = true)
@RequestBody CoscoEvaluateTaskSupplier taskListVo) {
return BaseResponse.success(coscoEvaluateTaskSupplierService.getPage(taskListVo));
}
/**
* 获取【供应商评价_评价任务关联供应商表】详细信息

View File

@ -2,8 +2,10 @@ package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.controller;
import com.chinaunicom.mall.ebtp.common.base.controller.BaseController;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.SupplierUserConstant;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTaskSupplierUser;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.ICoscoEvaluateTaskSupplierUserService;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.AddScoreVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -63,6 +65,22 @@ public class CoscoEvaluateTaskSupplierUserController extends BaseController {
return BaseResponse.success(coscoEvaluateTaskSupplierUserService.getIndicator(id));
}
/**
* 获取打分结果
*/
@PostMapping("/getScore")
public BaseResponse getScore(@RequestBody AddScoreVo vo) {
//判断人员是否已经打分
CoscoEvaluateTaskSupplierUser coscoEvaluateTaskSupplierUser = coscoEvaluateTaskSupplierUserService.selectCoscoEvaluateTaskSupplierUserById(vo.getId());
if(coscoEvaluateTaskSupplierUser.getReviewStatus().equals(SupplierUserConstant.SCORE_STATUS_YD)){
return BaseResponse.fail("当前人员已经打分,无法修改");
}
if(vo.getScoreVoList()==null||vo.getScoreVoList().size()==0){
return BaseResponse.fail("打分项信息为空");
}
//打分项信息
coscoEvaluateTaskSupplierUserService.getScore(vo);
return BaseResponse.success();
}
}

View File

@ -0,0 +1,21 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.controller;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.ScheduledTasksService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/coscoEvaluate/scheduledTasks")
public class ScheduledTasksController {
@Autowired
private ScheduledTasksService scheduledTasksService;
@RequestMapping()
public void checkTask() {
scheduledTasksService.closeTask();
}
}

View File

@ -1,7 +1,9 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao;
import java.util.List;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateScoring;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CalculateAndObtainScoresVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskSubIndicatorVo;
/**
@ -29,6 +31,7 @@ public interface CoscoEvaluateScoringMapper {
/**
* 批量添加
*
* @param list
*/
void batchCoscoEvaluateScoring(List<CoscoEvaluateScoring> list);
@ -67,8 +70,18 @@ public interface CoscoEvaluateScoringMapper {
/**
* 列表id获取
*
* @param id
* @return
*/
List<TaskSubIndicatorVo> selectTaskSubIndicatorVo(String id);
/**
* 获取计算分数
*
* @param id
* @return
*/
List<CalculateAndObtainScoresVo> selectCalculateAndObtainScores(String id);
}

View File

@ -66,4 +66,12 @@ public interface CoscoEvaluateTaskMapper {
IPage<CoscoEvaluateTaskListVo> selectMyPage(IPage<CoscoEvaluateTaskListVo> p, @Param("vo") CoscoEvaluateTaskListVo vo);
IPage<TaskPageVo> selectTaskPage(IPage<CoscoEvaluateTaskListVo> p,@Param("vo") TaskPageVo vo);
void updateNOTask();
/**
* 查询需要关闭的评价主表信息
* @return
*/
List<CoscoEvaluateTask> selectCloseTask();
}

View File

@ -75,4 +75,18 @@ public interface CoscoEvaluateTaskSupplierMapper {
* @return
*/
IPage<SupplierDimensionVo> selectSupplierDimensionPage(IPage<SupplierDimensionVo> p,@Param("vo") SupplierDimensionVo vo);
/**
* 评价结果供应商评价列表查询
* @param p
* @param vo
* @return
*/
IPage<CoscoEvaluateTaskSupplier> getPage(IPage<SupplierDimensionVo> p,@Param("vo") CoscoEvaluateTaskSupplier vo);
/**
* 根据taskId删除
* @param id
*/
void deleteByTaskId(String id);
}

View File

@ -68,4 +68,10 @@ public interface CoscoEvaluateTaskSupplierUserMapper {
* @return
*/
List<UserNdTypeVo> selectUserNdTypeList(String id);
/**
* 根据任务id删除信息
* @param id
*/
void deleteByTaskId(String id);
}

View File

@ -170,4 +170,17 @@
where ces.evaluate_task_supplier_user_id = #{id}
and ces.del_flag = 'normal'
</select>
<select id="selectCalculateAndObtainScores" parameterType="string"
resultType="com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CalculateAndObtainScoresVo">
select cetsu.user_id, ces.score, ces.indicator_nd_id, '1' as dept_id, cets.supplier_id
from cosco_evaluate_scoring ces
join cosco_evaluate_task_supplier_user cetsu
on cetsu.id = ces.evaluate_task_supplier_user_id and cetsu.del_flag = 'normal'
join cosco_evaluate_task_supplier cets
on cets.evaluate_task_id = cetsu.evaluate_task_id and cets.supplier_id = cetsu.supplier_id
where ces.score is not null
and cetsu.evaluate_task_id = #{taskId}
</select>
</mapper>

View File

@ -50,6 +50,12 @@
from cosco_evaluate_task
</sql>
<select id="selectCloseTask" resultMap="CoscoEvaluateTaskResult">
<include refid="selectCoscoEvaluateTaskVo"/>
where status = '1'
and end_time &lt;= now()
</select>
<select id="selectCoscoEvaluateTaskList"
parameterType="com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTask"
resultMap="CoscoEvaluateTaskResult">
@ -237,13 +243,21 @@
</foreach>
</update>
<select id="updateNOTask" resultMap="CoscoEvaluateTaskResult">
update cosco_evaluate_task
set status='1'
where status = '0'
and start_time &lt;= now()
</select>
<select id="selectTaskPage" parameterType="map"
resultType="com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CoscoEvaluateTaskListVo">
select cet.id,
cet.evaluate_theme as evaluateTheme,
'单位' as tenantName,
cet.start_time as startTime,
cet.end_time as endTime,
'单位' as tenantName,
cet.start_time as startTime,
cet.end_time as endTime,
cet.status,
case
when cet.status = 0 then '待评价'
@ -268,15 +282,15 @@
<select id="selectMyPage" parameterType="map"
resultType="com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CoscoEvaluateTaskListVo">
select cet.id,
cet.evaluate_theme as evaluateTheme,
'单位' as tenantName,
cet.start_time as startTime,
cet.end_time as endTime,
cet.status,
case
when cet.status = 0 then '待评价'
when cet.status = 1 then '评价中'
when cet.status = 2 then '已结束' end as statusName
cet.evaluate_theme as evaluateTheme,
'单位' as tenantName,
cet.start_time as startTime,
cet.end_time as endTime,
cet.status,
case
when cet.status = 0 then '待评价'
when cet.status = 1 then '评价中'
when cet.status = 2 then '已结束' end as statusName
from cosco_evaluate_task cet
<where>
@ -289,4 +303,6 @@
</if>
</where>
</select>
</mapper>

View File

@ -34,6 +34,31 @@
from cosco_evaluate_task_supplier
</sql>
<select id="getPage"
parameterType="map"
resultMap="CoscoEvaluateTaskSupplierResult">
<include refid="selectCoscoEvaluateTaskSupplierVo"/>
<where>
and del_flag = 'normal'
<if test="vo.evaluateTaskId != null and vo.evaluateTaskId != ''">
and evaluate_task_id = #{vo.evaluateTaskId}
</if>
<if test="vo.supplierId != null and vo.supplierId != ''">
and supplier_id = #{vo.supplierId}
</if>
<if test="vo.reviewScore != null ">
and review_score = #{vo.reviewScore}
</if>
<if test="vo.reviewResult != null ">
and review_result = #{vo.reviewResult}
</if>
<if test="vo.lastUpdateTime != null ">
and last_update_time = #{vo.lastUpdateTime}
</if>
</where>
</select>
<select id="selectCoscoEvaluateTaskSupplierList"
parameterType="com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTaskSupplier"
resultMap="CoscoEvaluateTaskSupplierResult">
@ -171,20 +196,28 @@
when cet.status =1 then '进行中'
when cet.status =2 then '已结束' end as statusName,
case when cetsu.review_status =0 then '未提交'
when cetsu.review_status=1 then '已提交' end as reviewStatusName
when cetsu.review_status=1 then '已提交' end as reviewStatusName,
(select sum(score)
from cosco_evaluate_scoring where del_flag='normal'
and evaluate_task_supplier_user_id=cetsu.id)
as suscore
FROM
cosco_evaluate_task_supplier_user cetsu
LEFT JOIN cosco_evaluate_task cet ON cetsu.evaluate_task_id = cet.id
LEFT JOIN cosco_evaluate_task_supplier cets ON cets.evaluate_task_id = cet.id and cetsu.supplier_id=
cets.supplier_id
LEFT JOIN cosco_supplier_base csb ON cets.supplier_id = csb.id
cets.supplier_id and cets.del_flag='normal'
LEFT JOIN cosco_supplier_base csb ON cets.supplier_id = csb.id and csb.del_flag='normal'
<where>
and cetsu.del_flag = 'normal'
<if test="vo.userId != null and vo.userId != ''">and cetsu.user_id= #{vo.userId}</if>
<if test="vo.taskId!=null and vo.taskId!=null">and cet.id= #{vo.taskId}</if>
<if test="vo.supplierId!=null and vo.supplierId!=null">and cets.supplier_id= #{vo.supplierId}</if>
</where>
</select>
<update id="deleteByTaskId" parameterType="string">
update cosco_evaluate_task_supplier_user set del_flag = 'deleted' where evaluate_task_id = #{taskId}
</update>
</mapper>

View File

@ -185,4 +185,9 @@
and cetsu.del_flag = 'normal'
group by cetsu.user_id, ces.indicator_nd_id, cetsu.type
</select>
<update id="deleteByTaskId">
update cosco_evaluate_task_supplier_user
set del_flag = 'deleted'
where evaluate_task_id = #{taskId}
</update>
</mapper>

View File

@ -4,9 +4,11 @@ import java.math.BigDecimal;
import java.util.Date;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity;
import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -42,7 +44,7 @@ public class CoscoEvaluateTaskSupplier extends BaseEntity {
/**
* 年审最终结果评价等级A、B、C
*/
private Long reviewResult;
private String reviewResult;
/**
* 删除标识(normal.正常、deleted.已删除)
@ -52,5 +54,6 @@ public class CoscoEvaluateTaskSupplier extends BaseEntity {
private Date createTime;
private Date updateTime;
@ApiModelProperty(value = "分页对象信息")
private BasePageRequest basePageRequest;
}

View File

@ -85,4 +85,5 @@ public interface ICoscoEvaluateTaskService {
* @return
*/
IPage<TaskPageVo> getTaskPage(TaskPageVo taskListVo);
}

View File

@ -67,4 +67,6 @@ public interface ICoscoEvaluateTaskSupplierService {
* @return
*/
IPage<SupplierDimensionVo> getSupplierDimension(SupplierDimensionVo vo);
IPage<CoscoEvaluateTaskSupplier> getPage(CoscoEvaluateTaskSupplier taskListVo);
}

View File

@ -2,6 +2,8 @@ package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service;
import java.util.List;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTaskSupplierUser;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.AddScoreVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.ScoreVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskIndicatorBaseVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskIndicatorVo;
@ -61,4 +63,6 @@ public interface ICoscoEvaluateTaskSupplierUserService {
public int deleteCoscoEvaluateTaskSupplierUserById(String id);
TaskIndicatorBaseVo getIndicator(String id);
void getScore(AddScoreVo vo);
}

View File

@ -0,0 +1,6 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service;
public interface ScheduledTasksService {
void closeTask();
}

View File

@ -202,12 +202,14 @@ public class CoscoEvaluateTaskServiceImpl implements ICoscoEvaluateTaskService {
public int addTask(AddCoscoEvaluateTaskVo addCoscoEvaluateTaskVo) {
try {
//添加主表信息
addCoscoEvaluateTaskVo.setCreateTime(new Date());
addCoscoEvaluateTaskVo.setUpdateTime(new Date());
addCoscoEvaluateTaskVo.setId(PropertyUtils.getSnowflakeId());
addCoscoEvaluateTaskVo.setCreateBy("admin");
addCoscoEvaluateTaskVo.setUpdateBy("admin");
if(addCoscoEvaluateTaskVo.getId()==null){
addCoscoEvaluateTaskVo(addCoscoEvaluateTaskVo);
}else{
updateCoscoEvaluateTask(addCoscoEvaluateTaskVo);
coscoEvaluateTaskSupplierMapper.deleteByTaskId(addCoscoEvaluateTaskVo.getId());
coscoEvaluateTaskSupplierUserMapper.deleteByTaskId(addCoscoEvaluateTaskVo.getId());
}
//供应商信息添加
List<TaskSupplierVo> supplierIds1 = addCoscoEvaluateTaskVo.getSupplierIds();
Map<String, List<String>> supplierUserIds = new HashMap<>();
@ -280,7 +282,7 @@ public class CoscoEvaluateTaskServiceImpl implements ICoscoEvaluateTaskService {
});
});
});
coscoEvaluateTaskMapper.insertCoscoEvaluateTask(addCoscoEvaluateTaskVo);
coscoEvaluateTaskSupplierMapper.batchCoscoEvaluateTaskSupplier(list);
coscoEvaluateScoringMapper.batchCoscoEvaluateScoring(coscoEvaluateScorings);
coscoEvaluateTaskSupplierUserMapper.batchCoscoEvaluateTaskSupplierUser(coscoEvaluateTaskSupplierUsers);
@ -292,6 +294,15 @@ public class CoscoEvaluateTaskServiceImpl implements ICoscoEvaluateTaskService {
return 1;
}
private void addCoscoEvaluateTaskVo(AddCoscoEvaluateTaskVo addCoscoEvaluateTaskVo) {
addCoscoEvaluateTaskVo.setCreateTime(new Date());
addCoscoEvaluateTaskVo.setUpdateTime(new Date());
addCoscoEvaluateTaskVo.setId(PropertyUtils.getSnowflakeId());
addCoscoEvaluateTaskVo.setCreateBy("admin");
addCoscoEvaluateTaskVo.setUpdateBy("admin");
coscoEvaluateTaskMapper.insertCoscoEvaluateTask(addCoscoEvaluateTaskVo);
}
public void adduserMap(Map<String, List<String>> userMap, AdduserIndicatorVo vo, List<CoscoEvaluateTemplateIndicatorNd> coscoEvaluateTemplateIndicatorNds) {
Map<String, String> map = new HashMap<>();

View File

@ -103,4 +103,11 @@ public class CoscoEvaluateTaskSupplierServiceImpl implements ICoscoEvaluateTaskS
vo.getBasePageRequest().getPageSize());
return coscoEvaluateTaskSupplierMapper.selectSupplierDimensionPage(p, vo);
}
@Override
public IPage<CoscoEvaluateTaskSupplier> getPage(CoscoEvaluateTaskSupplier taskListVo) {
IPage<SupplierDimensionVo> p = new Page<>(taskListVo.getBasePageRequest().getPageNo(),
taskListVo.getBasePageRequest().getPageSize());
return coscoEvaluateTaskSupplierMapper.getPage(p, taskListVo);
}
}

View File

@ -1,17 +1,18 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.SupplierUserConstant;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao.*;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.*;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskIndicatorBaseVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskIndicatorVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.TaskSubIndicatorVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.*;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.dao.mapper.CoscoSupplierBaseMapper;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.BaseCategoryNameVo;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.ICoscoEvaluateTaskSupplierUserService;
@ -134,4 +135,27 @@ public class CoscoEvaluateTaskSupplierUserServiceImpl implements ICoscoEvaluateT
taskIndicatorBaseVo.setTaskIndicatorVo(taskIndicatorVo);
return taskIndicatorBaseVo;
}
@Override
public void getScore(AddScoreVo vo) {
int i =0;
List<ScoreVo> scoreVoList = vo.getScoreVoList();
for (ScoreVo voVo : scoreVoList){
if(voVo.getScore()!=null && !voVo.getScore().equals("")){
CoscoEvaluateScoring scoring=new CoscoEvaluateScoring();
scoring.setId(voVo.getId());
scoring.setScore(new BigDecimal(voVo.getScore()));
scoring.setRemark(voVo.getRemark());
coscoEvaluateScoringMapper.updateCoscoEvaluateScoring(scoring);
i++;
}
}
if(i>0){
CoscoEvaluateTaskSupplierUser user=new CoscoEvaluateTaskSupplierUser();
user.setId(vo.getId());
user.setReviewStatus(SupplierUserConstant.SCORE_STATUS_YD);
user.setReviewTime(new Date());
coscoEvaluateTaskSupplierUserMapper.updateCoscoEvaluateTaskSupplierUser(user);
}
}
}

View File

@ -0,0 +1,126 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.impl;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.EvaluateTaskConstant;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao.CoscoEvaluateLevelMapper;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao.CoscoEvaluateScoringMapper;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao.CoscoEvaluateTaskMapper;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.dao.CoscoEvaluateTaskSupplierMapper;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateLevel;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTask;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.entity.CoscoEvaluateTaskSupplier;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.service.ScheduledTasksService;
import com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo.CalculateAndObtainScoresVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class ScheduledTasksServiceImpl implements ScheduledTasksService {
@Autowired
private CoscoEvaluateTaskMapper coscoEvaluateTaskMapper;
@Autowired
private CoscoEvaluateTaskSupplierMapper coscoEvaluateTaskSupplierMapper;
@Autowired
private CoscoEvaluateScoringMapper coscoEvaluateScoringMapper;
@Autowired
private CoscoEvaluateLevelMapper coscoEvaluateLevelMapper;
/**
* 定时任务查看待开启的任务。如果时间小于当前时间那么开启任务
*/
@Scheduled(cron = "0 0 1 * * ?")
public void checkTask() {
//查询小于当前时间 未开启任务
coscoEvaluateTaskMapper.updateNOTask();
}
/**
* 定时任务查看待关闭的任务。如果任务结束时间小于当前时间那么关闭任务
*/
@Scheduled(cron = "0 0 2 * * ?")
@Override
public void closeTask() {
//查询小于当前时间 未关闭任务
//获取当前时间指标信息
List<CoscoEvaluateTask> coscoEvaluateTasks = coscoEvaluateTaskMapper.selectCloseTask();
List<CoscoEvaluateLevel> coscoEvaluateLevels = coscoEvaluateLevelMapper.selectCoscoEvaluateLevelList(new CoscoEvaluateLevel());
for (CoscoEvaluateTask coscoEvaluateTask : coscoEvaluateTasks) {
//查询当前任务的添加的供应商
CoscoEvaluateTaskSupplier suppliers = new CoscoEvaluateTaskSupplier();
suppliers.setEvaluateTaskId(coscoEvaluateTask.getId());
List<CoscoEvaluateTaskSupplier> coscoEvaluateTaskSuppliers = coscoEvaluateTaskSupplierMapper.selectCoscoEvaluateTaskSupplierList(suppliers);
//查询当前任务的人员信息及人员评价情况
List<CalculateAndObtainScoresVo> calculateAndObtainScoresVos = coscoEvaluateScoringMapper.selectCalculateAndObtainScores(coscoEvaluateTask.getId());
coscoEvaluateTaskSuppliers.forEach(coscoEvaluateTaskSupplier -> {
//计算总分数
int totalScore = getCalculateScore(coscoEvaluateTask, calculateAndObtainScoresVos, coscoEvaluateTaskSupplier);
coscoEvaluateTaskSupplier.setReviewScore(BigDecimal.valueOf(totalScore));
//根据总分数获取供应商评价结果
coscoEvaluateTaskSupplier.setReviewResult(getReviewResult(totalScore, coscoEvaluateLevels));
coscoEvaluateTaskSupplierMapper.updateCoscoEvaluateTaskSupplier(coscoEvaluateTaskSupplier);
});
coscoEvaluateTask.setStatus(EvaluateTaskConstant.EVALUATE_TASK_STATUS_END);
coscoEvaluateTaskMapper.updateCoscoEvaluateTask(coscoEvaluateTask);
}
}
private String getReviewResult(int totalScore, List<CoscoEvaluateLevel> coscoEvaluateLevels) {
return coscoEvaluateLevels.stream()
.filter(coscoEvaluateLevel -> totalScore >= coscoEvaluateLevel.getBeginValue() && totalScore <= coscoEvaluateLevel.getEndValue())
.map(CoscoEvaluateLevel::getId)
.findFirst()
.orElse(null);
}
private static int getCalculateScore(CoscoEvaluateTask coscoEvaluateTask, List<CalculateAndObtainScoresVo> calculateAndObtainScoresVos, CoscoEvaluateTaskSupplier coscoEvaluateTaskSupplier) {
//查询当前供应商的评价分数
List<CalculateAndObtainScoresVo> suppliList = calculateAndObtainScoresVos.stream().filter(vo -> vo.getSupplierId().equals(coscoEvaluateTaskSupplier.getSupplierId())).collect(Collectors.toList());
//根据指标id进行分组
Map<String, List<CalculateAndObtainScoresVo>> groupedByIndicator = suppliList.stream()
.collect(Collectors.groupingBy(CalculateAndObtainScoresVo::getIndicatorNdId));
//开始计算评价结果
//根据评价结果获取评价总分数
int totalScore = 0;
for (String id : groupedByIndicator.keySet()) {
List<CalculateAndObtainScoresVo> indicatorList = groupedByIndicator.get(id);
if (coscoEvaluateTask.getWeightStatus().equals(EvaluateTaskConstant.EVALUATE_TASK_WEIGHT_STATUS_YD)) {
//获取权重部门打分项信息
List<CalculateAndObtainScoresVo> weightDeptList = indicatorList.stream()
.filter(vo -> vo.getDeptId().equals(coscoEvaluateTask.getWeightDept()))
.collect(Collectors.toList());
//获取非权重部门打分项信息
List<CalculateAndObtainScoresVo> noWeightDeptList = indicatorList.stream().filter(vo -> !vo.getDeptId().equals(coscoEvaluateTask.getWeightDept())).collect(Collectors.toList());
int weightScore = 0;
int noWeightScore = 0;
BigDecimal weightValue = coscoEvaluateTask.getWeightValue();
//权重部门计算分数
if (weightDeptList.size() > 0) {
weightScore = weightDeptList.stream()
.mapToInt(CalculateAndObtainScoresVo::getScore)
.sum();
weightScore = (weightScore / weightDeptList.size()) * weightValue.intValue() / 100;
}
//非权重计算分数
if (noWeightDeptList.size() > 0) {
noWeightScore = noWeightDeptList.stream()
.mapToInt(CalculateAndObtainScoresVo::getScore)
.sum();
noWeightScore = (noWeightScore / noWeightDeptList.size()) * (100 - weightValue.intValue()) / 100;
}
totalScore += weightScore + noWeightScore;
} else {
int sScore = indicatorList.stream()
.mapToInt(CalculateAndObtainScoresVo::getScore)
.sum();
totalScore += sScore / indicatorList.size();
}
}
return totalScore;
}
}

View File

@ -0,0 +1,20 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo;
import lombok.Data;
import java.util.List;
@Data
public class AddScoreVo {
/**
* 打分主键
*/
private String id;
/**
* 打分项
*/
List<ScoreVo> scoreVoList;
}

View File

@ -0,0 +1,29 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo;
import lombok.Data;
@Data
public class CalculateAndObtainScoresVo {
/**
* 用户id
*/
private String userId;
/**
* 指标id
*/
private String indicatorNdId;
/**
* 分数
*/
private Integer score;
/**
* 用户部门id
*/
private String deptId;
/**
* 供应商id
*/
private String supplierId;
}

View File

@ -0,0 +1,22 @@
package com.chinaunicom.zyhy.ebtp.supplier.coscoEvaluate.vo;
import lombok.Data;
@Data
public class ScoreVo {
/**
* 打分项id
*/
private String id;
/**
* 打分
*/
private String score;
/**
* 备注
*/
private String remark;
}

View File

@ -56,6 +56,15 @@ public class SupplierDimensionVo {
*/
private String taskId;
/**
* 供应商id
*/
private String supplierId;
/**
* 分数
*/
private String suscore;
@ApiModelProperty(value = "分页对象信息")
private BasePageRequest basePageRequest;
}

View File

@ -517,8 +517,8 @@
resultType="com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.BaseCategoryNameVo">
select csb.id,csb.name,GROUP_CONCAT(DISTINCT cc.category_name SEPARATOR ', ') AS categoryName
from cosco_supplier_base csb
join cosco_access_supplier_category casc on csb.id=casc.supplier_id and casc.del_flag='normal'
join cosco_category cc on cc.id= casc.category_id
left join cosco_access_supplier_category casc on csb.id=casc.supplier_id and casc.del_flag='normal'
left join cosco_category cc on cc.id= casc.category_id
where csb.id=#{id}
group by csb.id
</select>