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; } }