diff --git a/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/hr/EmployeeSalarySummary.java b/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/hr/EmployeeSalarySummary.java index f7a7420..dacfe91 100644 --- a/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/hr/EmployeeSalarySummary.java +++ b/jinbooks/jinbooks-core/src/main/java/com/jinbooks/entity/hr/EmployeeSalarySummary.java @@ -113,15 +113,5 @@ public class EmployeeSalarySummary extends BaseEntity { private String deleted; private String description; - /** - * 计提工资凭证编码 - */ - @TableField(updateStrategy = FieldStrategy.ALWAYS) - private String accrualVoucherId; - /** - * 发放工资凭证编码 - */ - @TableField(updateStrategy = FieldStrategy.ALWAYS) - private String salaryVoucherId; } diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/EmployeeSalarySummaryService.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/EmployeeSalarySummaryService.java index 6e8bb59..21923e6 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/EmployeeSalarySummaryService.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/EmployeeSalarySummaryService.java @@ -26,7 +26,6 @@ import com.jinbooks.entity.Message; import com.jinbooks.entity.hr.EmployeeSalarySummary; import com.jinbooks.entity.hr.dto.SalaryDetailPageDto; import com.jinbooks.entity.hr.dto.SalarySummaryChangeDto; -import com.jinbooks.entity.voucher.dto.GenerateVoucherDto; public interface EmployeeSalarySummaryService extends IService { @@ -34,7 +33,5 @@ public interface EmployeeSalarySummaryService extends IService> pageList(SalaryDetailPageDto dto); - Message generateVoucher(GenerateVoucherDto dto); - EmployeeSalarySummary selectSalarySummary(@Param("Dto") SalarySummaryChangeDto dto); } diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/EmployeeSalarySummaryServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/EmployeeSalarySummaryServiceImpl.java index fa42078..aa95153 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/EmployeeSalarySummaryServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/EmployeeSalarySummaryServiceImpl.java @@ -130,173 +130,11 @@ public class EmployeeSalarySummaryServiceImpl extends ServiceImpl generateVoucher(GenerateVoucherDto dto) { - String bookId = dto.getBookId(); - Book book = bookMapper.selectById(bookId); - Integer voucherType = dto.getVoucherType(); - EmployeeSalarySummary summary = super.getById(dto.getId()); - - if (voucherType == 0 && StringUtils.isNotBlank(summary.getAccrualVoucherId())) { - return Message.ok("计提凭证已生成"); - } else if (voucherType == 1 && StringUtils.isNotBlank(summary.getSalaryVoucherId())) { - return Message.ok("发放凭证已生成"); - } else if (voucherType == 2 && StringUtils.isNotBlank(summary.getAccrualVoucherId())) { - return Message.ok("收票(兼职)凭证已生成"); - } else if (voucherType == 3 && StringUtils.isNotBlank(summary.getSalaryVoucherId())) { - return Message.ok("发放(兼职)凭证已生成"); - } - - YearMonth currentTerm = YearMonth.parse(configSysService.getCurrentTerm(dto.getBookId())); - - Date currentTermLastDate = configSysService.getCurrentTermLastDate(dto.getBookId()); - - List rules = getSalaryVoucherRules(bookId, voucherType); - BigDecimal debitAmount = BigDecimal.ZERO; - BigDecimal creditAmount = BigDecimal.ZERO; - - List voucherItems = new ArrayList<>(); - - for (EmployeeSalaryVoucherRule rule : rules) { - rule.setSummary(generateVoucherItemSummary(rule.getSummary(), currentTerm.getYear(), currentTerm.getMonthValue())); - - String selectedValue = rule.getSelectedValue(); - SalaryVoucherTemplateEnum matchedEnum = SalaryVoucherTemplateEnum.fromValue(selectedValue); - if (matchedEnum == null) { - throw new BusinessException(50001, "凭证模板明细数据有误,请联系管理员"); - } - - BigDecimal amount = switch (matchedEnum) { - case COMPANY_COSTS -> summary.getBusinessExpenditureCosts(); - case SALARY_PAYABLE -> summary.getTotalAmount().add(summary.getTotalSocialInsurance()).add(summary.getProvidentFund()).add(summary.getPersonalTax()); - case ACTUAL_SALARY -> summary.getTotalAmount(); - case PERSONAL_INCOME_TAX -> summary.getPersonalTax(); - case PERSONAL_WITHHOLDING_SOCIAL_SECURITY -> summary.getTotalSocialInsurance(); - case PERSONAL_WITHHOLDING_PROVIDENT_FUND -> summary.getProvidentFund(); - case ENTERPRISES_PAY_SOCIAL_INSURANCE -> summary.getBusinessSocialInsurance(); - case PROVIDENT_FUND_PAID_BY_ENTERPRISES -> summary.getBusinessProvidentFund(); - }; - - boolean isDebit = "1".equals(rule.getDirection()); - voucherItems.add(createVoucherItemDto(bookId, rule, isDebit, amount)); - - if (isDebit) { - debitAmount = debitAmount.add(amount); - } else { - creditAmount = creditAmount.add(amount); - } - } - - if (debitAmount.compareTo(creditAmount) != 0) { - throw new BusinessException(50001, "借贷不平衡,请调整工资凭证模板"); - } - - VoucherChangeDto voucherChangeDto = createVoucherChangeDto(book, bookId, currentTermLastDate, currentTerm.getYear(), currentTerm.getMonthValue(), debitAmount); - voucherChangeDto.setRemark(rules.get(0).getSummary()); - voucherChangeDto.setItems(voucherItems); - voucherChangeDto.setStatus(VoucherStatusEnum.DRAFT.getValue()); - - voucherService.save(voucherChangeDto); - - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - if (voucherType == 0 || voucherType == 2) { - updateWrapper.set(EmployeeSalarySummary::getAccrualVoucherId, voucherChangeDto.getId()); - } else if (voucherType == 1 || voucherType == 3) { - updateWrapper.set(EmployeeSalarySummary::getSalaryVoucherId, voucherChangeDto.getId()); - } - updateWrapper.eq(EmployeeSalarySummary::getId, dto.getId()); - super.update(updateWrapper); - - return Message.ok(voucherChangeDto.getId()); - } - - - public String generateVoucherItemSummary(String summary, int year, int month) { - return summary.replace("{yy}", (year + "").substring(2)).replace("{yyyy}", year + "").replace("{mm}", month + ""); - } - - /** - * Creates the voucher change dto with common fields - */ - private VoucherChangeDto createVoucherChangeDto(Book book, String bookId, - Date voucherDate, Integer year, Integer month, BigDecimal amount) { - - Integer wordNum = voucherService.getAbleWordNum(bookId, "记", null, null).getData(); - - VoucherChangeDto dto = new VoucherChangeDto(); - dto.setWordHead("记"); - dto.setWordNum(wordNum); - dto.setBookId(bookId); - dto.setCompanyName(book.getCompanyName()); - dto.setVoucherDate(voucherDate); - dto.setVoucherYear(year); - dto.setVoucherMonth(month); - dto.setDebitAmount(amount); - dto.setCreditAmount(amount); - - return dto; - } - - /** - * Creates a voucher item dto based on rule and direction - */ - private VoucherItemChangeDto createVoucherItemDto(String bookId, - EmployeeSalaryVoucherRule rule, boolean isDebit, BigDecimal amount) { - - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(BookSubject::getBookId, bookId); - wrapper.eq(BookSubject::getCode, rule.getSubjectCode()); - BookSubject bookSubject = bookSubjectMapper.selectOne(wrapper); - - if (Objects.isNull(bookSubject)) { - throw new BusinessException(50001, "查询不到该工资凭证规则设置的账套科目,请检查。"); - } - - VoucherItemChangeDto itemDto = new VoucherItemChangeDto(); - itemDto.setSummary(rule.getSummary()); - itemDto.setSubjectId(bookSubject.getId()); - if (isDebit) { - itemDto.setDebitAmount(amount); - } else { - itemDto.setCreditAmount(amount); - } - itemDto.setAuxiliary(List.of()); - itemDto.setSubjectCode(bookSubject.getCode()); - itemDto.setSubjectName(bookSubject.getCode() + "-" + bookSubject.getName()); - itemDto.setDetailedAccounts(""); -// itemDto.setSubjectBalance(BigDecimal.ZERO); - - return itemDto; - } + @Override public EmployeeSalarySummary selectSalarySummary(SalarySummaryChangeDto dto) { return this.baseMapper.selectSalarySummary(dto); } - private List getSalaryVoucherRules(String bookId, Integer voucherType) { - List employeeSalaryVoucherRuleTemplates = employeeSalaryVoucherRuleTemplateMapper.selectList(Wrappers.lambdaQuery() - .eq(EmployeeSalaryVoucherRuleTemplate::getBookId, bookId) - .eq(EmployeeSalaryVoucherRuleTemplate::getStatus, 1) - .eq(EmployeeSalaryVoucherRuleTemplate::getVoucherType, voucherType)); - if (ObjectUtils.isEmpty(employeeSalaryVoucherRuleTemplates)) { - if (Objects.equals(voucherType, 0)) { - throw new BusinessException(50001, "缺少计提工资凭证模板,请先在工资凭证规则处生成"); - } else { - throw new BusinessException(50001, "缺少发放工资凭证模板,请先在工资凭证规则处生成"); - } - } - - String id = employeeSalaryVoucherRuleTemplates.get(0).getId(); - List employeeSalaryVoucherRules = employeeSalaryVoucherRuleMapper.selectList(Wrappers.lambdaQuery() - .eq(EmployeeSalaryVoucherRule::getTemplateId, id)); - - if (employeeSalaryVoucherRules.size() < 2) { - throw new BusinessException(50001, "请添加模板明细数据"); - } - - return employeeSalaryVoucherRules; - } - } diff --git a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java index b7a0b57..f0111fb 100644 --- a/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java +++ b/jinbooks/jinbooks-persistence/src/main/java/com/jinbooks/persistence/service/impl/VoucherServiceImpl.java @@ -29,7 +29,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jinbooks.entity.Message; import com.jinbooks.entity.book.Book; import com.jinbooks.entity.book.BookSubject; -import com.jinbooks.entity.hr.EmployeeSalarySummary; import com.jinbooks.entity.idm.UserInfo; import com.jinbooks.entity.voucher.*; import com.jinbooks.entity.voucher.dto.*; @@ -705,23 +704,6 @@ public class VoucherServiceImpl extends ServiceImpl impl ); } - //删除工资凭证关联 - //计提 - List employeeSalarySummariesAccrual = employeeSalarySummaryMapper.selectList(Wrappers.lambdaQuery() - .in(EmployeeSalarySummary::getAccrualVoucherId, ids)); - if (ObjectUtils.isNotEmpty(employeeSalarySummariesAccrual)) { - employeeSalarySummariesAccrual.forEach(item -> item.setAccrualVoucherId(null)); - } - employeeSalarySummaryMapper.updateById(employeeSalarySummariesAccrual); - - //发放 - List employeeSalarySummaries = employeeSalarySummaryMapper.selectList(Wrappers.lambdaQuery() - .in(EmployeeSalarySummary::getSalaryVoucherId, ids)); - if (ObjectUtils.isNotEmpty(employeeSalarySummaries)) { - employeeSalarySummaries.forEach(item -> item.setSalaryVoucherId(null)); - } - employeeSalarySummaryMapper.updateById(employeeSalarySummaries); - // 删除凭证项 voucherItemMapper.delete(new LambdaUpdateWrapper().in(VoucherItem::getVoucherId, ids)); voucherItemAuxiliaryMapper.delete(new LambdaQueryWrapper().in(VoucherAuxiliary::getVoucherId, ids)); diff --git a/jinbooks/jinbooks-web/src/main/java/com/jinbooks/web/hr/controller/EmployeeSalarySummaryController.java b/jinbooks/jinbooks-web/src/main/java/com/jinbooks/web/hr/controller/EmployeeSalarySummaryController.java index 878e31b..0bec4ee 100644 --- a/jinbooks/jinbooks-web/src/main/java/com/jinbooks/web/hr/controller/EmployeeSalarySummaryController.java +++ b/jinbooks/jinbooks-web/src/main/java/com/jinbooks/web/hr/controller/EmployeeSalarySummaryController.java @@ -25,7 +25,6 @@ import com.jinbooks.entity.hr.EmployeeSalarySummary; import com.jinbooks.entity.hr.dto.SalaryDetailPageDto; import com.jinbooks.entity.hr.dto.SalarySummaryChangeDto; import com.jinbooks.entity.idm.UserInfo; -import com.jinbooks.entity.voucher.dto.GenerateVoucherDto; import com.jinbooks.persistence.service.EmployeeSalarySummaryService; import com.jinbooks.validate.AddGroup; import lombok.RequiredArgsConstructor; @@ -79,9 +78,4 @@ public class EmployeeSalarySummaryController { return Message.ok(employeeSalarySummaryService.selectSalarySummary(dto)); } - @PostMapping("/generate-voucher") - public Message generateVoucher(@Validated @RequestBody GenerateVoucherDto dto, @CurrentUser UserInfo currentUser) { - dto.setBookId(currentUser.getBookId()); - return employeeSalarySummaryService.generateVoucher(dto); - } }