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 list(SalaryTemplateQueryParam queryParam) { SalaryWeaTable table = new SalaryWeaTable(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 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 salarySobs = getSalarySobService(user).listByDisable(NumberUtils.INTEGER_ZERO); List> salarySobOptions = salarySobs.stream() .map(salarySobPO -> { Map item = new HashMap<>(); item.put("id", salarySobPO.getId()); item.put("name", salarySobPO.getName()); return item; }) .collect(Collectors.toList()); // 邮箱下拉 // List sendEmailOptions = Lists.newArrayList(); // MailPublicAccountListObj mailPublicAccountListObj = mailBaseService.getMailPublicAccountList(employeeId, tenantKey); // List mailPublicAccountBos = mailPublicAccountListObj.getMailPublicAccountList(); // mailPublicAccountBos.forEach(e->sendEmailOptions.add(new WeaFormOption(String.valueOf(e.getId()), e.getMailAddress()))); // WeaForm salaryTemplateBase = SalaryFormatUtil.getInstance().buildForm(SalaryTemplateBaseSetDTO.class, SalaryTemplateBaseSetDTO.builder().salarySobOptions(salarySobOptions).sendEmailOptions(sendEmailOptions).build()); Map 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.getInstance().buildForm(SalaryTemplateShowSetDTO.class, new SalaryTemplateShowSetDTO()); // // WeaFormItem textContentItem = salaryTemplateShowSet.getItems().get("textContent"); // Map 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 salaryTemplateShowSet = new HashMap<>(); salaryTemplateShowSet.put("data", salaryTemplateShowSetDTO); // 薪资项目设置 List 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 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 ids) { return getSalaryTemplateService(user).delete(ids); } /** * 获取薪资账套下拉列表 * * @return */ public List> selectSalarySobList() { return getSalaryTemplateService(user).selectSalarySobList(); } }