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.constant.Constant; import com.hssx.cloudmodel.entity.*; import com.hssx.cloudmodel.entity.vo.ProjectVO; import com.hssx.cloudmodel.mapper.*; 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.annotation.Resource; import javax.jws.soap.SOAPBinding; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Spliterator; /** *

* 服务实现类 *

* * @author 吴涛涛 * @since 2019-07-27 */ @Service public class ProjectServiceImpl extends ServiceImpl implements ProjectService { @Resource ProjectMapper projectMapper; @Resource ProjectUserMapper projectUserMapper; @Resource UserMapper userMapper; @Resource CompanyMapper companyMapper; @Resource CustomCompanyMapper customCompanyMapper; @Resource MouldMapper mouldMapper; @Override public HttpRespMsg addAndUpdateProject(Project project, Integer flag, User user,String userIds, String customerCompanyIds,String customerCompanyNames,String modelIds) { 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(); Company company = companyMapper.selectById(user.getCompanyId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String seq = sdf.format(time) + String.format("%04d", count); project.setCreatorId(user.getId()); project.setCreator(user.getUsername()); project.setOwnerCompany(user.getCompanyId()); project.setOwnerCompanyName(company.getCompanyName()); project.setProjectNo(Constant.PROJECT_PREFIX+seq); projectMapper.insert(project); //添加生产方关联公司 if(customerCompanyIds != null && !"".equals(customerCompanyIds) && customerCompanyNames != null && !"".equals(customerCompanyNames)){ List ides = ListUtil.convertIntegerIdsArrayToList(customerCompanyIds); String[] split = customerCompanyNames.split(","); int index = 0; for(String cusCompany:split){ CustomCompany customCompany = new CustomCompany(); customCompany.setCompanyId(ides.get(index)); customCompany.setCompanyName(cusCompany); customCompany.setProjectId(project.getId()); customCompanyMapper.insert(customCompany); index++; } } } }else if(flag == 1){ projectMapper.updateById(project); //删除之前分配的人员 QueryWrapper qwPro = new QueryWrapper<>(); qwPro.eq("project_id",project.getId()); projectUserMapper.delete(qwPro); //再次重新分配 this.handOutProject(project, userIds); //删除之前分配与项目关联的模具,即将之前的关联项目id修改成未关联 mouldMapper.updateMouldByProjectId(project); //再次模具的分配 if(modelIds != null && !"".equals(modelIds)){ List modelList = ListUtil.convertIntegerIdsArrayToList(modelIds); int index = 1; if(modelList.size()>0){ for (Integer id : modelList) { Mould mould = new Mould(); mould.setId(id); mould.setProjectId(project.getId()); mould.setBelongProjectGrade(index/modelList.size()+""); mouldMapper.updateById(mould); } } } } }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; } @Override public HttpRespMsg getUserByCompanyIdOrSubordinateType(User user) { HttpRespMsg msg = new HttpRespMsg(); List users = new ArrayList<>(); QueryWrapperqw = new QueryWrapper<>(); if(user.getCompanyId() != null){ qw.eq("company_id", user.getCompanyId()); }else if(user.getSubordinateType() != null){ qw.eq("subordinate_type", user.getSubordinateType()); } users = userMapper.selectList(qw); msg.data = users; return msg; } @Override public HttpRespMsg getProjectDetail(Project project) { HttpRespMsg msg = new HttpRespMsg(); ProjectVO vo = projectMapper.getProjectById(project.getId()); List users = projectMapper.getProjectUserById(project.getId()); //处理users按照客户呼和供应商分组 for (User user : users) { if(user.getSubordinateType()==0){ //资产方 vo.getOwnerUsers().add(user); }else if(user.getSubordinateType()==1){ //生产方 vo.getCustomUsers().add(user); } } msg.data = vo; return msg; } @Override public HttpRespMsg getUserListByCompanyIds(String companyIds,Integer adminId) { HttpRespMsg msg = new HttpRespMsg(); if(!"".equals(companyIds) && companyIds != null){ List ids = ListUtil.convertIntegerIdsArrayToList(companyIds); msg.data = userMapper.selectList(new QueryWrapper().in("company_id",ids).ne("id",adminId)); } return msg; } @Override public HttpRespMsg getModelListByCompanyId(User user) { HttpRespMsg msg = new HttpRespMsg(); QueryWrapper qw = new QueryWrapper<>(); if(Constant.SYS_ID == user.getParentId()){ //此时是admin User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getId())); qw.eq("company_id",admin.getCompanyId()); }else if(Constant.SYS_PARENT_ID == user.getParentId()){ //系统管理员 // qw.eq("company_type",Constant.ASSETS_COMPANY); }else{ //此时是项目经理 User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getParentId())); qw.eq("company_id",admin.getCompanyId()); } msg.data = mouldMapper.selectList(qw); return msg; } }