|
@@ -0,0 +1,92 @@
|
|
|
+package com.jeeplus.test.changes.dimission.service;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jeeplus.sys.utils.StringUtils;
|
|
|
+import com.jeeplus.test.changes.dimission.domain.ChangesDimission;
|
|
|
+import com.jeeplus.test.changes.dimission.domain.ChangesDimissionRea;
|
|
|
+import com.jeeplus.test.changes.dimission.mapper.ChangesDimissionMapper;
|
|
|
+import com.jeeplus.test.changes.dimission.service.dto.ChangesDimissionDTO;
|
|
|
+import com.jeeplus.test.changes.dimission.service.dto.ChangesDimissionReaDTO;
|
|
|
+import com.jeeplus.test.changes.dimission.service.mapstruct.ChangesDimissionWrapper;
|
|
|
+import com.jeeplus.test.roster.domain.RosterBase;
|
|
|
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+@Transactional(rollbackFor = Exception.class)
|
|
|
+public class ChangesDimissionService extends ServiceImpl<ChangesDimissionMapper, ChangesDimission> {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ChangesDimissionMapper changesDimissionMapper;
|
|
|
+ @Resource
|
|
|
+ private ChangesDimissionReaService changesDimissionReaService;
|
|
|
+
|
|
|
+ public IPage<ChangesDimissionDTO> findList(Page<ChangesDimissionDTO> page, QueryWrapper<ChangesDimission> queryWrapper){
|
|
|
+ queryWrapper.eq("cd.del_flag","0");
|
|
|
+ return changesDimissionMapper.findList(page,queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ public ChangesDimissionDTO queryById(String id) {
|
|
|
+
|
|
|
+ ChangesDimissionDTO changesDimissionDTO = changesDimissionMapper.queryById(id);
|
|
|
+
|
|
|
+ if(ObjectUtil.isNotEmpty(changesDimissionDTO)){
|
|
|
+ if(CollectionUtil.isNotEmpty(changesDimissionDTO.getChangesDimissionReaDTOList())){
|
|
|
+ List<String> collect = changesDimissionDTO.getChangesDimissionReaDTOList().stream().map(ChangesDimissionReaDTO::getDimissionReason).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(collect)){
|
|
|
+ changesDimissionDTO.setReaTypeList(collect);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return changesDimissionDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResponseEntity saveDimission(ChangesDimissionDTO changesDimissionDTO) {
|
|
|
+ if(ObjectUtil.isNotEmpty(changesDimissionDTO)){
|
|
|
+ if(StringUtils.isNotBlank(changesDimissionDTO.getId())){
|
|
|
+ List<ChangesDimission> list = this.list(new QueryWrapper<ChangesDimission>().lambda()
|
|
|
+ .eq(ChangesDimission::getRosterId, changesDimissionDTO.getRosterId())
|
|
|
+ .ne(ChangesDimission::getId, changesDimissionDTO.getId()));
|
|
|
+ if(CollectionUtil.isNotEmpty(list)){
|
|
|
+ return ResponseEntity.badRequest().body("此员工已提交离职,请勿重复提交");
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ List<ChangesDimission> list = this.list(new QueryWrapper<ChangesDimission>().lambda()
|
|
|
+ .eq(ChangesDimission::getRosterId, changesDimissionDTO.getRosterId()));
|
|
|
+ if(CollectionUtil.isNotEmpty(list)){
|
|
|
+ return ResponseEntity.badRequest().body("此员工已提交离职,请勿重复提交");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ChangesDimission changesDimission = ChangesDimissionWrapper.INSTANCE.toEntity(changesDimissionDTO);
|
|
|
+ this.saveOrUpdate(changesDimission);
|
|
|
+ if(ObjectUtil.isNotEmpty(changesDimissionDTO)){
|
|
|
+ if(CollectionUtil.isNotEmpty(changesDimissionDTO.getReaTypeList())){
|
|
|
+ changesDimissionReaService.remove(new QueryWrapper<ChangesDimissionRea>().lambda()
|
|
|
+ .eq(ChangesDimissionRea::getCdId,changesDimission.getId()));
|
|
|
+ List<ChangesDimissionRea> reaList = new ArrayList<>();
|
|
|
+ changesDimissionDTO.getReaTypeList().stream().forEach(item->{
|
|
|
+ ChangesDimissionRea rea = new ChangesDimissionRea();
|
|
|
+ rea.setCdId(changesDimission.getId());
|
|
|
+ rea.setDimissionReason(item);
|
|
|
+ reaList.add(rea);
|
|
|
+ });
|
|
|
+ changesDimissionReaService.saveBatch(reaList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResponseEntity.ok("保存成功");
|
|
|
+ }
|
|
|
+}
|