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("
");
+ }
+
+
+ public static String HRM_Name = "HRM_Name";
+ public static String HRM_Num = "HRM_Num";
+ public static String HRM_Mobile = "HRM_Mobile";
+ public static String HRM_Email = "HRM_Email";
+ public static String HRM_CurrentOperatorId = "HRM_CurrentOperatorId";
+ public static String HRM_Department = "HRM_Department";
+ public static String HRM_SecondDepartment = "HRM_SecondDepartment";
+ public static String HRM_CurrentDate = "HRM_CurrentDate";
+ public static String HRM_CurrentTime = "HRM_CurrentTime";
+ public static String HRM_prefix = "$";
+
+ /**
+ * 构建水印
+ *
+ * 当前所拥有的变量
+ * "HRM_Name",当前操作者姓名
+ * "HRM_Num",当前操作者编号
+ * "HRM_Mobile",当前操作者移动电话
+ * "HRM_Email",当前操作者电子邮件
+ * "HRM_CurrentOperatorId",当前操作者人员ID
+ * "HRM_Department",当前操作者部门
+ * "HRM_SecondDepartment",当前操作者分部
+ * "HRM_CurrentDate",当前日期
+ * "HRM_CurrentTime"当前时间
+ *
+ * @param emailContent
+ * @param e
+ * @param salaryBillSendParam
+ */
+ private static void buildEmailWatermarkContent(StringBuilder emailContent, Map e, SalaryBillSendDTO salaryBillSendParam) {
+ if (Objects.isNull(salaryBillSendParam.getWatermarkSetting())) {
+ return;
+ }
+ String emailWmContentTemplate = salaryBillSendParam.getEmailWmContentTemplate();
+ List wmTextFieldIds = salaryBillSendParam.getWmTextFieldIds();
+ // 没有变量,则直接返回
+ if (CollectionUtils.isEmpty(wmTextFieldIds)) {
+ emailContent.append(emailWmContentTemplate);
+ } else {
+ for (String wmTextFieldId : wmTextFieldIds) {
+ // 当前操作者姓名
+ if (HRM_Name.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_Name, Optional.ofNullable(e.get("username")).orElse(StringUtils.EMPTY).toString());
+ // 当前操作者编号
+ } else if (HRM_Num.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_Num, Optional.ofNullable(e.get("jobNum")).orElse(StringUtils.EMPTY).toString());
+ // 当前操作者移动电话
+ } else if (HRM_Mobile.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_Mobile, Optional.ofNullable(e.get("mobile")).orElse(StringUtils.EMPTY).toString());
+ // 当前操作者电子邮件
+ } else if (HRM_Email.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_Email, Optional.ofNullable(e.get("email")).orElse(StringUtils.EMPTY).toString());
+ // 当前操作者人员ID
+ } else if (HRM_CurrentOperatorId.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_CurrentOperatorId, Optional.ofNullable(e.get("id")).orElse(StringUtils.EMPTY).toString());
+ // 当前操作者分部
+ } else if (HRM_Department.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_Department, Optional.ofNullable(e.get("department")).orElse(StringUtils.EMPTY).toString());
+ } else if (HRM_SecondDepartment.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_SecondDepartment, Optional.ofNullable(e.get("subCompanyName")).orElse(StringUtils.EMPTY).toString());
+ // 当前日期
+ } else if (HRM_CurrentDate.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_CurrentDate, SalaryDateUtil.getFormatLocalDate(LocalDate.now()));
+ // 当前时间
+ } else if (HRM_CurrentTime.equals(wmTextFieldId)) {
+ emailWmContentTemplate = emailWmContentTemplate.replace(HRM_prefix + HRM_CurrentTime, SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now()));
+ }
+ }
+ emailContent.append(emailWmContentTemplate);
+ }
+ }
+
+
+ /**
+ * 获取工资单水印文本动态变量
+ *
+ * @param domain
+ * @param salaryBillWatermark
+ * @return
+ */
+ public static List getWmTextFieldIds(String domain, SalaryBillWatermarkDTO salaryBillWatermark) {
+ List wmTextFieldIds = Collections.emptyList();
+ // 没有水印、关闭水印、或者系统水印,则不拼接
+// if (Objects.isNull(salaryBillWatermark) || !salaryBillWatermark.getWatermarkStatus() || !SalaryTemplateWatermarkTypeEnum.CUSTOM.getValue().equals(salaryBillWatermark.getWatermarkType())) {
+ if (Objects.isNull(salaryBillWatermark) || !salaryBillWatermark.getWatermarkStatus() ) {
+ return wmTextFieldIds;
+ }
+ String wmClassify = salaryBillWatermark.getWmSetting().getOrDefault("wmClassify", StringUtils.EMPTY).toString();
+ if ("text".equals(wmClassify)) {
+ wmTextFieldIds = (List) salaryBillWatermark.getWmSetting().getOrDefault("wmSelectedFieldIds", Collections.emptyList());
+
+ List empFields = Arrays.asList(HRM_Name, HRM_Num, HRM_Mobile, HRM_Email, HRM_CurrentOperatorId, HRM_Department);
+ if (wmTextFieldIds.contains(HRM_SecondDepartment)) {
+ // 需要查分部
+ salaryBillWatermark.getWmSetting().put("needQuerySubDepart", true);
+ }
+ // 需要查人员
+ salaryBillWatermark.getWmSetting().put("needQueryEmp", wmTextFieldIds.stream().anyMatch(empFields::contains));
+
+ salaryBillWatermark.getWmSetting().remove("wmImg");
+ } else if ("image".equals(wmClassify)) {
+ List