|
@@ -0,0 +1,162 @@
|
|
|
+package com.xjrsoft.module.evaluate.service.impl;
|
|
|
+
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.xjrsoft.common.exception.MyException;
|
|
|
+import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateManage;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateManageItem;
|
|
|
+import com.xjrsoft.module.evaluate.entity.EvaluateObject;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageItemMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
|
|
|
+import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
|
|
|
+import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
|
|
|
+import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 评价管理
|
|
|
+* @Author dzx
|
|
|
+* @Date: 2024-01-16
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManageMapper, EvaluateManage> implements IEvaluateManageService {
|
|
|
+ private final EvaluateManageMapper evaluateManageMapper;
|
|
|
+
|
|
|
+ private final EvaluateObjectMapper evaluateObjectMapper;
|
|
|
+ private final EvaluateExecuterMapper evaluateExecuterMapper;
|
|
|
+ private final EvaluateItemMapper evaluateItemMapper;
|
|
|
+ private final EvaluateManageItemMapper evaluateManageItemMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean add(EvaluateManage evaluateManage) {
|
|
|
+ evaluateManage.setStatus(-1);
|
|
|
+ evaluateManageMapper.insert(evaluateManage);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean update(EvaluateManage evaluateManage) {
|
|
|
+ evaluateManageMapper.updateById(evaluateManage);
|
|
|
+ //********************************* EvaluateObject 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<EvaluateObject> evaluateObjectList = evaluateObjectMapper.selectList(Wrappers.lambdaQuery(EvaluateObject.class).eq(EvaluateObject::getEvaluateManageId, evaluateManage.getId()).select(EvaluateObject::getId));
|
|
|
+ List<Long> evaluateObjectIds = evaluateObjectList.stream().map(EvaluateObject::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> evaluateObjectOldIds = evaluateManage.getEvaluateObjectList().stream().map(EvaluateObject::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> evaluateObjectRemoveIds = evaluateObjectIds.stream().filter(item -> !evaluateObjectOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (EvaluateObject evaluateObject : evaluateManage.getEvaluateObjectList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (evaluateObject.getId() != null) {
|
|
|
+ evaluateObjectMapper.updateById(evaluateObject);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ evaluateObject.setEvaluateManageId(evaluateManage.getId());
|
|
|
+ evaluateObjectMapper.insert(evaluateObject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(evaluateObjectRemoveIds.size() > 0){
|
|
|
+ evaluateObjectMapper.deleteBatchIds(evaluateObjectRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* EvaluateObject 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ //********************************* EvaluateExecuter 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<EvaluateExecuter> evaluateExecuterList = evaluateExecuterMapper.selectList(Wrappers.lambdaQuery(EvaluateExecuter.class).eq(EvaluateExecuter::getEvaluateManageId, evaluateManage.getId()).select(EvaluateExecuter::getId));
|
|
|
+ List<Long> evaluateExecuterIds = evaluateExecuterList.stream().map(EvaluateExecuter::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> evaluateExecuterOldIds = evaluateManage.getEvaluateExecuterList().stream().map(EvaluateExecuter::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> evaluateExecuterRemoveIds = evaluateExecuterIds.stream().filter(item -> !evaluateExecuterOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (EvaluateExecuter evaluateExecuter : evaluateManage.getEvaluateExecuterList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (evaluateExecuter.getId() != null) {
|
|
|
+ evaluateExecuterMapper.updateById(evaluateExecuter);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ evaluateExecuter.setEvaluateManageId(evaluateManage.getId());
|
|
|
+ evaluateExecuterMapper.insert(evaluateExecuter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(evaluateExecuterRemoveIds.size() > 0){
|
|
|
+ evaluateExecuterMapper.deleteBatchIds(evaluateExecuterRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* EvaluateExecuter 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delete(List<Long> ids) {
|
|
|
+ evaluateManageMapper.deleteBatchIds(ids);
|
|
|
+ evaluateObjectMapper.delete(Wrappers.lambdaQuery(EvaluateObject.class).in(EvaluateObject::getEvaluateManageId, ids));
|
|
|
+ evaluateExecuterMapper.delete(Wrappers.lambdaQuery(EvaluateExecuter.class).in(EvaluateExecuter::getEvaluateManageId, ids));
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<EvaluateManagePageVo> getPage(Page<EvaluateManagePageDto> page, EvaluateManagePageDto dto) {
|
|
|
+ return evaluateManageMapper.getPage(page, dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean release(Long id) {
|
|
|
+ EvaluateManage evaluateManage = evaluateManageMapper.selectById(id);
|
|
|
+ if(evaluateManage == null){
|
|
|
+ throw new MyException("未查询到数据,请检查传入的id是否正确");
|
|
|
+ }
|
|
|
+ evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong());
|
|
|
+
|
|
|
+// //查询模板中的评价项
|
|
|
+// List<EvaluateItem> evaluateItemList = evaluateItemMapper.selectList(
|
|
|
+// new QueryWrapper<EvaluateItem>().lambda()
|
|
|
+// .eq(EvaluateItem::getEvaluateTemplateId, evaluateManage.getEvaluateTemplateId())
|
|
|
+// );
|
|
|
+// //克隆一份,存到评价管理下面,可以采用sql语句
|
|
|
+// for (EvaluateItem evaluateItem : evaluateItemList) {
|
|
|
+// EvaluateManageItem manageItem = BeanUtil.toBean(evaluateItem, EvaluateManageItem.class);
|
|
|
+// manageItem.setEvaluateManageId(evaluateManage.getId());
|
|
|
+// manageItem.setEvaluateItemId(manageItem.getId());
|
|
|
+// evaluateManageItemMapper.insert(manageItem);
|
|
|
+// }
|
|
|
+ //将评价管理状态改为进行中
|
|
|
+ evaluateManage.setStatus(1);
|
|
|
+ evaluateManageMapper.insert(evaluateManage);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+}
|