package com.engine.salary.service.impl; import com.engine.core.impl.Service; import com.engine.salary.biz.AttendQuoteBiz; import com.engine.salary.biz.AttendQuoteDataBiz; import com.engine.salary.biz.AttendQuoteDataValueBiz; import com.engine.salary.cmd.datacollection.AttendQuoteListCmd; import com.engine.salary.entity.datacollection.dto.AttendQuoteListDTO; import com.engine.salary.entity.datacollection.param.AttendQuoteDataQueryParam; import com.engine.salary.entity.datacollection.param.AttendQuoteQueryParam; import com.engine.salary.entity.datacollection.po.AttendQuoteDataPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.AttendQuoteService; import org.apache.commons.collections4.CollectionUtils; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class AttendQuoteServiceImpl extends Service implements AttendQuoteService { private AttendQuoteBiz biz = new AttendQuoteBiz(); private AttendQuoteDataBiz dataBiz = new AttendQuoteDataBiz(); private AttendQuoteDataValueBiz dataValueBiz = new AttendQuoteDataValueBiz(); @Override public Map list(Map params) { return commandExecutor.execute(new AttendQuoteListCmd(params, user)); } @Override public String delete(Collection ids) { if (CollectionUtils.isEmpty(ids)) { throw new SalaryRunTimeException("参数错误"); } List attendQuotes = biz.list(AttendQuoteQueryParam.builder().ids(ids).build()); if (CollectionUtils.isEmpty(attendQuotes)) { throw new SalaryRunTimeException("要删除的数据不存在或已删除"); } List accountingAttendQuotes = attendQuotes.stream().filter(e -> e.getSalaryAccountingStatus().equals(1)).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(accountingAttendQuotes)) { throw new SalaryRunTimeException("已经核算完成的数据不能删除"); } List unAccountingIds = attendQuotes.stream().filter(e -> e.getSalaryAccountingStatus().equals(0)).map(AttendQuoteListDTO::getId).collect(Collectors.toList()); // 1.删除未核算的考勤引用 biz.deleteByIds(unAccountingIds); List attendQuoteDatas = dataBiz.listSome(AttendQuoteDataQueryParam.builder().unAccountingIds(unAccountingIds).build()); // 2.删除考核引用对应的考核数据 dataBiz.deleteByAttendQuoteIds(unAccountingIds); // 3.删除考核数据对应的考核值 List attendQuoteDataIds = attendQuoteDatas.stream().map(AttendQuoteDataPO::getId).collect(Collectors.toList()); dataValueBiz.deleteByAttendQuoteDataIds(attendQuoteDataIds); //todo 日志 // attendQuotes.forEach(e -> { // SalaryLoggerUtil.recordDeleteSingleLog(attendQuoteLoggerTemplate, // e.getId(), // SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85367, "考勤引用"), // SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100412, "删除考勤引用"), // SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 100412, "删除考勤引用") + // ":[" + SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 87614, "薪资所属月") + ":" + e.getSalaryYearMonth() + "," + // SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 87615, "关联账套") + ":" + e.getSalarySobName() + "]", // e); // }); return null; } // @Override // public WeaForm getSyncForm(Long employeeId, String tenantKey) { // // List salarySobOptions = Lists.newArrayList(); // List salarySobs = new LambdaQueryChainWrapper<>(salarySobMapper) // .eq(SalarySobPO::getTenantKey, tenantKey) // .eq(SalarySobPO::getDeleteType, 0) // .list(); // salarySobs.forEach(e -> { // salarySobOptions.add(new WeaFormOption(e.getId().toString(), e.getName())); // }); // // // 构建表单 // WeaForm weaForm = FormatManager.getInstance().genForm(AttendQuoteSyncDataFormDTO.class, AttendQuoteSyncDataFormDTO.builder().salarySobOptions(salarySobOptions).build()); // // WeaFormItem descriptionItem = weaForm.getItems().get("description"); // Map otherParams = Maps.newHashMap(); // otherParams.put("showCount", true); // otherParams.put("placeholder", SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 85987, "请输入")); // descriptionItem.setOtherParams(otherParams); // weaForm.getItems().put("description", descriptionItem); // // WeaFormItem salaryYearMonthItem = weaForm.getItems().get("salaryYearMonth"); // otherParams = Maps.newHashMap(); // otherParams.put("type", "month"); // salaryYearMonthItem.setOtherParams(otherParams); // weaForm.getItems().put("salaryYearMonth", salaryYearMonthItem); // // return weaForm; // } // // @Override // public Map getSalaryCycleAndAttendCycle(YearMonth salaryYearMonth, Long salarySobId, Long currentEmployeeId, String currentTenantKey) { // // SalarySobCycleDTO salarySobCycleDTO = salarySobService.getSalarySobCycle(salarySobId, salaryYearMonth, currentTenantKey); // // LocalDateRange salaryCycleRange = salarySobCycleDTO.getSalaryCycle(); // LocalDateRange attendCycleRange = salarySobCycleDTO.getAttendCycle(); // // Map salaryCycleAndAttendCycle = new HashMap<>(2); // salaryCycleAndAttendCycle.put("salaryCycle", salaryCycleRange.getFromDate() + " ~ " + salaryCycleRange.getEndDate()); // salaryCycleAndAttendCycle.put("attendCycle", attendCycleRange.getFromDate() + " ~ " + attendCycleRange.getEndDate()); // // return salaryCycleAndAttendCycle; // } // // @Override // public List> selectSalarySobList(Long currentEmployeeId, String currentTenantKey) { // List salarySobs = new LambdaQueryChainWrapper<>(salarySobMapper) // .eq(SalarySobPO::getTenantKey, TenantContext.getCurrentTenantKey()) // .eq(SalarySobPO::getDeleteType, 0) // .list(); // // return CollectionUtils.emptyIfNull(salarySobs).stream().map(m -> { // Map map = new HashMap<>(2); // map.put("id", String.valueOf(m.getId())); // map.put("content", m.getName()); // return map; // }).collect(Collectors.toList()); // } }