薪酬系统-福利档案,SICategoryBiz、SISchemeBiz方法迁移到对应是实现类,并修改调用方相关代码

This commit is contained in:
sy 2024-02-04 10:11:10 +08:00
parent 9074fb46fc
commit 306af48291
6 changed files with 801 additions and 35 deletions

View File

@ -3,10 +3,12 @@ package com.engine.salary.service;
import com.engine.salary.entity.sicategory.dto.ICategoryDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryListDTO;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.util.page.PageInfo;
import java.util.List;
import java.util.Map;
/**
@ -65,4 +67,8 @@ public interface SICategoryService {
Map<String, Object> updateCategoryNameAndPayScope(ICategoryFormDTO iCategoryFormDTO);
Map<String, Object> deleteCustomCategory(ICategoryFormDTO iCategoryFormDTO);
ICategoryPO getICategoryPOByID(Long id);
List<ICategoryPO> listByName(String insuranceName);
}

View File

@ -8,6 +8,7 @@ import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam;
import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO;
import com.engine.salary.entity.sischeme.po.InsuranceSchemePO;
import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -80,4 +81,6 @@ public interface SISchemeService {
* @param schemeDetailList
*/
List<String> updateSchemeDetail(List<InsuranceSchemeDetailUpdateParam> schemeDetailList);
List<InsuranceSchemePO> listAll();
}

View File

