From f779b1bb11ea7683f635a71fa85619ebe03d884f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 21 Sep 2022 19:08:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=A9=BA=E9=A1=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salarybill/SalaryTemplateMapper.xml | 207 +++++++++--------- .../service/impl/SalarySendServiceImpl.java | 183 +++++++++------- .../engine/salary/util/SalaryEntityUtil.java | 12 + 3 files changed, 225 insertions(+), 177 deletions(-) diff --git a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml index 54e653d61..bece5c982 100644 --- a/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salarybill/SalaryTemplateMapper.xml @@ -16,6 +16,7 @@ + @@ -25,7 +26,9 @@ - t.id + t + . + id , t.name , t.salary_sob_id , t.use_type @@ -38,6 +41,7 @@ , t.text_content , t.text_content_position , t.salary_item_null_status + , t.salary_item_zero_status , t.salary_item_setting , t.create_time , t.update_time @@ -45,34 +49,36 @@ , t.delete_type - t1.id, + t1 + . + id + , t1.name, t2.name AS salary_sob, t1.use_type, @@ -95,38 +101,38 @@ AND t1.salary_sob_id = #{param.salarySobId} - - - AND t1.id IN - - #{id} - - - - - AND t1.name like '%'||#{param.name}||'%' - - - - AND t1.salary_sob_id = #{param.salarySobId} - - - - - AND t1.id IN - - #{id} - - - - - AND t1.name like '%'+#{param.name}+'%' - - - - AND t1.salary_sob_id = #{param.salarySobId} - - + + + AND t1.id IN + + #{id} + + + + + AND t1.name like '%'||#{param.name}||'%' + + + + AND t1.salary_sob_id = #{param.salarySobId} + + + + + AND t1.id IN + + #{id} + + + + + AND t1.name like '%'+#{param.name}+'%' + + + + AND t1.salary_sob_id = #{param.salarySobId} + + - + SELECT + t1.id, t1.name, t2.name AS salary_sob, t1.use_type, t1.description - - FROM - hrsa_salary_template t1 - LEFT JOIN hrsa_salary_sob t2 ON t1.salary_sob_id = t2.id - WHERE - t1.delete_type = 0 - AND t2.delete_type = 0 - + + FROM + hrsa_salary_template t1 + LEFT JOIN hrsa_salary_sob t2 ON t1.salary_sob_id = t2.id + WHERE + t1.delete_type = 0 + AND t2.delete_type = 0 + AND t1.id IN #{id} - + - AND t1.name like '%'||#{param.name}||'%' + AND t1.name like '%'||#{param.name}||'%' - + AND t1.salary_sob_id = #{param.salarySobId} - - ORDER BY t1.salary_sob_id,t1.id DESC - - + + + ORDER BY t1.salary_sob_id,t1.id DESC + UPDATE hrsa_salary_template SET delete_type = 1 - WHERE delete_type = 0 + WHERE delete_type = 0 AND id IN #{id} @@ -219,9 +225,10 @@ - SELECT - + FROM hrsa_salary_template t WHERE delete_type = 0 @@ -285,7 +292,7 @@ ORDER BY id DESC - SELECT FROM @@ -491,9 +498,10 @@ - - + select hrsa_salary_template_id.currval from dual INSERT INTO hrsa_salary_template @@ -637,5 +645,4 @@ - diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 546a9d8be..01d4d7697 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -38,6 +38,7 @@ import com.engine.salary.mapper.salarybill.SalarySendMapper; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; @@ -55,6 +56,7 @@ import weaver.hrm.User; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -93,7 +95,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService return SqlProxyHandle.getProxy(SalaryAcctEmployeeMapper.class); } -// + // private SalaryAcctResultMapper getSalaryAcctResultMapper() { return SqlProxyHandle.getProxy(SalaryAcctResultMapper.class); } @@ -196,33 +198,33 @@ public class SalarySendServiceImpl extends Service implements SalarySendService SalaryAcctRecordPO salaryAcctRecord = acctRecords.get(0); List salarySendInfos = salaryAcctEmployees.stream().map(m -> - SalarySendInfoPO.builder() - .id(IdGenerator.generate()) - .salarySendId(salarySendId) - .employeeId(m.getEmployeeId()) - .salaryMonth(m.getSalaryMonth()) - .taxAgentId(m.getTaxAgentId()) - .salaryAcctRecordId(m.getSalaryAcctRecordId()) - .sendStatus(SalarySendStatusEnum.UNSEND.getValue()) - .salaryTemplate("") - .creator((long) user.getUID()) - .createTime(new Date()) - .updateTime(new Date()) - .build() + SalarySendInfoPO.builder() + .id(IdGenerator.generate()) + .salarySendId(salarySendId) + .employeeId(m.getEmployeeId()) + .salaryMonth(m.getSalaryMonth()) + .taxAgentId(m.getTaxAgentId()) + .salaryAcctRecordId(m.getSalaryAcctRecordId()) + .sendStatus(SalarySendStatusEnum.UNSEND.getValue()) + .salaryTemplate("") + .creator((long) user.getUID()) + .createTime(new Date()) + .updateTime(new Date()) + .build() ).collect(Collectors.toList()); SalarySendPO salarySend = SalarySendPO.builder() - .id(salarySendId) - .salaryMonth(salaryAcctRecord.getSalaryMonth()) - .salaryAccountingId(salaryAccountingId) - .salarySobId(salaryAcctRecord.getSalarySobId()) - .sendNum(0) - .sendTotal(salarySendInfos.size()) - .lastSendTime(new Date()) - .creator((long) user.getUID()) - .createTime(new Date()) - .updateTime(new Date()) - .build(); + .id(salarySendId) + .salaryMonth(salaryAcctRecord.getSalaryMonth()) + .salaryAccountingId(salaryAccountingId) + .salarySobId(salaryAcctRecord.getSalarySobId()) + .sendNum(0) + .sendTotal(salarySendInfos.size()) + .lastSendTime(new Date()) + .creator((long) user.getUID()) + .createTime(new Date()) + .updateTime(new Date()) + .build(); // 插入工资单发放记录 mapper.insert(salarySend); // 插入工资单人员记录 @@ -301,12 +303,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } return SalarySendBaseInfoDTO.builder() - .salaryMonth(salarySobCycleDTO == null ? null : salarySobCycleDTO.getSalaryMonth()) - .template(template) - .salarySobCycle(salarySobCycleDTO) - .sendNum(salarySend.getSendNum()) - .sendTotal(salarySend.getSendTotal()) - .build(); + .salaryMonth(salarySobCycleDTO == null ? null : salarySobCycleDTO.getSalaryMonth()) + .template(template) + .salarySobCycle(salarySobCycleDTO) + .sendNum(salarySend.getSendNum()) + .sendTotal(salarySend.getSendTotal()) + .build(); } @Override @@ -377,19 +379,46 @@ public class SalarySendServiceImpl extends Service implements SalarySendService SalaryTemplateSalaryItemSetListDTO employeeInformation = optionalEmployeeInformation.orElse(null); List itemSetListDTOS = listDTOS.stream().filter(e -> !SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).collect(Collectors.toList()); itemSetListDTOS.stream().forEach(item -> { - item.getItems().stream() - .forEach(e -> { - if (CollectionUtils.isEmpty(salaryAcctResultS)) { - e.setSalaryItemValue(""); - } else { - Object o = salaryAcctResultS.stream() - .filter(f -> f.get("salaryItemId") != null && String.valueOf(f.get("salaryItemId")).equals(e.getSalaryItemId())).findFirst() - .orElse(new HashMap<>()) - .get("resultValue"); - e.setSalaryItemValue(o == null ? "" : (String) o); - } - }); + item.getItems() + .forEach(e -> { + if (CollectionUtils.isEmpty(salaryAcctResultS)) { + e.setSalaryItemValue(""); + } else { + Object o = salaryAcctResultS.stream() + .filter(f -> f.get("salaryItemId") != null && String.valueOf(f.get("salaryItemId")).equals(e.getSalaryItemId())).findFirst() + .orElse(new HashMap<>()) + .get("resultValue"); + e.setSalaryItemValue(o == null ? "" : (String) o); + } + }); }); + + + /** + * 过滤空 + */ + if (Objects.equals(1, salaryTemplate.getSalaryItemNullStatus())) { + for (SalaryTemplateSalaryItemSetListDTO itemSetListDTO : itemSetListDTOS) { + List items = itemSetListDTO.getItems(); + List collect = items.stream().filter(item -> StringUtils.isNotBlank(item.getSalaryItemValue())).collect(Collectors.toList()); + itemSetListDTO.setItems(collect); + } + } + + /** + * 过滤0 + */ + if (Objects.equals(1, salaryTemplate.getSalaryItemZeroStatus())) { + for (SalaryTemplateSalaryItemSetListDTO itemSetListDTO : itemSetListDTOS) { + List items = itemSetListDTO.getItems(); + List collect = items.stream() + .filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null + || BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) == 0) + .collect(Collectors.toList()); + itemSetListDTO.setItems(collect); + } + } + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salarySendInfo.getEmployeeId()); buildEmployeeInfo(employeeInformation, simpleEmployee, taxAgentPO.getName(), SalaryAcctResultBO.buildEmployeeFieldName()); @@ -428,6 +457,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService /** * 获取工资单标题 + * * @param theme * @param salaryMonth * @param currentEmployeeId @@ -445,32 +475,34 @@ public class SalarySendServiceImpl extends Service implements SalarySendService /** * 根据模板内容转为工资单模板对象 * 注意:不要通过反序列化,可能会因为历史原因修改字段名称而无法序列化 + * * @param salaryTemplateContent * @return */ private SalaryTemplatePO buildSalaryTemplateContent(String salaryTemplateContent) { Map map = JsonUtil.parseMap(salaryTemplateContent, Object.class); return SalaryTemplatePO.builder() - .id(Long.valueOf(map.getOrDefault("id","0").toString())) - .name(map.getOrDefault("name","").toString()) - .salarySobId(Long.valueOf(map.getOrDefault("salarySobId","0").toString())) - .useType(Integer.valueOf(map.getOrDefault("useType","0").toString())) - .description(map.getOrDefault("description","").toString()) - .emailStatus(Integer.valueOf(map.getOrDefault("emailStatus","0").toString())) - .sendEmailId(Long.valueOf(map.getOrDefault("sendEmailId","0").toString())) - .msgStatus(Integer.valueOf(map.getOrDefault("msgStatus","0").toString())) - .theme(map.getOrDefault("theme","").toString()) - .background(map.getOrDefault("background","").toString()) - .textContent(map.getOrDefault("textContent","").toString()) - .textContentPosition(Integer.valueOf(map.getOrDefault("textContentPosition","0").toString())) - .salaryItemNullStatus(Integer.valueOf(map.getOrDefault("salaryItemNullStatus","0").toString())) - .salaryItemZeroStatus(Integer.valueOf(map.getOrDefault("salaryItemZeroStatus","0").toString())) - .salaryItemSetting(map.getOrDefault("salaryItemSetting","").toString()) + .id(Long.valueOf(map.getOrDefault("id", "0").toString())) + .name(map.getOrDefault("name", "").toString()) + .salarySobId(Long.valueOf(map.getOrDefault("salarySobId", "0").toString())) + .useType(Integer.valueOf(map.getOrDefault("useType", "0").toString())) + .description(map.getOrDefault("description", "").toString()) + .emailStatus(Integer.valueOf(map.getOrDefault("emailStatus", "0").toString())) + .sendEmailId(Long.valueOf(map.getOrDefault("sendEmailId", "0").toString())) + .msgStatus(Integer.valueOf(map.getOrDefault("msgStatus", "0").toString())) + .theme(map.getOrDefault("theme", "").toString()) + .background(map.getOrDefault("background", "").toString()) + .textContent(map.getOrDefault("textContent", "").toString()) + .textContentPosition(Integer.valueOf(map.getOrDefault("textContentPosition", "0").toString())) + .salaryItemNullStatus(Integer.valueOf(map.getOrDefault("salaryItemNullStatus", "0").toString())) + .salaryItemZeroStatus(Integer.valueOf(map.getOrDefault("salaryItemZeroStatus", "0").toString())) + .salaryItemSetting(map.getOrDefault("salaryItemSetting", "").toString()) .build(); } /** * 构建工资单中的人员信息 + * * @param employeeInformation * @param simpleEmployee * @param taxAgentName @@ -484,7 +516,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService //获取员工信息的字段名和中文描述的map关系 SalaryFormulaEmployeeDTO salaryFormulaEmployeeDTO = SalaryFormulaEmployeeDTO.builder().employeeId(simpleEmployee.getEmployeeId()) .birthday(simpleEmployee.getBirthday()) - .departmentName(simpleEmployee.getDepartmentName() ) + .departmentName(simpleEmployee.getDepartmentName()) .email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail()) .jobcall(simpleEmployee.getJobcall()) .companystartdate(simpleEmployee.getCompanystartdate()) @@ -553,7 +585,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("email", e.getEmail()); salaryItems.forEach(i -> { Optional optional = salaryAccountingResults.stream() - .filter(r -> r.getEmployeeId().equals(e.getEmployeeId()) && r.getSalaryItemId().equals(Long.valueOf(i.getSalaryItemId()))).findFirst(); + .filter(r -> r.getEmployeeId().equals(e.getEmployeeId()) && r.getSalaryItemId().equals(Long.valueOf(i.getSalaryItemId()))).findFirst(); map.put(i.getSalaryItemId() + SalaryItemConstant.DYNAMIC_SUFFIX, optional.isPresent() ? optional.get().getResultValue() : ""); }); @@ -577,7 +609,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } if (StringUtils.isNotEmpty(salaryTemplate.getSalaryItemSetting())) { List salaryTemplateShowSetData = JsonUtil.parseList(salaryTemplate.getSalaryItemSetting(), - SalaryTemplateSalaryItemSetListDTO.class); + SalaryTemplateSalaryItemSetListDTO.class); salaryTemplateShowSetData.stream().filter(f -> !f.getGroupId().equals(SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID)).forEach(e -> { salaryItems.addAll(e.getItems()); }); @@ -624,12 +656,12 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List list = salarySendInfoMapper.listSome(po); //需要发送工资的人 - List sendList = list.stream().filter(e -> e.getSendStatus().equals(SalarySendStatusEnum.ALREADYSEND.getValue())).collect(Collectors.toList()); + List sendList = list.stream().filter(e -> e.getSendStatus().equals(SalarySendStatusEnum.ALREADYSEND.getValue())).collect(Collectors.toList()); int sendNum = sendList.size(); int sendTotal = list.size(); SalarySendPO salarySendNew = new SalarySendPO(); try { - BeanUtils.copyProperties(salarySendNew,salarySend); + BeanUtils.copyProperties(salarySendNew, salarySend); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { @@ -675,7 +707,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List needSendList = Lists.newArrayList(); enableSendList.forEach(map -> { sendList.forEach(item -> { - if (item.getId() == Long.valueOf(map.get("id").toString()).longValue()){ + if (item.getId() == Long.valueOf(map.get("id").toString()).longValue()) { needSendList.add(item); } }); @@ -693,7 +725,8 @@ public class SalarySendServiceImpl extends Service implements SalarySendService /** * 发送消息 - * @param sendFlag true 发送 false 撤回 + * + * @param sendFlag true 发送 false 撤回 * @param list * @param param * @param salarySend @@ -704,7 +737,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService new Thread() { public void run() { List collect = new ArrayList<>(); - if(CollectionUtils.isNotEmpty(param.getIds())) { + if (CollectionUtils.isNotEmpty(param.getIds())) { collect = new ArrayList<>(param.getIds()); } else { collect = list.stream().map(item -> item.getId()).collect(Collectors.toList()); @@ -713,10 +746,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService collect.forEach(item -> { SalarySendInfoPO po = SalarySendInfoPO.builder().id(item).build(); List salarySendInfoPOS = salarySendInfoMapper.listSome(po); - if(CollectionUtils.isNotEmpty(salarySendInfoPOS)) { + if (CollectionUtils.isNotEmpty(salarySendInfoPOS)) { Long employeeId = salarySendInfoPOS.get(0).getEmployeeId(); - if(sendFlag) { - sendPayRollEMMessage(item, employeeId ,month); + if (sendFlag) { + sendPayRollEMMessage(item, employeeId, month); } else { withdrawPayrollEMMessage(item, employeeId); } @@ -735,8 +768,8 @@ public class SalarySendServiceImpl extends Service implements SalarySendService userIdList.add(employeeId.toString()); String title = month + " 工资单"; // 标题 String context = "点击查看详情"; // 内容 - String linkUrl = weaver.general.GCONST.getContextPath()+"/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id; // PC端链接 - String linkMobileUrl = weaver.general.GCONST.getContextPath()+"/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id; // 移动端链接 + String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id; // PC端链接 + String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id; // 移动端链接 try { MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl); messageBean.setCreater(user.getUID());// 创建人id @@ -750,6 +783,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService /** * 撤回EM消息 + * * @param id */ private void withdrawPayrollEMMessage(Long id, Long employeeId) { @@ -781,8 +815,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } - - // /** // * 发送消息 // * @@ -947,9 +979,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } - - - @Override public XSSFWorkbook exportInfoList(SalarySendInfoQueryParam queryParam) { // 1.工作簿名称 @@ -960,7 +989,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService header.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); - header.add(SalaryI18nUtil.getI18nLabel( 86317, "发送状态")); + header.add(SalaryI18nUtil.getI18nLabel(86317, "发送状态")); List> rows = new ArrayList<>(); // 2.表头 diff --git a/src/com/engine/salary/util/SalaryEntityUtil.java b/src/com/engine/salary/util/SalaryEntityUtil.java index 307defe96..10f1c95d4 100644 --- a/src/com/engine/salary/util/SalaryEntityUtil.java +++ b/src/com/engine/salary/util/SalaryEntityUtil.java @@ -233,4 +233,16 @@ public class SalaryEntityUtil { return null; } + /** + * String转BigDecimal + * @param obj + * @return + */ + public static BigDecimal string2BigDecimal(String obj) { + if (NumberUtils.isCreatable(obj)) { + return new BigDecimal(obj); + } + return null; + } + }