weaver-hrm-salary/src/com/engine/salary/biz/SICategoryBiz.java

185 lines
6.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.engine.salary.biz;
import com.engine.salary.entity.sicategory.bo.ICategoryBO;
import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO;
import com.engine.salary.enums.sicategory.IsPaymentEnum;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.sicategory.ICategoryMapper;
import com.engine.salary.util.SalaryEnumUtil;
import com.mzlion.core.utils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.SqlSession;
import weaver.conn.mybatis.MyBatisFactory;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Author weaver_cl
* @Description:
* @Date 2022/3/9
* @Version V1.0
**/
public class SICategoryBiz {
/**
* 自定义福利表单
* id == null ? 新建表单 查看已有数据内容表单
* @param id 自定义福利主键
* @return 表单
*/
public ICategoryFormDTO getForm(Long id) {
if (id != null) {
ICategoryPO iCategoryPO = getByID(id);
ICategoryFormDTO iCategoryFormDTO = new ICategoryFormDTO();
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException("数据不存在");
}
BeanUtils.copyProperties(iCategoryPO,iCategoryFormDTO);
iCategoryFormDTO.setWelfareType(SalaryEnumUtil.enumMatchByValue(iCategoryPO.getWelfareType(), WelfareTypeEnum.values(), WelfareTypeEnum.class));
iCategoryFormDTO.setPaymentScope(SalaryEnumUtil.stringToEnums(iCategoryPO.getPaymentScope(), ","));
return iCategoryFormDTO;
}
return ICategoryFormDTO.builder().welfareType(WelfareTypeEnum.SOCIAL_SECURITY).build();
}
/**
* 根据id获取
* @param id
* @return
*/
public ICategoryPO getByID(Long id) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
ICategoryPO iCategoryPO = iCategoryMapper.getById(id);
return iCategoryPO;
} finally {
sqlSession.close();
}
}
/**
* 保存
* @param iCategoryFormDTO
* @param employeeId DataTypeEnum.SYSTEM.getValue()
*/
public void save(ICategoryFormDTO iCategoryFormDTO, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
iCategoryFormDTO.setInsuranceName(StringUtils.trim(iCategoryFormDTO.getInsuranceName()));
List<ICategoryPO> iCategoryPOS = listByName(iCategoryFormDTO.getInsuranceName());
if (CollectionUtils.isNotEmpty(iCategoryPOS)) {
throw new SalaryRunTimeException("福利名称不允许重复");
}
ICategoryPO iCategoryPO = ICategoryBO.convertToInsuranceCategoryPO(iCategoryFormDTO, employeeId);
iCategoryMapper.insert(iCategoryPO);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 根据名称获取
* @param insuranceName
* @return
*/
public List<ICategoryPO> listByName(String insuranceName) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try{
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
List<ICategoryPO> iCategoryPOS = iCategoryMapper.listByName(insuranceName);
return iCategoryPOS;
} finally {
sqlSession.close();
}
}
/**
* 更新
* @param iCategoryFormDTO
* @param employeeId
*/
public void update(ICategoryFormDTO iCategoryFormDTO, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try{
if (iCategoryFormDTO.getId() == null) {
throw new SalaryRunTimeException("id is required");
}
ICategoryPO iCategoryPO = getByID(iCategoryFormDTO.getId());
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException("数据不存在");
}
List<ICategoryPO> iCategoryPOS = listByName(iCategoryFormDTO.getInsuranceName());
if (CollectionUtils.isNotEmpty(iCategoryPOS)) {
throw new SalaryRunTimeException("福利名称不允许重复");
}
iCategoryPO.setInsuranceName(iCategoryFormDTO.getInsuranceName());
// iCategoryPO.setWelfareType(iCategoryFormDTO.getWelfareType().getValue());
// iCategoryPO.setPaymentScope(SalaryEnumUtil.enumArrToString(iCategoryFormDTO.getPaymentScope()));
iCategoryPO.setUpdateTime(new Date());
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
iCategoryMapper.update(iCategoryPO);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 更新状态
* @param id
* @param isUse
* @param employeeId
*/
public void updateStatusById(Long id, Integer isUse, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
if(id == null) {
throw new SalaryRunTimeException("id is required");
}
if (isUse == null) {
throw new SalaryRunTimeException("isUse is required");
}
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = new SISchemeBiz().queryListByInsuranceIdIsPayment(id, IsPaymentEnum.YES.getValue());
if(CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS) && isUse == 0) {
throw new SalaryRunTimeException("该福利开启缴费,不可删除(或停用)");
}
ICategoryPO iCategoryPO = getByID(id);
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException("数据记录不存在");
}
iCategoryPO.setIsUse(isUse);
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
iCategoryMapper.updateById(iCategoryPO);
sqlSession.commit();
}finally {
sqlSession.close();
}
}
}