@ -147,7 +147,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
return MapperProxyFactory.getProxy(TaxAgentMapper.class);
}
SICategoryBiz siCategoryBiz = new SICategoryBiz();
// SICategoryBiz siCategoryBiz = new SICategoryBiz();
private SalarySysConfMapper getSalarySysConfMapper() {
return SqlProxyHandle.getProxy(SalarySysConfMapper.class);
@ -2027,7 +2027,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
String payScope = keyName.substring(keyName.length() - 2);
//获取福利类型
Integer welfareType;
List<ICategoryPO> categoryPOList = siCategoryBiz.listByName(entry.getKey().substring(0, keyName.length() - 2));
// List<ICategoryPO> categoryPOList = siCategoryBiz.listByName(entry.getKey().substring(0, keyName.length() - 2));
List<ICategoryPO> categoryPOList = getSICategoryService(user).listByName(entry.getKey().substring(0, keyName.length() - 2));
if (categoryPOList.size() == 1) {
ICategoryPO iCategoryPO = categoryPOList.get(0);
welfareType = iCategoryPO.getWelfareType();
@ -3254,7 +3255,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
for (Map.Entry<String, String> entry : toDealMap.entrySet()) {
//获取福利项信息
ICategoryPO iCategoryPO = siCategoryBiz.getByID(Long.valueOf(entry.getKey()));
// ICategoryPO iCategoryPO = siCategoryBiz.getByID(Long.valueOf(entry.getKey()));
ICategoryPO iCategoryPO = getSICategoryService(user).getICategoryPOByID(Long.valueOf(entry.getKey()));
if (iCategoryPO != null) {
String name = groupPrefix + iCategoryPO.getId().toString();
String label = iCategoryPO.getInsuranceName();

View File

@ -16,8 +16,6 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SICategoryBiz;
import com.engine.salary.biz.SISchemeBiz;
import com.engine.salary.cmd.siarchives.SIArchivesTipsCmd;
import com.engine.salary.common.SalaryContext;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
@ -47,10 +45,7 @@ import com.engine.salary.mapper.sicategory.ICategoryMapper;
import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper;
import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper;
import com.engine.salary.mapper.taxagent.TaxAgentMapper;
import com.engine.salary.service.SIArchivesService;
import com.engine.salary.service.SalaryEmployeeService;
import com.engine.salary.service.TaxAgentEmpChangeService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.*;
import com.engine.salary.sys.constant.SalarySysConstant;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.sys.entity.vo.OrderRuleVO;
@ -149,6 +144,14 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
return ServiceUtil.getService(TaxAgentWrapper.class, user);
}
public SICategoryService getSICategoryService(User user) {
return ServiceUtil.getService(SICategoryServiceImpl.class, user);
}
private SISchemeService getSISchemeService(User user) {
return ServiceUtil.getService(SISchemeServiceImpl.class,user);
}
@Override
public Map<String, Object> getTips(Map<String, Object> params) {
return commandExecutor.execute(new SIArchivesTipsCmd(params, user));
@ -2249,8 +2252,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
return data;
}
SISchemeBiz siSchemeBiz = new SISchemeBiz();
List<InsuranceSchemePO> list = siSchemeBiz.listAll();
// List<InsuranceSchemePO> list = siSchemeBiz.listAll();
List<InsuranceSchemePO> list = getSISchemeService(user).listAll();
// 过滤可见性范围
list = filterList(list, taxAgentPOS);
List<SearchConditionItem> selectItems = new ArrayList<>();
@ -2671,9 +2674,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
}
}
SICategoryBiz siCategoryBiz = new SICategoryBiz();
list.forEach(insuranceSchemeDetail -> {
ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId());
// ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId());
ICategoryPO iCategoryPO = getSICategoryService(user).getICategoryPOByID(insuranceSchemeDetail.getInsuranceId());
if (iCategoryPO != null) {
// inputItems.add(SalaryFormItemUtil.inputNumberItem(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId())));
inputItems.add(SalaryFormItemUtil.inputNumberItemWithMaxAndMin(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId())
@ -2690,9 +2693,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
}
List<InsuranceSchemeDetailPO> list = queryListByPrimaryIdIsPayment(schemeId, welfareType).stream()
.filter(f -> f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_COMPANY.getValue())).collect(Collectors.toList());
SICategoryBiz siCategoryBiz = new SICategoryBiz();
list.forEach(insuranceSchemeDetail -> {
ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId());
// ICategoryPO iCategoryPO = siCategoryBiz.getByID(insuranceSchemeDetail.getInsuranceId());
ICategoryPO iCategoryPO = getSICategoryService(user).getICategoryPOByID(insuranceSchemeDetail.getInsuranceId());
if (iCategoryPO != null) {
// inputItems.add(SalaryFormItemUtil.inputNumberItem(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId())));
inputItems.add(SalaryFormItemUtil.inputNumberItemWithMaxAndMin(user, "precision:2", 2, 12, 2, iCategoryPO.getInsuranceName(), String.valueOf(insuranceSchemeDetail.getInsuranceId())
@ -3484,7 +3487,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
public Map<String, Object> getSearchCondition() {
List<SearchConditionOption> userStatusOptions = Arrays.stream(UserStatusEnum.values()).map(e -> new SearchConditionOption(String.valueOf(e.getValue()), e.getDefaultLabel())).collect(Collectors.toList());
List<InsuranceSchemePO> list = new SISchemeBiz().listAll();
// List<InsuranceSchemePO> list = new SISchemeBiz().listAll();
List<InsuranceSchemePO> list = getSISchemeService(user).listAll();
List<SearchConditionOption> schemeOption = list.stream().filter(item -> Objects.equals(item.getWelfareType(), WelfareTypeEnum.SOCIAL_SECURITY.getValue()))
.collect(Collectors.toList())

View File

@ -1,19 +1,22 @@
package com.engine.salary.service.impl;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.api.browser.util.ConditionFactory;
import com.api.browser.util.ConditionType;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cmd.sicategory.SICategoryGetFormCmd;
import com.engine.salary.cmd.sicategory.SICategoryInsertCmd;
import com.engine.salary.cmd.sicategory.SICategoryUpdateCmd;
import com.engine.salary.cmd.sicategory.SICategoryUpdateStatusByIdCmd;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO;
import com.engine.salary.entity.sicategory.bo.ICategoryBO;
import com.engine.salary.entity.sicategory.dto.ICategoryDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryFormDTO;
import com.engine.salary.entity.sicategory.dto.ICategoryListDTO;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam;
import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO;
import com.engine.salary.enums.sicategory.DataTypeEnum;
import com.engine.salary.enums.sicategory.IsPaymentEnum;
import com.engine.salary.enums.sicategory.PaymentScopeEnum;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
@ -21,15 +24,19 @@ import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper;
import com.engine.salary.mapper.sicategory.ICategoryMapper;
import com.engine.salary.service.RecordsBuildService;
import com.engine.salary.service.SICategoryService;
import com.engine.salary.service.SISchemeService;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryEnumUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.mzlion.core.utils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.SqlSession;
import weaver.conn.mybatis.MyBatisFactory;
import weaver.hrm.User;
import java.util.*;
@ -57,24 +64,93 @@ public class SICategoryServiceImpl extends Service implements SICategoryService
private EncryptUtil encryptUtil = new EncryptUtil();
private SISchemeService getSISchemeService(User user) {
return ServiceUtil.getService(SISchemeServiceImpl.class,user);
}
@Override
public Map<String, Object> getForm(Map<String, Object> params) {
return commandExecutor.execute(new SICategoryGetFormCmd(params,user));
// return commandExecutor.execute(new SICategoryGetFormCmd(params,user));
Map<String, Object> apidatas = new HashMap<>(16);
Long id = (Long) params.get("id");
// ICategoryFormDTO form = siCategoryBiz.getForm(id);
ICategoryFormDTO form = getForm(id);
apidatas.put("form",form);
ConditionFactory conditionFactory = new ConditionFactory(user);
Map<String, SearchConditionItem> items = new HashMap<>();
SearchConditionItem input = conditionFactory.createCondition(ConditionType.INPUT,0, "insuranceName");
input.setColSpan(2);//定义一行显示条件数默认值为2,当值为1时标识该条件单独占一行
input.setFieldcol(12); //条件输入框所占宽度默认值18
input.setViewAttr(3); // 编辑权限 1只读2可编辑 3必填 默认2
input.setLength(10); // 设置输入长度
input.setLabel(SalaryI18nUtil.getI18nLabel(0,"福利名称")); //设置文本值 这个将覆盖多语言标签的值
input.setRules("required"); //设置字段填入规则
items.put("insuranceName",input);
SearchConditionItem radio = conditionFactory.createCondition(ConditionType.RADIO,0,"welfareType");
List<SearchConditionOption> radioOptions = new ArrayList <>();
radioOptions.add(new SearchConditionOption("SOCIAL_SECURITY",SalaryI18nUtil.getI18nLabel(0,"社保"),true));
radioOptions.add(new SearchConditionOption("ACCUMULATION_FUND",SalaryI18nUtil.getI18nLabel(0,"公积金")));
radioOptions.add(new SearchConditionOption("OTHER",SalaryI18nUtil.getI18nLabel(0,"企业年金及其他福利")));
radio.setColSpan(2);
radio.setFieldcol(12);
radio.setLabelcol(6);
radio.setViewAttr(3);
radio.setIsQuickSearch(false);
radio.setOptions(radioOptions);
radio.setLabel(SalaryI18nUtil.getI18nLabel(0,"类型"));
radio.setRules("required");
items.put("welfareType",radio);
SearchConditionItem checkbox = conditionFactory.createCondition(ConditionType.CHECKBOX,0,"paymentScope");
List<SearchConditionOption> checkOptions = new ArrayList <>();
checkOptions.add(new SearchConditionOption("SCOPE_COMPANY",SalaryI18nUtil.getI18nLabel(0,"公司")));
checkOptions.add(new SearchConditionOption("SCOPE_PERSON",SalaryI18nUtil.getI18nLabel(0,"个人")));
checkbox.setColSpan(2);
checkbox.setFieldcol(12);
checkbox.setLabelcol(6);
checkbox.setViewAttr(3);
checkbox.setIsQuickSearch(false);
checkbox.setOptions(checkOptions);
checkbox.setLabel(SalaryI18nUtil.getI18nLabel(0,"缴纳对象"));
checkbox.setRules("required");
items.put("paymentScope",checkbox);
apidatas.put("item",items);
return apidatas;
}
@Override
public Map<String, Object> insert(Map<String, Object> params) {
return commandExecutor.execute(new SICategoryInsertCmd(params,user));
// return commandExecutor.execute(new SICategoryInsertCmd(params,user));
Map<String,Object> apidatas = new HashMap<>(16);
ICategoryFormDTO iCategoryFormDTO = (ICategoryFormDTO)params.get("iCategoryFormDTO");
// siCategoryBiz.save(iCategoryFormDTO,(long) user.getUID());
save(iCategoryFormDTO,(long) user.getUID());
return apidatas;
}
@Override
public Map<String, Object> update(Map<String, Object> params) {
return commandExecutor.execute(new SICategoryUpdateCmd(params,user));
// return commandExecutor.execute(new SICategoryUpdateCmd(params,user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
ICategoryFormDTO iCategoryFormDTO = (ICategoryFormDTO) params.get("iCategoryFormDTO");
// siCategoryBiz.update(iCategoryFormDTO, (long) user.getUID());
update(iCategoryFormDTO);
return apidatas;
}
@Override
public Map<String, Object> updateStatusById(Map<String, Object> params) {
return commandExecutor.execute(new SICategoryUpdateStatusByIdCmd(params,user));
// return commandExecutor.execute(new SICategoryUpdateStatusByIdCmd(params,user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
Long id = (Long) params.get("id");
Integer isUse = (Integer) params.get("isUse");
// siCategoryBiz.updateStatusById(id, isUse,(long) user.getUID());
updateStatusById(id, isUse);
return apidatas;
}
@Override
@ -238,4 +314,153 @@ public class SICategoryServiceImpl extends Service implements SICategoryService
List<String> collect = paymentScopes.stream().map(scope -> PaymentScopeEnum.getDefaultLabelByValue(SalaryEntityUtil.string2Integer(scope))).collect(Collectors.toList());
return StringUtils.join(collect, ",");
}
/*****以下代码为SICategoryBiz中逻辑迁移旨在减少Biz类的使用*****/
/**
* 自定义福利表单
* id == null ? 新建表单 查看已有数据内容表单
* @param id 自定义福利主键
* @return 表单
*/
public ICategoryFormDTO getForm(Long id) {
if (id != null) {
ICategoryPO iCategoryPO = getICategoryPOByID(id);
ICategoryFormDTO iCategoryFormDTO = new ICategoryFormDTO();
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"数据不存在"));
}
BeanUtils.copyProperties(iCategoryPO,iCategoryFormDTO);
return iCategoryFormDTO;
}
return ICategoryFormDTO.builder().welfareType(WelfareTypeEnum.SOCIAL_SECURITY).build();
}
/**
* 根据id获取
* @param id
* @return
*/
@Override
public ICategoryPO getICategoryPOByID(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 insuranceName
* @return
*/
@Override
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 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(SalaryI18nUtil.getI18nLabel(0,"福利名称不允许重复"));
}
ICategoryPO iCategoryPO = ICategoryBO.convertToInsuranceCategoryPO(iCategoryFormDTO, employeeId);
iCategoryMapper.insert(iCategoryPO);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 更新
* @param iCategoryFormDTO
*/
public void update(ICategoryFormDTO iCategoryFormDTO) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try{
if (iCategoryFormDTO.getId() == null) {
throw new SalaryRunTimeException("id is required");
}
ICategoryPO iCategoryPO = getICategoryPOByID(iCategoryFormDTO.getId());
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"数据不存在"));
}
List<ICategoryPO> iCategoryPOS = listByName(iCategoryFormDTO.getInsuranceName());
if (CollectionUtils.isNotEmpty(iCategoryPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"福利名称不允许重复"));
}
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
*/
public void updateStatusById(Long id, Integer isUse) {
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());
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = getSISchemeService(user).queryListByInsuranceIdIsPayment(id, IsPaymentEnum.YES.getValue());
if(CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS) && isUse == 0) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"该福利开启缴费,不可删除(或停用)"));
}
ICategoryPO iCategoryPO = getICategoryPOByID(id);
if (Objects.isNull(iCategoryPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"数据记录不存在"));
}
iCategoryPO.setIsUse(isUse);
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
iCategoryMapper.updateById(iCategoryPO);
sqlSession.commit();
}finally {
sqlSession.close();
}
}
/*****以上代码为SICategoryBiz中方法逻辑迁移旨在减少Biz类的使用*****/
}

