e, SalaryBillSendDTO salaryBillSendParam) {
+ // 薪资项是否显示
+ boolean isHideNull = salaryBillSendParam.getSalaryTemplate().getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue());
+ boolean isHideZero = salaryBillSendParam.getSalaryTemplate().getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue());
+ // 3.文本内容-如果在薪资项目前
+ emailContent.append("");
+ emailContent.append(salaryBillSendParam.getSalaryTemplate().getTextContent());
+ emailContent.append("
");
+ // 4.薪资项目内容
+ emailContent.append("");
+ for (SalaryTemplateSalaryItemSetListDTO salaryItemSet : salaryBillSendParam.getSalaryItemSetList()) {
+ if (CollectionUtils.isEmpty(salaryItemSet.getItems())) {
+ continue;
+ }
+ emailContent.append("
");
+ if (!salaryItemSet.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.NO_TYPE_GROUP_ID)) {
+ emailContent.append("
");
+ // 4.1.薪资项目组名
+ emailContent.append(salaryItemSet.getGroupName());
+ emailContent.append("
");
+ }
+ emailContent.append("
");
+ for (int i = 0; i < salaryItemSet.getItems().size(); i++) {
+ SalaryTemplateSalaryItemListDTO salaryItem = salaryItemSet.getItems().get(i);
+ // 员工基本信息
+ if (salaryItemSet.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID) && salaryBillSendParam.getEmployeeInformation() != null) {
+ Optional
optionalEmpItem = salaryBillSendParam.getEmployeeInformation().getItems().stream().filter(f -> f.getId().equals(salaryItem.getId())).findFirst();
+ // 4.2.员工信息
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("");
+ emailContent.append((optionalEmpItem.isPresent() ? optionalEmpItem.get().getName() : ""));
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append((optionalEmpItem.isPresent() ? optionalEmpItem.get().getSalaryItemValue() : ""));
+ emailContent.append("
");
+ emailContent.append("
");
+ } else {
+ for (Object keyName : e.keySet()) {
+ if ((salaryItem.getId() + SalaryArchiveConstant.DYNAMIC_SUFFIX).equals(keyName.toString())) {
+ boolean isHide = (isHideNull && e.get(keyName.toString()) != null) || (isHideZero && "0.00".equals(e.get(keyName.toString())));
+ // 4.2.薪资项目
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("");
+ emailContent.append(salaryItem.getName());
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append(e.get(keyName.toString()));
+ emailContent.append("
");
+ emailContent.append("
");
+ break;
+ }
+ }
+ }
+ }
+ emailContent.append("");
+ emailContent.append("
");
+ }
+ emailContent.append("
");
+ // 5.文本内容-如果在薪资项目后
+ emailContent.append("");
+ emailContent.append(salaryBillSendParam.getSalaryTemplate().getTextContent());
+ emailContent.append("
");
+ }
+
+ /**
+ * 构建邮件内容主体
+ *
+ * 只有无分类,则将文本内容放进薪资项目表格前后
+ *
+ * @param emailContent
+ * @param e
+ * @param salaryBillSendParam
+ */
+ private static void buildOnlyOneGroupMailMain(StringBuilder emailContent, Map e, SalaryBillSendDTO salaryBillSendParam) {
+ // 薪资项是否显示
+ boolean isHideNull = salaryBillSendParam.getSalaryTemplate().getSalaryItemNullStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue());
+ boolean isHideZero = salaryBillSendParam.getSalaryTemplate().getSalaryItemZeroStatus().equals(SalaryTemplateWhetherEnum.TRUE.getValue());
+ // 4.薪资项目内容
+ emailContent.append("");
+ for (SalaryTemplateSalaryItemSetListDTO salaryItemSet : salaryBillSendParam.getSalaryItemSetList()) {
+ if (CollectionUtils.isEmpty(salaryItemSet.getItems())) {
+ continue;
+ }
+ emailContent.append("
");
+ emailContent.append("
");
+
+ // 3.文本内容-如果在薪资项目前
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append("");
+ emailContent.append(salaryBillSendParam.getRemarkI18n());
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append(salaryBillSendParam.getSalaryTemplate().getTextContent());
+ emailContent.append("
");
+ emailContent.append("
");
+
+ for (int i = 0; i < salaryItemSet.getItems().size(); i++) {
+ SalaryTemplateSalaryItemListDTO salaryItem = salaryItemSet.getItems().get(i);
+ for (Object keyName : e.keySet()) {
+ if ((salaryItem.getId() + SalaryArchiveConstant.DYNAMIC_SUFFIX).equals(keyName.toString())) {
+ boolean isHide = (isHideNull && e.get(keyName.toString()) != null) || (isHideZero && "0.00".equals(e.get(keyName.toString())));
+ // 4.2.薪资项目
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append("");
+ emailContent.append(salaryItem.getName());
+ emailContent.append("");
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append(e.get(keyName.toString()));
+ emailContent.append("
");
+ emailContent.append("
");
+ break;
+ }
+ }
+ }
+ // 5.文本内容-如果在薪资项目后
+ emailContent.append("
");
+ emailContent.append("
");
+ emailContent.append("");
+ emailContent.append(salaryBillSendParam.getRemarkI18n());
+ emailContent.append("");
+ emailContent.append("
");
+
+ emailContent.append("
");
+ emailContent.append(salaryBillSendParam.getSalaryTemplate().getTextContent());
+ emailContent.append("
");
+ emailContent.append("
");
+
+ emailContent.append("
");
+ emailContent.append("
");
+ }
+ emailContent.append("
");
+ }
+}
diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java
index 99a997fa4..a7767953a 100644
--- a/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java
+++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryTemplateBO.java
@@ -10,10 +10,13 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryI18nUtil;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* @Description: 工资单
@@ -25,6 +28,23 @@ public class SalaryTemplateBO {
return "SalaryTemplateBO{}";
}
+
+ /**
+ * 获取人员信息项目分类
+ *
+ * @param salaryItemSetting
+ * @return
+ */
+ public static SalaryTemplateSalaryItemSetListDTO getEmployeeInformation(List salaryItemSetting) {
+ Optional optionalEmployeeInformation = salaryItemSetting.stream().filter(e -> SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).findFirst();
+ SalaryTemplateSalaryItemSetListDTO employeeInformation = optionalEmployeeInformation.orElse(null);
+ // 排除名称为空的
+ if (employeeInformation != null && org.apache.commons.collections.CollectionUtils.isNotEmpty(employeeInformation.getItems())) {
+ employeeInformation.setItems(employeeInformation.getItems().stream().filter(e -> StringUtils.isNotEmpty(e.getName())).collect(Collectors.toList()));
+ }
+ return employeeInformation;
+ }
+
/**
* 保存参数转表数据
* @param saveParam
diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java
new file mode 100644
index 000000000..bbfb6d5b7
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryBill/dto/SalaryBillSendDTO.java
@@ -0,0 +1,87 @@
+package com.engine.salary.entity.salaryBill.dto;
+
+import com.engine.salary.entity.salaryBill.po.SalarySendPO;
+import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
+import com.engine.salary.enums.salarybill.MessageChannelEnum;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import weaver.hrm.User;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 工资单发放信息
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+//工资单发放信息
+public class SalaryBillSendDTO {
+
+ /**
+ * 薪资所属月
+ */
+ private Date salaryDate;
+
+ //消息标题
+ private String title;
+
+ //消息内容
+ private String text;
+
+ //工资单预览实体名
+ private String entityName;
+
+ //发送通道
+ private Set sendChannels;
+
+ //发送者
+ private User sendUser;
+
+ //工资单模板
+ private SalaryTemplatePO salaryTemplate;
+
+ //工资单背景图base64编码
+ private String backgroundBase64;
+
+ //云桥工资单消息图
+ private String picUrl;
+
+ //扣缴义务人名称
+ private String taxAgentName;
+
+ //工资单模板-薪资项目设置
+ private List salaryItemSetList;
+
+ //工资单模板-员工基本信息
+ private SalaryTemplateSalaryItemSetListDTO employeeInformation;
+
+ //工资单模板-对应人员字段
+ private Map employeeField;
+
+ //工资单模板-发放说明标签国际化
+ private String remarkI18n;
+
+ //邮件是否可以发送邮件
+ private boolean isEnableEmail;
+
+ //工资单发放
+ private SalarySendPO salarySend;
+
+ //收入所得项目类型
+ private List incomeCategorys;
+
+ //薪资项目收入所得类型
+ private Map salaryItemIncomeCategoryMap;
+}
diff --git a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java
index eb82e629f..6f976855a 100644
--- a/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java
+++ b/src/com/engine/salary/entity/salaryBill/dto/SalarySendInfoListDTO.java
@@ -30,6 +30,7 @@ public class SalarySendInfoListDTO {
@TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgent", key = "taxAgent")
private String taxAgent;
+ private Long taxAgentId;
@TableTitle(title = "部门", dataIndex = "department", key = "department")
@@ -47,5 +48,12 @@ public class SalarySendInfoListDTO {
@TableTitle(title = "发送状态", dataIndex = "sendStatus", key = "sendStatus")
private String sendStatus;
+ private String email;
+ private Long salaryAcctRecordId;
+ /**
+ * 核算类型。0:正常,1:补发
+ */
+ private Integer salaryAcctType;
+
}
diff --git a/src/com/engine/salary/entity/salaryBill/param/SalarySendGrantParam.java b/src/com/engine/salary/entity/salaryBill/param/SalarySendGrantParam.java
index 3e6b4c7dd..dfabe74d5 100644
--- a/src/com/engine/salary/entity/salaryBill/param/SalarySendGrantParam.java
+++ b/src/com/engine/salary/entity/salaryBill/param/SalarySendGrantParam.java
@@ -7,7 +7,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.Collection;
import java.util.List;
/**
@@ -23,7 +22,7 @@ import java.util.List;
public class SalarySendGrantParam {
// 主键id
- private Collection ids;
+ private List ids;
// 工资单发放Id
private Long salarySendId;
diff --git a/src/com/engine/salary/entity/salaryBill/param/SalarySendWithdrawParam.java b/src/com/engine/salary/entity/salaryBill/param/SalarySendWithdrawParam.java
index af1fcedd9..e9b4caabd 100644
--- a/src/com/engine/salary/entity/salaryBill/param/SalarySendWithdrawParam.java
+++ b/src/com/engine/salary/entity/salaryBill/param/SalarySendWithdrawParam.java
@@ -1,39 +1,33 @@
package com.engine.salary.entity.salaryBill.param;
-import com.engine.salary.exception.SalaryRunTimeException;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.Collection;
import java.util.List;
/**
- * @Description: 工资单撤回参数
- * @Author: wangxiangzhong
- * @Date: 2021/12/13 16:18
- */
+ * 工资单发送参数
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
-////"工资单撤回参数")
public class SalarySendWithdrawParam {
-// 主键id")
- private Collection ids;
+ // 主键id")
+ private List ids;
-// 工资单发放Id")
+ // 工资单发放Id")
private Long salarySendId;
+ //发送范围
private List salarySendRangeIds;
- public static String checkParam(SalarySendWithdrawParam param, Long employeeId, String tenantKey) {
- if (param.getSalarySendId() == null) {
- throw new SalaryRunTimeException("工资单发放Id必传");
- }
-
- return "";
- }
}
diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java
index 2295dfefc..66d55f5b1 100644
--- a/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java
+++ b/src/com/engine/salary/entity/salaryBill/param/SalaryTemplateSaveParam.java
@@ -20,101 +20,101 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
-////"工资单模板保存参数")
+//"工资单模板保存参数
public class SalaryTemplateSaveParam {
-// 主键")
+ // 主键
private Long id;
-// 模板名称")
+ // 模板名称
private String name;
-// 薪资账套表的主键id")
+ // 薪资账套表的主键id
private Long salarySobId;
-// 备注")
+ // 备注
private String description;
-// 邮箱开启状态。false:关、true:开")
+ // 邮箱开启状态。false:关、true:开
private Boolean emailStatus;
-// 发送地址")
+ // 发送地址
private Long sendEmail;
-// 消息中心开启状态。false:关、true:开")
+ // 消息中心开启状态。false:关、true:开
private Boolean msgStatus;
-// 主题")
+ // 主题
private String theme;
-// 背景图")
+ // 背景图
private String background;
-// 文本内容")
+ // 文本内容
private String textContent;
-// 文本内容位置。1:薪资项目前、2:薪资项目后")
+ // 文本内容位置。1:薪资项目前、2:薪资项目后
private Integer textContentPosition;
-// 薪资项为空时不显示开启状态。false:关、true:开")
+ // 薪资项为空时不显示开启状态。false:关、true:开
private Boolean salaryItemNullStatus;
-// 薪资项为0时不显示开启状态。false:关、true:开")
+ // 薪资项为0时不显示开启状态。false:关、true:开
private Boolean salaryItemZeroStatus;
-// 薪资项目设置")
+ // 薪资项目设置
private List salaryItemSetting;
-// 补发工资单模板名称")
+ // 补发工资单模板名称
private String replenishName;
-// 补发工资单名单生成规则")
+ // 补发工资单名单生成规则
private String replenishRule;
-// 补发薪资项目设置")
+ // 补发薪资项目设置
private List replenishSalaryItemSetting;
public static void checkParam(SalaryTemplateSaveParam saveParam) {
if (saveParam.getSalarySobId() == null) {
- throw new SalaryRunTimeException("薪资账套表的主键id必传");
+ throw new SalaryRunTimeException("薪资账套表的主键id必传;");
}
if (StringUtils.isEmpty(saveParam.getName())) {
- throw new SalaryRunTimeException("工资单模板名称必填");
+ throw new SalaryRunTimeException("工资单模板名称必填;");
}
if (StringUtils.isEmpty(saveParam.getTheme())) {
- throw new SalaryRunTimeException("工资单主题必填");
+ throw new SalaryRunTimeException("工资单主题必填;");
}
if (StringUtils.isEmpty(saveParam.getReplenishName())) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 139737, "补发工资单模板名称必填"));
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(139737, "补发工资单模板名称必填"));
}
if (saveParam.getName().equals(saveParam.getReplenishName())) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 140557, "工资单模板名称和补发工资单模板名称不可相同"));
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140557, "工资单模板名称和补发工资单模板名称不可相同"));
}
if (StringUtils.isEmpty(saveParam.getReplenishRule())) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 139738, "补发工资单名单生成规则必填"));
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(139738, "补发工资单名单生成规则必填"));
}
-
+
if (saveParam.getEmailStatus() && saveParam.getSendEmail() == null) {
- throw new SalaryRunTimeException("开启邮箱后,发送地址必选");
+ throw new SalaryRunTimeException("开启邮箱后,发送地址必选;");
}
if (StringUtils.isNotEmpty(saveParam.getTextContent()) && saveParam.getTextContentPosition() == null) {
- throw new SalaryRunTimeException("文本内容不为空时,文本内容位置必选");
+ throw new SalaryRunTimeException("文本内容不为空时,文本内容位置必选;");
}
- if (saveParam.getTextContentPosition() !=null && saveParam.getTextContentPosition().equals(SalaryTemplateTextContentPositionEnum.BEFORE.getValue()) && saveParam.getTextContentPosition().equals(SalaryTemplateTextContentPositionEnum.AFTER.getValue())) {
- throw new SalaryRunTimeException("文本内容位置参数不对");
+ if (saveParam.getTextContentPosition() != null && saveParam.getTextContentPosition().equals(SalaryTemplateTextContentPositionEnum.BEFORE.getValue()) && saveParam.getTextContentPosition().equals(SalaryTemplateTextContentPositionEnum.AFTER.getValue())) {
+ throw new SalaryRunTimeException("文本内容位置参数不对;");
}
if (CollectionUtils.isEmpty(saveParam.getReplenishSalaryItemSetting())) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 140509, "补发工资单模板的薪资项目设置不能为空"));
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(140509, "补发工资单模板的薪资项目设置不能为空"));
}
}
}
diff --git a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java
index 6dd5241b1..5efa58c05 100644
--- a/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java
+++ b/src/com/engine/salary/entity/salaryBill/po/SalarySendInfoPO.java
@@ -8,25 +8,23 @@ import lombok.NoArgsConstructor;
import java.util.Date;
/**
- * @Description: 工资单发放信息
- * @Author: wangxiangzhong
- * @Date: 2021-12-11 11:29
+ * 工资单发放信息
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
-////hrsa_salary_send_info")
-//工资单发放信息表")
+//hrsa_salary_send_info
public class SalarySendInfoPO {
- public Object get;
/**
* 主键id
*/
private Long id;
-// 工资单发放id
+ /**
+ * 工资单发放id
+ */
private Long salarySendId;
/**
diff --git a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java
index de19e6af6..2cfa80624 100644
--- a/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java
+++ b/src/com/engine/salary/entity/salaryBill/po/SalaryTemplatePO.java
@@ -47,19 +47,26 @@ public class SalaryTemplatePO {
private String description;
/**
- * 邮箱开启状态。0:关、1:开
+ * 消息中心开启状态。0:关、1:开 ,默认开启
+ */
+ private Integer msgStatus;
+
+ /**
+ * 邮箱开启状态。0:关、1:开,默认关闭
*/
private Integer emailStatus;
+
/**
* 发送地址:公共邮箱账号id
*/
private Long sendEmailId;
+
/**
- * 消息中心开启状态。0:关、1:开
+ * 短信开启状态。0:关、1:开,默认关闭
*/
- private Integer msgStatus;
+ private Integer smsStatus;
/**
* 主题
diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccResultListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAccResultListDTO.java
deleted file mode 100644
index f294ed26c..000000000
--- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccResultListDTO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-//package com.engine.salary.entity.salaryacct.dto;
-//
-//import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-//import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-//import com.weaver.hrm.salary.common.WeaTableColumnWapper;
-//import io.swagger.annotations.ApiModel;
-//import io.swagger.annotations.ApiModelProperty;
-//import lombok.AllArgsConstructor;
-//import lombok.Builder;
-//import lombok.Data;
-//import lombok.NoArgsConstructor;
-//
-//import java.util.List;
-//import java.util.Map;
-//
-///**
-// * @description: 核算结果列表
-// * @author: xiajun
-// * @modified By: xiajun
-// * @date: Created in 12/6/21 6:53 PM
-// * @version:v1.0
-// */
-//@Data
-//@Builder
-//@NoArgsConstructor
-//@AllArgsConstructor
-////"核算结果列表")
-//public class SalaryAccResultListDTO {
-//
-// //动态表头")
-// private List columns;
-//
-// //列表数据")
-// private List