package com.gkhy.exam.system.service.impl;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gkhy.exam.common.api.CommonPage;
|
import com.gkhy.exam.common.api.CommonResult;
|
import com.gkhy.exam.common.domain.model.LoginUserDetails;
|
import com.gkhy.exam.common.exception.ApiException;
|
import com.gkhy.exam.common.utils.PageUtils;
|
import com.gkhy.exam.common.utils.SecurityUtils;
|
import com.gkhy.exam.common.utils.StringUtils;
|
import com.gkhy.exam.system.domain.CompanyBasic;
|
import com.gkhy.exam.system.domain.ExQuestion;
|
import com.gkhy.exam.system.domain.SysCompany;
|
import com.gkhy.exam.system.mapper.CompanyBasicMapper;
|
import com.gkhy.exam.system.service.CompanyBasicService;
|
import com.gkhy.exam.system.service.SysCompanyService;
|
import org.apache.poi.ss.usermodel.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.IOException;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
|
@Service
|
public class CompanyBasicServiceImpl extends ServiceImpl<CompanyBasicMapper, CompanyBasic> implements CompanyBasicService {
|
|
@Autowired
|
private CompanyBasicMapper companyBasicMapper;
|
@Autowired
|
private SysCompanyService sysCompanyService;
|
|
|
|
@Override
|
public CommonPage selectCompanyBasicList(Integer companyId) {
|
|
if (!SecurityUtils.adminUser()){
|
if (companyId==null){
|
throw new ApiException("非管理员操作,查询条件不可为空");
|
}
|
}
|
PageUtils.startPage();
|
List<CompanyBasic> companyBasics = companyBasicMapper.selectCompanyBasicList(companyId);
|
return CommonPage.restPage(companyBasics);
|
}
|
|
@Override
|
public CommonResult insertCompanyBasic(CompanyBasic companyBasic) {
|
LoginUserDetails loginUser = SecurityUtils.getLoginUser();
|
List<CompanyBasic> companyBasics = companyBasicMapper.selectCompanyBasicList(companyBasic.getCompanyId());
|
if (companyBasics.size()>0){
|
throw new ApiException("当前企业已有相关数据,请删除原有数据后重试");
|
}
|
SysCompany sysCompany = sysCompanyService.selectCompanyById(Long.valueOf(companyBasic.getCompanyId()));
|
companyBasic.setCompanyName(sysCompany.getName());
|
companyBasic.setCreateBy(loginUser.getUsername());
|
companyBasic.setCreateTime(LocalDateTime.now());
|
int insert = companyBasicMapper.insert(companyBasic);
|
if (insert>0){
|
return CommonResult.success();
|
}
|
return CommonResult.failed();
|
}
|
|
@Override
|
public CommonResult updateCompanyBasic(CompanyBasic companyBasic) {
|
LoginUserDetails loginUser = SecurityUtils.getLoginUser();
|
SysCompany sysCompany = sysCompanyService.selectCompanyById(Long.valueOf(companyBasic.getCompanyId()));
|
companyBasic.setCompanyName(sysCompany.getName());
|
companyBasic.setUpdateBy(loginUser.getUsername());
|
companyBasic.setUpdateTime(LocalDateTime.now());
|
int update = companyBasicMapper.updateBasicById(companyBasic);
|
if (update>0){
|
return CommonResult.success();
|
}
|
return CommonResult.failed();
|
}
|
|
@Override
|
public CommonResult deletedCompanyBasic(Integer companyBasicId) {
|
LoginUserDetails loginUser = SecurityUtils.getLoginUser();
|
CompanyBasic companyBasic = new CompanyBasic();
|
companyBasic.setId(companyBasicId);
|
companyBasic.setDelFlag(2);
|
companyBasic.setUpdateBy(loginUser.getUsername());
|
companyBasic.setUpdateTime(LocalDateTime.now());
|
int deleted = companyBasicMapper.updateById(companyBasic);
|
if (deleted>0){
|
return CommonResult.success();
|
}
|
return CommonResult.failed();
|
}
|
|
@Override
|
@Transactional
|
public CommonResult uploadBasic(MultipartFile file) {
|
Workbook workbook = null;
|
List<CompanyBasic> companyBasicslist = new ArrayList<>();
|
StringBuffer stringBuffer = new StringBuffer();
|
Integer t=0;
|
try {
|
workbook = WorkbookFactory.create(file.getInputStream());
|
Sheet sheetAt = workbook.getSheetAt(0);
|
LoginUserDetails loginUser = SecurityUtils.getLoginUser();
|
for (int i = 1; i <= sheetAt.getLastRowNum(); i++) {
|
Row row = sheetAt.getRow(i);
|
String cellValueAsString = getCellValueAsString(row.getCell(1));
|
if (StringUtils.isEmpty(cellValueAsString)){
|
continue;
|
}
|
CompanyBasic companyBasic = new CompanyBasic();
|
if (row!=null ){
|
|
companyBasic.setBasic(getCellValueAsString(row.getCell(1)));
|
companyBasic.setIntroduce(getCellValueAsString(row.getCell(2)));
|
companyBasic.setTarget(getCellValueAsString(row.getCell(3)));
|
companyBasic.setQuality(getCellValueAsString(row.getCell(4)));
|
companyBasic.setActivity(getCellValueAsString(row.getCell(5)));
|
companyBasic.setAudit(getCellValueAsString(row.getCell(6)));
|
companyBasic.setEpiboly(getCellValueAsString(row.getCell(7)));
|
companyBasic.setResource(getCellValueAsString(row.getCell(8)));
|
companyBasic.setCreateTime(LocalDateTime.now());
|
companyBasic.setCreateBy(SecurityUtils.getUsername());
|
SysCompany sysCompany = sysCompanyService.selectCompanyByName(getCellValueAsString(row.getCell(0)));
|
companyBasic.setCompanyName(sysCompany.getName());
|
companyBasic.setCompanyId(Math.toIntExact(sysCompany.getId()));
|
|
}
|
companyBasicslist.add(companyBasic);
|
}
|
for (CompanyBasic companyBasic : companyBasicslist) {
|
List<CompanyBasic> companyBasics = companyBasicMapper.selectCompanyBasicList(companyBasic.getCompanyId());
|
if (companyBasics.size()>0){
|
stringBuffer.append(companyBasic.getCompanyName()).append(",");
|
}else {
|
if (!SecurityUtils.adminUser()){
|
if (companyBasic.getCompanyId() != null && SecurityUtils.getCompanyId() == companyBasic.getCompanyId().longValue()) {
|
t+=companyBasicMapper.insert(companyBasic);
|
} else {
|
stringBuffer.append(companyBasic.getCompanyName()).append(",");
|
}
|
}else {
|
t+=companyBasicMapper.insert(companyBasic);
|
}
|
}
|
}
|
|
if (t<1){
|
throw new ApiException("导入公司基本信息失败");
|
}
|
workbook.close();
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
if (stringBuffer.length()>0){
|
return CommonResult.failed("只能导入本企业数据或该企业已有数据 ["+stringBuffer.toString()+"]");
|
}
|
return CommonResult.success();
|
}
|
|
/**
|
* 安全获取单元格值
|
*/
|
private String getCellValueAsString(Cell cell) {
|
if (cell == null) return "";
|
|
switch (cell.getCellType()) {
|
case STRING:
|
return cell.getStringCellValue().trim();
|
case NUMERIC:
|
if (DateUtil.isCellDateFormatted(cell)) {
|
return cell.getDateCellValue().toString();
|
} else {
|
return String.valueOf((long) cell.getNumericCellValue());
|
}
|
case BOOLEAN:
|
return String.valueOf(cell.getBooleanCellValue());
|
case FORMULA:
|
try {
|
return cell.getStringCellValue();
|
} catch (IllegalStateException e) {
|
return String.valueOf(cell.getNumericCellValue());
|
}
|
default:
|
return "";
|
}
|
}
|
|
}
|