package com.gkhy.hazmat.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.hazmat.common.api.CommonPage;
import com.gkhy.hazmat.common.constant.UserConstant;
import com.gkhy.hazmat.common.exception.ApiException;
import com.gkhy.hazmat.common.utils.PageUtils;
import com.gkhy.hazmat.common.utils.SecurityUtils;
import com.gkhy.hazmat.system.domain.SysCompany;
import com.gkhy.hazmat.system.mapper.SysCompanyMapper;
import com.gkhy.hazmat.system.service.SysCompanyService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
*
* 企业表 服务实现类
*
*
* @author kzy
* @since 2024-06-05 08:43:11
*/
@Service
public class SysCompanyServiceImpl extends ServiceImpl implements SysCompanyService {
@Resource
private SysCompanyMapper companyMapper;
@Override
public CommonPage selectCompanyList(SysCompany company) {
PageUtils.startPage();
List companyList=baseMapper.selectCompanyList(company);
return CommonPage.restPage(companyList);
}
@Override
public SysCompany selectCompanyById(Long companyId) {
return baseMapper.selectCompanyById(companyId);
}
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int insertCompany(SysCompany company) {
if(!checkNameUnique(company)){
throw new ApiException("公司名称已存在");
}
if(!checkCodeUnique(company)){
throw new ApiException("公司编码已存在");
}
company.setCode(company.getCode().toUpperCase());
company.setCreateBy(SecurityUtils.getUsername());
int row= baseMapper.insert(company);
if(row<1){
throw new ApiException("新增公司失败");
}
return row;
}
@Override
public int updateCompany(SysCompany company) {
if(!checkNameUnique(company)){
throw new ApiException("公司名称已存在");
}
if(!checkCodeUnique(company)){
throw new ApiException("公司编码已存在");
}
company.setCode(company.getCode().toUpperCase());
company.setUpdateBy(SecurityUtils.getUsername());
return baseMapper.updateById(company);
}
@Override
public int deleteCompanyById(Long companyId) {
return baseMapper.delCompanyById(companyId);
}
@Override
public boolean checkNameUnique(SysCompany company){
Long companyId=company.getId()==null?-1L:company.getId();
SysCompany com= baseMapper.checkNameUnique(company.getName());
if(com!=null&&com.getId().longValue()!=companyId.longValue()){
return UserConstant.NOT_UNIQUE;
}
return UserConstant.UNIQUE;
}
@Override
public void createProductTables(Long companyId) {
// 这里可以使用 MyBatis-Plus 的动态 SQL 或者直接执行 SQL 语句来创建表
// 为了简化示例,我们直接执行 SQL 语句
String createProductCategoryTableSql = "CREATE TABLE IF NOT EXISTS product_category_demo"+"_"+companyId+" (" +
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
"name VARCHAR(255) NOT NULL, " +
"company_id BIGINT NOT NULL)";
String createProductTableSql = "CREATE TABLE IF NOT EXISTS product_demo"+"_"+companyId+" (" +
"id BIGINT AUTO_INCREMENT PRIMARY KEY, " +
"name VARCHAR(255) NOT NULL, " +
"description TEXT, " +
"price DECIMAL(10, 2) NOT NULL, " +
"category_id BIGINT NOT NULL)";
// 执行 SQL 语句
companyMapper.execute(createProductCategoryTableSql);
companyMapper.execute(createProductTableSql);
}
public boolean checkCodeUnique(SysCompany company){
Long companyId=company.getId()==null?-1L:company.getId();
SysCompany com= baseMapper.checkCodeUnique(company.getCode());
if(com!=null&&com.getId().longValue()!=companyId.longValue()){
return UserConstant.NOT_UNIQUE;
}
return UserConstant.UNIQUE;
}
}