| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- package com.ruoyi.project.service.impl;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.enums.UserRolesType;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.PageUtils;
- import com.ruoyi.common.utils.SecurityUtils;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.bean.BeanUtils;
- import com.ruoyi.common.utils.bean.BeanValidators;
- import com.ruoyi.project.bo.ProjectListInput;
- import com.ruoyi.project.bo.ProjectTaskListOut;
- import com.ruoyi.project.bo.ProjectTaskOut;
- import com.ruoyi.project.domain.ProjectStaff;
- import com.ruoyi.project.domain.ProjectStaffRecord;
- import com.ruoyi.project.domain.ProjectTask;
- import com.ruoyi.project.mapper.ProjectStaffMapper;
- import com.ruoyi.project.mapper.ProjectStaffRecordMapper;
- import com.ruoyi.project.mapper.ProjectTaskMapper;
- import com.ruoyi.project.service.ProjectTaskService;
- import com.ruoyi.system.mapper.SysUserMapper;
- import com.ruoyi.system.service.ISysDeptService;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.validation.Validator;
- import java.util.List;
- @Service
- public class ProjectTaskServiceImpl implements ProjectTaskService {
- private static final Logger log = LoggerFactory.getLogger(ProjectTaskServiceImpl.class);
- @Autowired
- private ProjectTaskMapper projectTaskMapper;
- @Autowired
- private ProjectStaffMapper projectStaffMapper;
- @Autowired
- private ISysDeptService deptService;
- @Autowired
- private Validator validator;
- @Autowired
- private SysUserMapper userMapper;
- @Autowired
- private ProjectStaffRecordMapper projectStaffRecordMapper;
- @Override
- public AjaxResult addProjectTask(ProjectTask projectTask) {
- userMapper.updateUserProjectSum(projectTask.getAid(),0);
- int i = projectTaskMapper.insertSelective(projectTask);
- if (StringUtils.isNotBlank(projectTask.getStaffObject())){
- String[] split = projectTask.getStaffObject().split(",");
- projectStaffMapper.updatePidByList(projectTask.getId(),split);
- projectTaskMapper.updateStaffName(projectTask.getId());
- }
- return AjaxResult.success(i);
- }
- @Override
- public AjaxResult deleteProject(ProjectTask in) {
- int i = projectTaskMapper.deleteByPrimaryKey(in.getId());
- userMapper.updateUserProjectSum(in.getAid(),0);
- if (i>0){
- projectStaffMapper.deleteBypid(in.getId());
- return AjaxResult.success();
- }
- return AjaxResult.error("项目编号不存在");
- }
- @Override
- public AjaxResult details(Long id) {
- ProjectTask projectTask = projectTaskMapper.selectByPrimaryKey(id);
- ProjectTaskOut out= new ProjectTaskOut();
- if (projectTask!=null){
- BeanUtils.copyBeanProp(out, projectTask);
- List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(id);
- if (!projectStaffs.isEmpty())out.setList(projectStaffs);
- return AjaxResult.success(out);
- }
- return AjaxResult.error("项目不存在");
- }
- @Override
- public List<ProjectTaskListOut> list(ProjectListInput in) {
- pushRoleType(in);
- if (!SecurityUtils.isSuperAdmin()){
- in.setUid(SecurityUtils.getUserId());
- Long companyId = deptService.selectCompanyByDeptId();
- if (companyId!=null)in.setCompanyId(companyId);
- }
- if (in.getEndTime()!=null)in.setEndTime(in.getEndTime()+" 23:59:59");
- PageUtils.startPage();
- return projectTaskMapper.selectList(in);
- }
- private void pushRoleType(ProjectListInput in) {
- if (in.getRoleType()==null){
- if (SecurityUtils.hashRoles(UserRolesType.CEO.getCode())){
- in.setRoleType(1);
- }else if (SecurityUtils.hashRoles(UserRolesType.ADMIN.getCode())){
- in.setRoleType(3);
- }else if (SecurityUtils.hashRoles(UserRolesType.MANAGE.getCode())){
- in.setRoleType(2);
- }else {
- in.setRoleType(0);
- }
- }
- }
- @Override
- public String importProject(List<ProjectTaskListOut> list, boolean updateSupport, String operName) {
- if (StringUtils.isNull(list) || list.size() == 0)
- {
- throw new ServiceException("导入用户数据不能为空!");
- }
- int successNum = 0;
- int failureNum = 0;
- StringBuilder successMsg = new StringBuilder();
- StringBuilder failureMsg = new StringBuilder();
- for (ProjectTaskListOut p : list)
- {
- try
- {
- // 验证是否存在这个用户
- ProjectTask projectTask = projectTaskMapper.selectByPrimaryKey(p.getId());
- if (StringUtils.isNull(projectTask)){
- BeanValidators.validateWithException(validator, p);
- if(StringUtils.isNotBlank(p.getAdminName())) {
- SysUser sysUser = userMapper.selectByNikeName(p.getAdminName());
- if (sysUser == null) {
- throw new ServiceException(String.format("负责人[%s]不存在", p.getAdminName()));
- }
- p.setAid(sysUser.getUserId());
- p.setAdminName(sysUser.getNickName());
- }
- p.setProjectStatus(0);
- projectTaskMapper.insertSelective(p);
- if(StringUtils.isNotBlank(p.getStaffName())) {
- String[] split = p.getStaffName().split(",");
- for (String s : split) {
- ProjectStaff newPs = new ProjectStaff();
- SysUser sysUser = userMapper.selectByNikeName(s);
- if (sysUser == null) {
- throw new ServiceException("[" + s + "]不存在");
- }
- newPs.setAid(sysUser.getUserId());
- newPs.setName(sysUser.getNickName());
- newPs.setPid(p.getId());
- projectStaffMapper.insertSelective(newPs);
- }
- }
- projectTaskMapper.updateStaffName(p.getId());
- successNum++;
- successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 导入成功");
- }else if (updateSupport){
- BeanValidators.validateWithException(validator, p);
- if(StringUtils.isNotBlank(p.getStaffName())) {
- addStaffAndDelete( p);
- }
- if (p.getAdminName()!=null){
- SysUser sysUser = userMapper.selectByNikeName(p.getAdminName());
- if (sysUser == null) {
- throw new ServiceException(String.format("负责人[%s]不存在", p.getAdminName()));
- }
- List<ProjectStaffRecord> projectStaffRecords = projectStaffRecordMapper.selectByPidAndAid(p.getId(), projectTask.getAid());
- if (projectStaffRecords.size()>0){
- throw new ServiceException(String.format("负责人[%s]存在打卡,不允许切换.", projectTask.getAdminName()));
- }
- p.setAid(sysUser.getUserId());
- p.setAdminName(sysUser.getNickName());
- }
- projectTaskMapper.updateByPrimaryKeySelective(p);
- successNum++;
- successMsg.append("<br/>" + successNum + "、项目: " + projectTask.getName() + " 更新成功");
- }
- else
- {
- failureNum++;
- failureMsg.append("<br/>" + failureNum + "、项目: " + projectTask.getName() + " 已存在");
- }
- }
- catch (Exception e)
- {
- failureNum++;
- String msg = "<br/>" + failureNum + "、项目: " + p.getName() + " 导入失败:";
- failureMsg.append(msg + e.getMessage());
- log.error(msg, e);
- }
- }
- if (failureNum > 0)
- {
- failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
- throw new ServiceException(failureMsg.toString());
- }
- else
- {
- successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
- }
- return successMsg.toString();
- }
- @Override
- public AjaxResult updateProjectTask(ProjectTask in) {
- ProjectTask use = projectTaskMapper.selectByPrimaryKey(in.getId());
- if (in.getAid().equals(use.getAid())){
- List<ProjectStaffRecord> projectStaffRecords = projectStaffRecordMapper.selectByPidAndAid(in.getId(), use.getAid());
- if (projectStaffRecords.size()>0){
- throw new ServiceException(String.format("负责人[%s]存在打卡,不允许切换.", use.getAdminName()));
- }
- }
- return AjaxResult.success(projectTaskMapper.updateByPrimaryKeySelective(in));
- }
- @Override
- public AjaxResult selectProjectImg(Long pid) {
- return AjaxResult.success(projectTaskMapper.selectProjectImg(pid));
- }
- @Override
- public boolean checkProjectNumber(ProjectTask projectTask) {
- ProjectTask projectTask1 = projectTaskMapper.selectByProjectNumber(projectTask.getProjectNumber());
- if (projectTask.getId()==null){
- if (projectTask1!=null){
- return true;
- }
- }else {
- if (projectTask1!=null&&!projectTask.getId().equals(projectTask1.getId())){
- return true;
- }
- }
- return false;
- }
- private void addStaffAndDelete( ProjectTaskListOut p) {
- String[] split = p.getStaffName().split(",");
- List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(p.getId());
- addStaff( p, split, projectStaffs);
- deleteStaff( split, projectStaffs);
- }
- private void deleteStaff( String[] split, List<ProjectStaff> projectStaffs) {
- //预设需要删除,如果找到相同名字的就无需删除
- for (ProjectStaff ps : projectStaffs) {
- boolean flag = true;
- for (String s : split) {
- if (ps.getName().equals(s)) {
- flag = false;
- }
- }
- if (flag) {
- int sum = projectStaffRecordMapper.selectById(ps.getId());
- if (sum > 0) {
- throw new ServiceException("[" + ps.getName() + "]存在打卡不能删除");
- }
- projectStaffMapper.deleteByPrimaryKey(ps.getId());
- }
- }
- }
- private void addStaff( ProjectTaskListOut p, String[] split, List<ProjectStaff> projectStaffs) {
- for (String s : split) {
- boolean flag = true;
- for (ProjectStaff ps : projectStaffs) {
- if (ps.getName().equals(s)) {
- flag = false;
- }
- }
- if (flag) {
- ProjectStaff newPs = new ProjectStaff();
- SysUser sysUser = userMapper.selectByNikeName(s);
- if (sysUser == null) {
- throw new ServiceException("[" + s + "]不存在");
- }
- newPs.setAid(sysUser.getUserId());
- newPs.setName(sysUser.getNickName());
- newPs.setPid(p.getId());
- projectStaffMapper.insertSelective(newPs);
- }
- }
- }
- }
|