View File

@ -4,10 +4,10 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SISchemeBiz;
import com.engine.salary.cmd.sischeme.*;
import com.engine.salary.component.SalaryWeaTable;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
@ -15,11 +15,17 @@ import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam;
import com.engine.salary.entity.siarchives.param.SIArchiveImportParam;
import com.engine.salary.entity.siarchives.po.*;
import com.engine.salary.entity.sicategory.po.ICategoryPO;
import com.engine.salary.entity.sischeme.bo.InsuranceSchemeBO;
import com.engine.salary.entity.sischeme.dto.InsuranceSchemeDTO;
import com.engine.salary.entity.sischeme.dto.InsuranceSchemeDetailDTO;
import com.engine.salary.entity.sischeme.dto.InsuranceSchemeListDTO;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeDetailUpdateParam;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeParam;
import com.engine.salary.entity.sischeme.param.InsuranceSchemeReqParam;
import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO;
import com.engine.salary.entity.sischeme.po.InsuranceSchemePO;
import com.engine.salary.entity.sischeme.vo.InsuranceSchemeFormVO;
import com.engine.salary.entity.sischeme.vo.SISchemeTableVO;
import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentManageRangeSaveParam;
@ -30,6 +36,7 @@ import com.engine.salary.enums.salarysob.TargetTypeEnum;
import com.engine.salary.enums.siaccount.EmployeeStatusEnum;
import com.engine.salary.enums.sicategory.*;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.siaccount.SIAccountUtilMapper;
import com.engine.salary.mapper.siarchives.FundSchemeMapper;
import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper;
import com.engine.salary.mapper.siarchives.OtherSchemeMapper;
@ -60,16 +67,21 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import weaver.conn.mybatis.MyBatisFactory;
import weaver.file.ImageFileManager;
import weaver.general.Util;
import weaver.hrm.User;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.engine.salary.sys.constant.SalarySysConstant.WEL_BASE_AUTO_ADJUST;
@ -127,7 +139,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
}
// private SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
private SISchemeBiz siSchemeBiz = new SISchemeBiz();
// private SISchemeBiz siSchemeBiz = new SISchemeBiz();
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
@ -153,39 +165,134 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
return ServiceUtil.getService(SIArchivesServiceImpl.class,user);
}
private SIAccountUtilMapper getSIAccountUtilMapper() {
return SqlProxyHandle.getProxy(SIAccountUtilMapper.class);
}
@Override
public Map<String, Object> getForm(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeGetFormCmd(params, user));
// return commandExecutor.execute(new SISchemeGetFormCmd(params, user));
Map<String, Object> apidatas = new HashMap<>(16);
Long id = null;
if (Objects.nonNull(params.get("id"))) {
id =Long.valueOf(Util.null2String(params.get("id")));
}
WelfareTypeEnum welfareTypeEnum = (WelfareTypeEnum)params.get("welfareTypeEnum");
// InsuranceSchemeFormVO form = siSchemeBiz.getForm(id, welfareTypeEnum);
InsuranceSchemeFormVO form = getForm(id, welfareTypeEnum);
apidatas.put("form",form);
return apidatas;
}
@Override
public Map<String, Object> insertScheme(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeInsertCmd(params, user));
// return commandExecutor.execute(new SISchemeInsertCmd(params, user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
InsuranceSchemeReqParam insuranceSchemeReqParam = (InsuranceSchemeReqParam) params.get("insuranceSchemeReqParam");
// siSchemeBiz.save(insuranceSchemeReqParam, (long) user.getUID());
save(insuranceSchemeReqParam, (long) user.getUID());
return apidatas;
}
@Override
public Map<String, Object> update(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeUpdateCmd(params, user));
// return commandExecutor.execute(new SISchemeUpdateCmd(params, user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
InsuranceSchemeReqParam insuranceSchemeReqParam = (InsuranceSchemeReqParam) params.get("insuranceSchemeReqParam");
// siSchemeBiz.update(insuranceSchemeReqParam, (long) user.getUID());
update(insuranceSchemeReqParam, (long) user.getUID());
return apidatas;
}
@Override
public Map<String, Object> delete(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeDeleteCmd(params, user));
// return commandExecutor.execute(new SISchemeDeleteCmd(params, user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
Collection<Long> ids = (Collection<Long>)params.get("ids");
if (CollectionUtils.isEmpty(ids)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"参数错误"));
}
//校验带上类型
int welfareTypeId = (Integer) params.get("welfareTypeId");
if(WelfareTypeEnum.SOCIAL_SECURITY.getValue() == welfareTypeId){
// int num = siSchemeBiz.checkBeforeDeleteSocialscheme(params);
int num = checkBeforeDeleteSocialscheme(params);
if (num > 0){
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"该社保方案已被使用"));
}
}
if(WelfareTypeEnum.ACCUMULATION_FUND.getValue() == welfareTypeId){
// int accumulationfundNum = siSchemeBiz.checkBeforeDeleteAccumulationfund(params);
int accumulationfundNum = checkBeforeDeleteAccumulationfund(params);
if (accumulationfundNum > 0){
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"该公积金方案已被使用"));
}
}
if(WelfareTypeEnum.OTHER.getValue() == welfareTypeId){
// int otherschemeNum = siSchemeBiz.checkBeforeDeleteOtherscheme(params);
int otherschemeNum = checkBeforeDeleteOtherscheme(params);
if (otherschemeNum > 0){
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"该其他福利方案已被使用"));
}
}
// int billNum = siSchemeBiz.checkBeforeDeleteBill(params,welfareTypeId);
int billNum = checkBeforeDeleteBill(params,welfareTypeId);
if (billNum > 0){
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"该福利方案已被核算"));
}
// siSchemeBiz.deleteSocialscheme(params);
deleteSocialscheme(params);
return apidatas;
}
@Override
public Map<String, Object> copyScheme(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeCopyCmd(params, user));
// return commandExecutor.execute(new SISchemeCopyCmd(params, user));
Map<String, Object> apidatas = new HashMap<String, Object>(16);
Long id = (Long) params.get("id");
String schemeName = Util.null2String(params.get("schemeName"));
// siSchemeBiz.copy(id,schemeName,(long) user.getUID());
copy(id,schemeName,(long) user.getUID());
return apidatas;
}
@Override
public List<InsuranceSchemeDetailPO> queryListByInsuranceIdIsPayment(Long insuranceId, Integer isPayment) {
return new SISchemeBiz().queryListByInsuranceIdIsPayment(insuranceId, isPayment);
// return new SISchemeBiz().queryListByInsuranceIdIsPayment(insuranceId, isPayment);
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOList = insuranceSchemeDetailMapper.queryListByInsuranceIdIsPayment(insuranceId, isPayment);
encryptUtil.decryptList(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO.class);
return insuranceSchemeDetailPOList;
} finally {
sqlSession.close();
}
}
@Override
public Map<String, Object> listPage(Map<String, Object> params) {
return commandExecutor.execute(new SISchemeListCmd(params, user));
// return commandExecutor.execute(new SISchemeListCmd(params, user));
SalaryWeaTable<SISchemeTableVO> table = new SalaryWeaTable<>(user,SISchemeTableVO.class);
String sqlWhere = buildSqlWhere(params);
table.setSqlwhere(sqlWhere);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
return result.getResultMap();
}
private String buildSqlWhere(Map<String, Object> params) {
String sqlWhere = "where a.id = b.primary_id and b.insurance_id = c.id and a.delete_Type = 0";
Integer welfareType = (Integer)params.get("welfareType");
if (Objects.nonNull(welfareType)){
sqlWhere += " and a.welfare_type ="+welfareType;
}
return sqlWhere;
}
@Override
@ -1991,7 +2098,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
schemeDetailList.forEach(f -> {
schemeDetailUpdateMap.put(f.getInsuranceId() + "-" + f.getPaymentScope(), f);
});
List<InsuranceSchemeDetailPO> schemeDetailPOS = siSchemeBiz.listByPrimaryId(primaryId);
// List<InsuranceSchemeDetailPO> schemeDetailPOS = siSchemeBiz.listByPrimaryId(primaryId);
List<InsuranceSchemeDetailPO> schemeDetailPOS = listByPrimaryId(primaryId);
//替换修改字段
if (schemeDetailPOS.size() > 0) {
schemeDetailPOS.forEach(f -> {
@ -2012,5 +2120,423 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
}
return errorInfo;
}
/*****以下代码为SISchemeBiz中逻辑迁移旨在减少Biz类的使用*****/
/**
* 获取社保方案
*
* @param id
* @param welfareTypeEnum
* @return
*/
public InsuranceSchemeFormVO getForm(Long id, WelfareTypeEnum welfareTypeEnum) {
InsuranceSchemeDTO insuranceSchemeDTO = getSchemeFormDTO(welfareTypeEnum, id);
List<InsuranceSchemeDetailDTO> insuranceSchemeDetailDTOList = getSchemeDetailFormDTO(welfareTypeEnum, id);
return InsuranceSchemeFormVO.builder().schemeBatch(insuranceSchemeDTO).schemeDetailList(insuranceSchemeDetailDTOList).build();
}
/**
* 获取方案主表信息 新建|详情
*
* @param welfareTypeEnum 福利类型
* @param id 方案主键id
* @return form
*/
private InsuranceSchemeDTO getSchemeFormDTO(WelfareTypeEnum welfareTypeEnum, Long id) {
InsuranceSchemeDTO insuranceSchemeDTO = InsuranceSchemeDTO.builder().paymentType(PaymentTypeEnum.SCHEME_TOWN).welfareType(welfareTypeEnum).build();
if (id != null) {
InsuranceSchemePO insuranceSchemePO = getById(id);
SalaryAssert.notNull(insuranceSchemePO, SalaryI18nUtil.getI18nLabel(0,"福利方案不存在"));
//BeanUtils.copyProperties(insuranceSchemePO, insuranceSchemeDTO);
insuranceSchemeDTO.setId(insuranceSchemePO.getId());
insuranceSchemeDTO.setPaymentArea(insuranceSchemePO.getPaymentArea());
insuranceSchemeDTO.setRemarks(insuranceSchemePO.getRemarks());
insuranceSchemeDTO.setSchemeName(insuranceSchemePO.getSchemeName());
insuranceSchemeDTO.setPaymentType(SalaryEnumUtil.enumMatchByValue(insuranceSchemePO.getPaymentType(), PaymentTypeEnum.values(), PaymentTypeEnum.class));
insuranceSchemeDTO.setWelfareType(welfareTypeEnum);
insuranceSchemeDTO.setSharedType(StringUtils.isBlank(insuranceSchemePO.getSharedType()) ? "0" : insuranceSchemePO.getSharedType());
insuranceSchemeDTO.setTaxAgentIds(insuranceSchemePO.getTaxAgentIds());
}
return insuranceSchemeDTO;
}
/**
* 获取方案明细表集合 新建|详情
*
* @param welfareTypeEnum 福利类型
* @param id 方案主键id
* @return form
*/
public List<InsuranceSchemeDetailDTO> getSchemeDetailFormDTO(WelfareTypeEnum welfareTypeEnum, Long id) {
List<ICategoryPO> insuranceCategoryPOS = listByWelfareType(welfareTypeEnum.getValue());
List<InsuranceSchemeDetailDTO> insuranceSchemeDetailDTOList = new ArrayList<>();
insuranceCategoryPOS.forEach(item -> {
PaymentScopeEnum[] paymentScopeEnums = SalaryEnumUtil.stringToEnums(item.getPaymentScope(), ",");
Arrays.stream(paymentScopeEnums).forEach(e -> {
InsuranceSchemeDetailDTO insuranceSchemeDetailDTO = InsuranceSchemeDetailDTO.builder().build();
InsuranceSchemeDetailPO insuranceSchemeDetailPO = getByPPI(id, e.getValue(), item.getId());
if (insuranceSchemeDetailPO == null) {
insuranceSchemeDetailDTO = InsuranceSchemeDetailDTO.builder()
.id((long) (Math.random() * 10000))
.insuranceId(item.getId())
.insuranceName(item.getInsuranceName())
.paymentScope(e.getDefaultLabel())
.rententionRule(String.valueOf(RententionRuleEnum.ROUND.getValue()))
.cycleSetting("000000000000")
.paymentCycle("0")
.accountType("0")
.build();
if (Objects.equals(item.getDataType(), DataTypeEnum.SYSTEM.getValue())) {
insuranceSchemeDetailDTO.setIsPayment(true);
} else {
insuranceSchemeDetailDTO.setIsPayment(false);
}
} else {
//BeanUtils.copyProperties(insuranceSchemeDetailPO, insuranceSchemeDetailDTO);
insuranceSchemeDetailDTO.setEffectiveTime(insuranceSchemeDetailPO.getEffectiveTime());
insuranceSchemeDetailDTO.setExpirationTime(insuranceSchemeDetailPO.getExpirationTime());
insuranceSchemeDetailDTO.setId(insuranceSchemeDetailPO.getId());
insuranceSchemeDetailDTO.setInsuranceId(insuranceSchemeDetailPO.getInsuranceId());
insuranceSchemeDetailDTO.setPaymentScopeValue(insuranceSchemeDetailPO.getPaymentScope());
insuranceSchemeDetailDTO.setPrimaryId(insuranceSchemeDetailPO.getPrimaryId());
insuranceSchemeDetailDTO.setValidNum(insuranceSchemeDetailPO.getValidNum());
if (insuranceSchemeDetailPO.getIsPayment() != null) {
insuranceSchemeDetailDTO.setIsPayment(Objects.equals(insuranceSchemeDetailPO.getIsPayment(), IsPaymentEnum.YES.getValue()));
}
if (insuranceSchemeDetailPO.getPaymentCycle() != null) {
insuranceSchemeDetailDTO.setPaymentCycle(insuranceSchemeDetailPO.getPaymentCycle() + "");
} else {
insuranceSchemeDetailDTO.setPaymentCycle("0");
}
if (insuranceSchemeDetailPO.getAccountType() != null) {
insuranceSchemeDetailDTO.setAccountType(insuranceSchemeDetailPO.getAccountType() + "");
} else {
insuranceSchemeDetailDTO.setAccountType("0");
}
if (insuranceSchemeDetailPO.getCycleSetting() == null) {
insuranceSchemeDetailDTO.setCycleSetting("000000000000");
} else {
insuranceSchemeDetailDTO.setCycleSetting(insuranceSchemeDetailPO.getCycleSetting());
}
if (StringUtils.isNotBlank(insuranceSchemeDetailPO.getUpperLimit())) {
BigDecimal bigDecimal = new BigDecimal(insuranceSchemeDetailPO.getUpperLimit());
insuranceSchemeDetailDTO.setUpperLimit(numberCheck(bigDecimal.toPlainString()) ? null : bigDecimal);
}
if (StringUtils.isNotBlank(insuranceSchemeDetailPO.getLowerLimit())) {
BigDecimal bigDecimal = new BigDecimal(insuranceSchemeDetailPO.getLowerLimit());
insuranceSchemeDetailDTO.setLowerLimit(numberCheck(bigDecimal.toPlainString()) ? null : bigDecimal);
}
if (StringUtils.isNotBlank(insuranceSchemeDetailPO.getPaymentProportion())) {
BigDecimal bigDecimal = new BigDecimal(insuranceSchemeDetailPO.getPaymentProportion());
insuranceSchemeDetailDTO.setPaymentProportion(numberCheck(bigDecimal.toPlainString()) ? null : bigDecimal);
}
if (StringUtils.isNotBlank(insuranceSchemeDetailPO.getFixedCost())) {
BigDecimal bigDecimal = new BigDecimal(insuranceSchemeDetailPO.getFixedCost());
insuranceSchemeDetailDTO.setFixedCost(numberCheck(bigDecimal.toPlainString()) ? null : bigDecimal);
}
insuranceSchemeDetailDTO.setInsuranceName(item.getInsuranceName());
insuranceSchemeDetailDTO.setRententionRule(String.valueOf(insuranceSchemeDetailPO.getRententionRule()));
insuranceSchemeDetailDTO.setPaymentScope(e.getDefaultLabel());
}
insuranceSchemeDetailDTO.setPaymentScopeValue(e.getValue());
insuranceSchemeDetailDTOList.add(insuranceSchemeDetailDTO);
});
});
return insuranceSchemeDetailDTOList;
}
/**
* 社保方案基础信息主表
*
* @param id
* @return
*/
public InsuranceSchemePO getById(Long id) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
InsuranceSchemePO insuranceSchemePO = insuranceSchemeMapper.getById(id);
return insuranceSchemePO;
} finally {
sqlSession.close();
}
}
/**
* 根据福利类型获取
*
* @param welfareType
* @return
*/
public List<ICategoryPO> listByWelfareType(Integer welfareType) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
ICategoryMapper iCategoryMapper = sqlSession.getMapper(ICategoryMapper.class);
List<ICategoryPO> insuranceCategoryPOS = iCategoryMapper.listByWelfareType(welfareType, null);
return insuranceCategoryPOS;
} finally {
sqlSession.close();
}
}
public boolean numberCheck(String number) {
return Pattern.compile("^0\\.[0]*").matcher(number).matches();
}
private InsuranceSchemeDetailPO getByPPI(Long primaryId, Integer paymentScope, Long insuranceId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
InsuranceSchemeDetailPO insuranceSchemeDetailPO = insuranceSchemeDetailMapper.getByPPI(primaryId, paymentScope, insuranceId);
encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class);
return insuranceSchemeDetailPO;
} finally {
sqlSession.close();
}
}
/**
* 新增
*
* @param saveParam
* @param employeeId
*/
public void save(InsuranceSchemeReqParam saveParam, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
//保存福利项目主表
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
saveParam.getInsuranceScheme().setSchemeName(StringUtils.trim(saveParam.getInsuranceScheme().getSchemeName()));
List<InsuranceSchemePO> listResult = insuranceSchemeMapper.listByName(saveParam.getInsuranceScheme().getSchemeName());
SalaryAssert.isEmpty(listResult, SalaryI18nUtil.getI18nLabel(0,"该福利名称已经存在,福利名称系统全局唯一"));
InsuranceSchemePO insuranceSchemePO = InsuranceSchemeBO.convert2BatchPO(saveParam.getInsuranceScheme(), employeeId);
if (insuranceSchemePO.getSharedType() == null) {
insuranceSchemePO.setSharedType(SharedTypeEnum.PUBLIC.getValue());
} else {
if (insuranceSchemePO.getSharedType().equals(SharedTypeEnum.PRIVATE.getValue()) && StringUtils.isBlank(insuranceSchemePO.getTaxAgentIds())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"方案可见性为私有时,未设置可见范围"));
}
}
insuranceSchemeMapper.insert(insuranceSchemePO);
//保存福利项目明细表
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(saveParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId());
encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
insuranceSchemeDetailPOS.forEach(insuranceSchemeDetailMapper::insert);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 更新
*
* @param updateParam
* @param employeeId
*/
public void update(InsuranceSchemeReqParam updateParam, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
//查询是否存在福利方案
InsuranceSchemePO insuranceSchemePO = getById(updateParam.getInsuranceScheme().getId());
if (Objects.isNull(insuranceSchemePO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"福利方案不存在"));
}
//去除入参中方案名称的空格
updateParam.getInsuranceScheme().setSchemeName(StringUtils.trim(updateParam.getInsuranceScheme().getSchemeName()));
//福利方案名称重复
List<InsuranceSchemePO> insuranceSchemePOList = insuranceSchemeMapper.listByName(updateParam.getInsuranceScheme().getSchemeName());
if (CollectionUtils.isNotEmpty(insuranceSchemePOList)) {
boolean repeat = insuranceSchemePOList.stream().anyMatch(item -> !Objects.equals(item.getId(), updateParam.getInsuranceScheme().getId()));
SalaryAssert.isTrue(!repeat, SalaryI18nUtil.getI18nLabel(0,"福利方案名称重复"));
}
if (insuranceSchemePO.getSharedType() == null) {
insuranceSchemePO.setSharedType(SharedTypeEnum.PUBLIC.getValue());
} else {
if (insuranceSchemePO.getSharedType().equals(SharedTypeEnum.PRIVATE.getValue()) && StringUtils.isBlank(insuranceSchemePO.getTaxAgentIds())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"方案可见性为私有时,未设置可见范围"));
}
}
//更新福利方案主表
InsuranceSchemePO insuranceSchemePO1 = InsuranceSchemeBO.buildInsuranceSchemePO(insuranceSchemePO, updateParam.getInsuranceScheme());
insuranceSchemeMapper.update(insuranceSchemePO1);
//更新福利方案明细表 先删后插
insuranceSchemeDetailMapper.batchDeleteByPrimaryIds(Collections.singleton(updateParam.getInsuranceScheme().getId()));
//更新明细表
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId());
encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
insuranceSchemeDetailPOS.forEach(insuranceSchemeDetailMapper::insert);
//记录操作日志
sqlSession.commit();
} finally {
sqlSession.close();
}
}
public int checkBeforeDeleteSocialscheme(Map<String, Object> params) {
return getSIAccountUtilMapper().checkBeforeDeleteSocialscheme((Collection<Long>) params.get("ids")).get(0).getNum();
}
public int checkBeforeDeleteAccumulationfund(Map<String, Object> params) {
return getSIAccountUtilMapper().checkBeforeDeleteAccumulationfund((Collection<Long>) params.get("ids")).get(0).getNum();
}
public int checkBeforeDeleteOtherscheme(Map<String, Object> params) {
return getSIAccountUtilMapper().checkBeforeDeleteOtherscheme((Collection<Long>) params.get("ids")).get(0).getNum();
}
public int checkBeforeDeleteBill(Map<String, Object> params, Integer welfareTypeId) {
return getSIAccountUtilMapper().checkBeforeDeleteBill((Collection<Long>) params.get("ids"), welfareTypeId).get(0).getNum();
}
public void deleteSocialscheme(Map<String, Object> params) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
insuranceSchemeMapper.deleteByIds((Collection<Long>) params.get("ids"));
insuranceSchemeDetailMapper.deleteByIds((Collection<Long>) params.get("ids"));
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 复制方案
*
* @param id
* @param schemeName
* @param employeeId
*/
public void copy(Long id, String schemeName, long employeeId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
//去除入参中方案名称的空格
schemeName = StringUtils.trim(schemeName);
List<InsuranceSchemePO> listResult = insuranceSchemeMapper.listByName(schemeName);
SalaryAssert.isEmpty(listResult, SalaryI18nUtil.getI18nLabel(0,"方案名称重复"));
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
if (Objects.isNull(id)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"方案id为空"));
}
if (Objects.isNull(schemeName)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"复制方案名为空"));
}
InsuranceSchemePO insuranceSchemePO = getById(id);
if (Objects.isNull(insuranceSchemePO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"方案不存在"));
}
if (insuranceSchemePO.getSchemeName().equals(schemeName)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"方案名称重复"));
}
InsuranceSchemePO batchPO = InsuranceSchemePO.builder()
.creator(employeeId)
.createTime(new Date())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.schemeName(schemeName)
.paymentArea(insuranceSchemePO.getPaymentArea())
.updateTime(new Date())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.paymentType(insuranceSchemePO.getPaymentType())
.remarks(insuranceSchemePO.getRemarks())
.welfareType(insuranceSchemePO.getWelfareType())
.isUse(insuranceSchemePO.getIsUse())
.build();
insuranceSchemeMapper.insert(batchPO);
List<InsuranceSchemeDetailPO> detailList = insuranceSchemeDetailMapper.queryListBySchemeId(id);
detailList = encryptUtil.decryptList(detailList,InsuranceSchemeDetailPO.class);
if (CollectionUtils.isNotEmpty(detailList)) {
List<InsuranceSchemeDetailPO> detailPOS = detailList.stream().map(item -> InsuranceSchemeDetailPO.builder()
.creator(employeeId)
.createTime(new Date())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.effectiveTime(item.getEffectiveTime())
.expirationTime(item.getExpirationTime())
.fixedCost(item.getFixedCost())
.insuranceId(item.getInsuranceId())
.isPayment(item.getIsPayment())
.lowerLimit(item.getLowerLimit())
.paymentScope(item.getPaymentScope())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.paymentProportion(item.getPaymentProportion())
.updateTime(new Date())
.primaryId(batchPO.getId())
.rententionRule(item.getRententionRule())
.upperLimit(item.getUpperLimit())
.validNum(item.getValidNum())
.build()
).collect(Collectors.toList());
encryptUtil.encryptList(detailPOS, InsuranceSchemeDetailPO.class);
detailPOS.forEach(insuranceSchemeDetailMapper::insert);
}
sqlSession.commit();
} finally {
sqlSession.close();
}
}
/**
* 社保方案基础信息明细表
*
* @param primaryId
* @return
*/
public List<InsuranceSchemeDetailPO> listByPrimaryId(Long primaryId) {
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeDetailMapper insuranceSchemeDetailMapper = sqlSession.getMapper(InsuranceSchemeDetailMapper.class);
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = insuranceSchemeDetailMapper.queryListBySchemeId(primaryId);
encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
return insuranceSchemeDetailPOS;
} finally {
sqlSession.close();
}
}
/**
* 获取所有方案
*
* @return
*/
@Override
public List<InsuranceSchemePO> listAll(){
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
try {
InsuranceSchemeMapper insuranceSchemeMapper = sqlSession.getMapper(InsuranceSchemeMapper.class);
List<InsuranceSchemePO> insuranceSchemePOList = insuranceSchemeMapper.listAll();
return insuranceSchemePOList;
} finally {
sqlSession.close();
}
}
/*****以上代码为SISchemeBiz中方法逻辑迁移旨在减少Biz类的使用*****/
}