package com.hssx.cloudmodel.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hssx.cloudmodel.entity.Project;
import com.hssx.cloudmodel.entity.ProjectUser;
import com.hssx.cloudmodel.entity.User;
import com.hssx.cloudmodel.mapper.ProjectMapper;
import com.hssx.cloudmodel.mapper.ProjectUserMapper;
import com.hssx.cloudmodel.mapper.UserMapper;
import com.hssx.cloudmodel.service.ProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hssx.cloudmodel.util.HttpRespMsg;
import com.hssx.cloudmodel.util.ListUtil;
import com.hssx.cloudmodel.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.jws.soap.SOAPBinding;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author 吴涛涛
* @since 2019-07-27
*/
@Service
public class ProjectServiceImpl extends ServiceImpl implements ProjectService {
@Autowired
ProjectMapper projectMapper;
@Autowired
ProjectUserMapper projectUserMapper;
@Autowired
UserMapper userMapper;
@Override
public HttpRespMsg addAndUpdateProject(Project project, Integer flag, User user) {
HttpRespMsg msg = new HttpRespMsg();
if(user != null){
QueryWrapper qw = new QueryWrapper<>();
qw.orderByDesc("id").last("limit 1");
Project lastProject = projectMapper.selectOne(qw);
if (flag == 0) {
synchronized (this) {
int count = 1;
if (lastProject != null) {
//YMXM201903220001
String numStr = lastProject.getProjectNo().substring(13);
int num = Integer.valueOf(numStr).intValue();
count += num;
}
long time = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String seq = sdf.format(time) + String.format("%04d", count);
project.setProjectNo("YMXM"+seq);
project.setCreatorId(user.getId());
project.setCreator(user.getUsername());
projectMapper.insert(project);
}
}else if(flag == 1){
projectMapper.updateById(project);
}
}else{
msg.setError("当前角色涉及权限问题,请重新登录");
}
return msg;
}
@Override
public HttpRespMsg handOutProject(Project project, String userIds) {
HttpRespMsg msg = new HttpRespMsg();
Project pro = projectMapper.selectById(project.getId());
List ids = new ArrayList<>();
if(userIds != null && userIds != ""){
List list = ListUtil.convertLongIdsArrayToList(userIds);
if(list().size()>0){
for(String id:list){
User user = userMapper.selectById(id);
ProjectUser projectUser = new ProjectUser();
projectUser.setId(Integer.parseInt(id));
projectUser.setProjectId(project.getId());
projectUser.setSubordinate(user.getSubordinateType());
projectUserMapper.insert(projectUser);
}
}
}else{
msg.setError("用户id不能为null和空");
}
return msg;
}
@Override
public HttpRespMsg getList(String keyName,PageUtil page,User currentUser) {
HttpRespMsg msg = new HttpRespMsg();
if(currentUser != null){
PageHelper.startPage(page.getPageNum(),page.getPageSize());
List projects = projectMapper.getProjectListByUid(keyName,currentUser);
PageInfo pageInfos = new PageInfo<>(projects);
msg.data = pageInfos;
}else{
msg.setError("当前用户不存,或涉及到权限问题,请重新登录");
}
QueryWrapper qw = new QueryWrapper<>();
qw.select("project_name", "creator","charger","indate");
if(keyName != null){
qw.like("project_name",keyName);
}
return msg;
}
}