package com.hssx.cloudmodel.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hssx.cloudmodel.constant.Constant;
import com.hssx.cloudmodel.entity.Company;
import com.hssx.cloudmodel.entity.Factory;
import com.hssx.cloudmodel.entity.LngLatCompany;
import com.hssx.cloudmodel.entity.User;
import com.hssx.cloudmodel.entity.vo.CompanyVO;
import com.hssx.cloudmodel.mapper.CompanyMapper;
import com.hssx.cloudmodel.mapper.LngLatCompanyMapper;
import com.hssx.cloudmodel.mapper.UserMapper;
import com.hssx.cloudmodel.service.CompanyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hssx.cloudmodel.util.HttpRespMsg;
import com.hssx.cloudmodel.util.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author 吴涛涛
* @since 2019-07-26
*/
@Service
public class CompanyServiceImpl extends ServiceImpl implements CompanyService {
@Resource
CompanyMapper companyMapper;
@Resource
UserMapper userMapper;
@Resource
LngLatCompanyMapper lngLatCompanyMapper;
@Override
public HttpRespMsg addAndUpdateRole(CompanyVO companyVO, Integer flag) {
HttpRespMsg msg = new HttpRespMsg();
Company company = new Company();
if (flag == 0) {
//添加公司
QueryWrapper qw = new QueryWrapper<>();
qw.eq("company_name", companyVO.getCompanyName());
int count = companyMapper.selectCount(qw);
if (count > 0) {
msg.setError("公司已存在,请勿重复添加");
} else {
if (companyVO.getCompanyType() == 0) {
//资产方直接添加
BeanUtils.copyProperties(companyVO,company);
companyMapper.insert(company);
}else if (companyVO.getCompanyType() == 1){
//生产方
BeanUtils.copyProperties(companyVO,company);
companyMapper.insert(company);
LngLatCompany factory = new LngLatCompany();
factory.setxLat(companyVO.getXLat());
factory.setyLng(companyVO.getYLng());
factory.setCompanyId(company.getId());
lngLatCompanyMapper.insert(factory);
}
}
} else if (flag == 1) {
//更新公司信息
BeanUtils.copyProperties(companyVO,company);
if (companyVO.getCompanyType() == 0) {
//修改资产方
BeanUtils.copyProperties(companyVO,company);
companyMapper.updateById(company);
}else if (companyVO.getCompanyType() == 1){
//生产方
BeanUtils.copyProperties(companyVO,company);
companyMapper.updateById(company);
QueryWrapper qw = new QueryWrapper<>();
qw.eq("company_id",companyVO.getId());
LngLatCompany lngLatCompany = lngLatCompanyMapper.selectOne(qw);
LngLatCompany factory = new LngLatCompany();
factory.setxLat(companyVO.getXLat());
factory.setyLng(companyVO.getYLng());
factory.setCompanyId(company.getId());
factory.setId(lngLatCompany.getId());
lngLatCompanyMapper.updateById(factory);
}
}
return msg;
}
@Override
public HttpRespMsg pageList(PageUtil page, String keyName,Integer companyType) {
HttpRespMsg msg = new HttpRespMsg();
List list = new ArrayList<>();
System.out.println(page);
Integer start = (page.getPageNum() - 1) * page.getPageSize();
if(companyType == 0){
list = companyMapper.getListByKeyName(keyName, start, page.getPageSize(),companyType);
Integer count = list.size();
page.setTotal(count);
page.setPages(page.getTotal());
}else{
list = companyMapper.getCustomerListByKeyName(keyName, start, page.getPageSize(),companyType);
Integer count = list.size();
page.setTotal(count);
page.setPages(page.getTotal());
}
page.setList(list);
msg.data = page;
return msg;
}
@Override
public List getIdAndNamelist(User user) {
QueryWrapper qw = new QueryWrapper<>();
qw.select("id", "company_name", "company_type");
if (Constant.SYS_ID == user.getParentId()) {
//此时是admin创建用户,返回可选的生产方公司,查询出当前admin的信息并获取他的公司id
User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getId()));
qw.eq("company_type", Constant.PRODUCER_COMPANY).or().eq("id", admin.getCompanyId());
} else if (Constant.SYS_PARENT_ID == user.getParentId()) {
//系统管理员创建admin,返回资产方公司
qw.eq("company_type", Constant.ASSETS_COMPANY);
} else {
//此时是项目经理创建其他用户
User admin = userMapper.selectOne(new QueryWrapper().eq("id", user.getParentId()));
qw.eq("company_type", Constant.PRODUCER_COMPANY).or().eq("id", admin.getCompanyId());
}
return companyMapper.selectList(qw);
}
@Override
public List addCompanyListToProject(User user) {
QueryWrapper qw = new QueryWrapper<>();
qw.eq("company_type", Constant.PRODUCER_COMPANY);
return companyMapper.selectList(qw);
}
@Override
public HttpRespMsg deleteById(Integer id) {
HttpRespMsg msg = new HttpRespMsg();
Integer count = userMapper.selectCount(new QueryWrapper().eq("company_id", id));
if (count > 0) {
msg.setError("该公司已被应用到用户中,暂不提供删除操作");
} else {
companyMapper.deleteById(id);
}
return msg;
}
}