weaver-hrm-salary/src/com/engine/salary/wrapper/SalaryTemplateWrapper.java

283 lines
10 KiB
Java

package com.engine.salary.wrapper;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.component.SalaryWeaTable;
import com.engine.salary.entity.salaryBill.dto.*;
import com.engine.salary.entity.salaryBill.param.SalaryTemplateCopyParam;
import com.engine.salary.entity.salaryBill.param.SalaryTemplateDefaultUseParam;
import com.engine.salary.entity.salaryBill.param.SalaryTemplateQueryParam;
import com.engine.salary.entity.salaryBill.param.SalaryTemplateSaveParam;
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.enums.salarybill.SalaryTemplateVarEnum;
import com.engine.salary.enums.salarybill.SalaryTemplateWhetherEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalarySobService;
import com.engine.salary.service.SalaryTemplateService;
import com.engine.salary.service.impl.SalarySobServiceImpl;
import com.engine.salary.service.impl.SalaryTemplateServiceImpl;
import com.engine.salary.util.db.DBType;
import com.mzlion.core.json.fastjson.JsonUtil;
import com.mzlion.core.utils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import weaver.conn.RecordSet;
import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 工资单模板
* @Author: wangxiangzhong
* @Date: 2022/3/16 13:56
*/
@Component
public class SalaryTemplateWrapper extends Service {
private SalaryTemplateService getSalaryTemplateService(User user) {
return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user);
}
// @RpcReference
// private MailBaseService mailBaseService;
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
/**
* 工资单模板列表
*
* @param queryParam
* @return
*/
public Map<String, Object> list(SalaryTemplateQueryParam queryParam) {
SalaryWeaTable<SalaryTemplateListDTO> table = new SalaryWeaTable<SalaryTemplateListDTO>(user, SalaryTemplateListDTO.class);
String fields = " t.id" +
" , t.name" +
" , t.salary_sob_id as salarySob" +
" , t.use_type as useType" +
" , t.description";
String from = " from hrsa_salary_template t";
table.setBackfields(fields);
table.setSqlform(from);
table.setSqlwhere(makeSqlWhere(queryParam));
table.setSqlorderby("t.id DESC");
table.setSqlprimarykey("t.id");
table.setSqlisdistinct("false");
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
return result.getResultMap();
}
private String makeSqlWhere(SalaryTemplateQueryParam queryParam) {
DBType dbType = DBType.get(new RecordSet().getDBType());
String sqlWhere = " t.delete_type = 0 ";
String name = queryParam.getName();
if (StringUtils.isNotBlank(name)) {
sqlWhere += " AND t.name " + dbType.like(name);
}
Collection<Long> ids = queryParam.getIds();
if(ids != null && ids.size() > 0) {
sqlWhere += " AND t.id in ("+ ids.stream().map(Object::toString).collect(Collectors.joining(",")) + ") ";
}
Long salarySobId = queryParam.getSalarySobId();
if(salarySobId != null) {
sqlWhere += " AND t.salary_sob_id = " + salarySobId;
}
return sqlWhere;
}
/**
* 获取工资单模板基础设置表单
*
* @param id
* @return
*/
public SalaryTemplateBaseFormDTO getBaseForm(Long id) {
SalaryTemplateBaseSetDTO salaryTemplateBaseSetDTO = new SalaryTemplateBaseSetDTO();
if (id != null) {
SalaryTemplatePO po = getSalaryTemplateService(user).getById(id);
if (po == null) {
throw new SalaryRunTimeException("工资单模板不存在");
}
BeanUtils.copyProperties(po, salaryTemplateBaseSetDTO);
salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId());
salaryTemplateBaseSetDTO.setEmailStatus(po.getEmailStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue()));
salaryTemplateBaseSetDTO.setMsgStatus(po.getMsgStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue()));
salaryTemplateBaseSetDTO.setSalarySob(po.getSalarySobId());
salaryTemplateBaseSetDTO.setSendEmail(po.getSendEmailId());
}
// 查询所有启用的薪资账套
List<SalarySobPO> salarySobs = getSalarySobService(user).listByDisable(NumberUtils.INTEGER_ZERO);
List<Map<String, Object>> salarySobOptions = salarySobs.stream()
.map(salarySobPO -> {
Map<String, Object> item = new HashMap<>();
item.put("id", salarySobPO.getId());
item.put("name", salarySobPO.getName());
return item;
})
.collect(Collectors.toList());
// 邮箱下拉
// List<WeaFormOption> sendEmailOptions = Lists.newArrayList();
// MailPublicAccountListObj mailPublicAccountListObj = mailBaseService.getMailPublicAccountList(employeeId, tenantKey);
// List<MailPublicAccountBo> mailPublicAccountBos = mailPublicAccountListObj.getMailPublicAccountList();
// mailPublicAccountBos.forEach(e->sendEmailOptions.add(new WeaFormOption(String.valueOf(e.getId()), e.getMailAddress())));
// WeaForm salaryTemplateBase = SalaryFormatUtil.<SalaryTemplateBaseSetDTO>getInstance().buildForm(SalaryTemplateBaseSetDTO.class, SalaryTemplateBaseSetDTO.builder().salarySobOptions(salarySobOptions).sendEmailOptions(sendEmailOptions).build());
Map<String, Object> salaryTemplateBase = new HashMap<>();
salaryTemplateBase.put("data", salaryTemplateBaseSetDTO);
salaryTemplateBase.put("salarySobOptions", salarySobOptions);
// 编辑时禁止修改薪资账套 前端实现
// 分组 前端实现
return SalaryTemplateBaseFormDTO.builder()
.id(id)
.salaryTemplateBaseSet(salaryTemplateBase)
.build();
}
/**
* 获取工资单模板显示设置表单
*
* @param id
* @return
*/
public SalaryTemplateShowFormDTO getShowForm(Long id) {
SalaryTemplateShowSetDTO salaryTemplateShowSetDTO = new SalaryTemplateShowSetDTO();
SalaryTemplatePO po = new SalaryTemplatePO();
if (id != null) {
po = getSalaryTemplateService(user).getById(id);
if (po == null) {
throw new SalaryRunTimeException("工资单模板不存在");
}
BeanUtils.copyProperties(po, salaryTemplateShowSetDTO);
salaryTemplateShowSetDTO.setTextContentPosition(po.getTextContentPosition().toString());
salaryTemplateShowSetDTO.setSalaryItemNullStatus(po.getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue()));
salaryTemplateShowSetDTO.setSalaryItemZeroStatus(po.getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue()));
}
// 主题及其他设置
// WeaForm salaryTemplateShowSet = SalaryFormatUtil.<SalaryTemplateShowSetDTO>getInstance().buildForm(SalaryTemplateShowSetDTO.class, new SalaryTemplateShowSetDTO());
//
// WeaFormItem textContentItem = salaryTemplateShowSet.getItems().get("textContent");
// Map<String, Object> otherParams = Maps.newHashMap();
// otherParams.put("showCount", true);
// otherParams.put("placeholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85987, "请输入"));
// textContentItem.setOtherParams(otherParams);
// salaryTemplateShowSet.getItems().put("textContent", textContentItem);
//
// salaryTemplateShowSet.setData(JsonUtil.parseMap(salaryTemplateShowSetDTO, Object.class));
Map<String, Object> salaryTemplateShowSet = new HashMap<>();
salaryTemplateShowSet.put("data", salaryTemplateShowSetDTO);
// 薪资项目设置
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateShowSetData = new ArrayList<>();
if (StringUtils.isNotEmpty(po.getSalaryItemSetting())) {
salaryTemplateShowSetData = JsonUtil.fromJson(po.getSalaryItemSetting(), List.class);
}
return SalaryTemplateShowFormDTO.builder()
.id(id)
.vars(Arrays.stream(SalaryTemplateVarEnum.values()).map(SalaryTemplateVarEnum::getValue).collect(Collectors.toList()))
.salaryTemplateShowSet(salaryTemplateShowSet)
.salaryTemplateSalaryItemSet(salaryTemplateShowSetData)
.build();
}
/**
* 获取薪资项目设置
*
* @param salarySobId
* @return
*/
public List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSet(Long salarySobId) {
return getSalaryTemplateService(user).getSalaryItemSet(salarySobId);
}
/**
* 工资单模板默认使用
*
* @param defaultUseParam
* @return
*/
public String defaultUse(SalaryTemplateDefaultUseParam defaultUseParam) {
return getSalaryTemplateService(user).defaultUse(defaultUseParam);
}
/**
* 新建工资单模板
*
* @param saveParam
* @return
*/
public String save(SalaryTemplateSaveParam saveParam) {
return getSalaryTemplateService(user).save(saveParam);
}
/**
* 编辑工资单模板
*
* @param saveParam
* @return
*/
public String update(SalaryTemplateSaveParam saveParam) {
return getSalaryTemplateService(user).update(saveParam);
}
/**
* 复制工资单模板
*
* @param copyParam
* @return
*/
public String copy(SalaryTemplateCopyParam copyParam) {
return getSalaryTemplateService(user).copy(copyParam);
}
/**
* 删除工资单模板
*
* @param ids
* @return
*/
public String delete(Collection<Long> ids) {
return getSalaryTemplateService(user).delete(ids);
}
/**
* 获取薪资账套下拉列表
*
* @return
*/
public List<Map<String, Object>> selectSalarySobList() {
return getSalaryTemplateService(user).selectSalarySobList();
}
}