From 5d0b8e7759a3359e8364af14c9d46eccee9b06e2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 18 Mar 2024 14:01:08 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=E5=AF=BC=E5=87=BAexcel=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AddUpDeductionServiceImpl.java | 47 ++--- .../impl/AddUpSituationServiceImpl.java | 92 +++++----- .../impl/AttendQuoteDataServiceImpl.java | 12 +- .../impl/OtherDeductionServiceImpl.java | 40 +++-- .../service/impl/SIExportServiceImpl.java | 11 +- .../service/impl/SISchemeServiceImpl.java | 6 +- .../impl/SalaryArchiveServiceImpl.java | 37 ++-- .../impl/SpecialAddDeductionServiceImpl.java | 64 +++---- .../impl/TaxDeclarationExcelServiceImpl.java | 46 ++++- .../engine/salary/util/excel/ExcelUtil.java | 163 ++++++++++++++++++ .../salary/util/excel/ExcelUtilPlus.java | 114 ++++++++++++ 11 files changed, 494 insertions(+), 138 deletions(-) diff --git a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java index f2bf7b9d8..245b06860 100644 --- a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.util.ConditionFactory; @@ -63,6 +64,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.*; import java.util.*; @@ -1048,11 +1050,11 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction //获取操作按钮资源 - List> rowList = getExcelRowDetailList(isChief, queryParam); + List> rowList = getExcelRowDetailList(isChief, queryParam); //获取excel - return ExcelUtil.genWorkbook(rowList, "累计专项附加扣除明细"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "累计专项附加扣除明细", 2); } @@ -1062,32 +1064,33 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction * @param param * @return */ - private List> getExcelRowDetailList(boolean isChief, AddUpDeductionQueryParam param) { + private List> getExcelRowDetailList(boolean isChief, AddUpDeductionQueryParam param) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "工号", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); + List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "工号", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计婴幼儿照护"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //查询详细信息 List list = new AddUpDeductionBiz().recordList(param); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : Util.null2String(dto.getAddUpChildEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) :Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) :Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) :Util.null2String(dto.getAddUpHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) :Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) :Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) :Util.null2String(dto.getAddUpInfantCare())); + return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -1107,7 +1110,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction } - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -1195,7 +1198,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction SalaryElogConfig.addUpDeductionLoggerTemplate.write(loggerContext); //获取excel - return ExcelUtil.genWorkbookV2(rowList, "累计专项附加扣除"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "累计专项附加扣除", 2); } private List> getLists(AddUpDeductionQueryParam param) { @@ -1230,13 +1233,13 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : Util.null2String(dto.getAddUpChildEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) :Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) :Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) :Util.null2String(dto.getAddUpHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) :Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) :Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) :Util.null2String(dto.getAddUpInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index 9c7994261..c7bc48d87 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.util.ConditionFactory; @@ -7,9 +8,9 @@ import com.api.browser.util.ConditionType; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.AddUpSituationBiz; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -57,6 +58,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.YearMonth; @@ -276,7 +278,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation SalaryElogConfig.addUpSituationLoggerTemplate.write(loggerContext); // 获取excel - return ExcelUtil.genWorkbookV2(rowList, "累计情况"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "累计情况", 2); } @@ -320,24 +322,24 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getAddUpIncome())); - cellList.add(Util.null2String(dto.getAddUpSubtraction())); - cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); - cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); - cellList.add(Util.null2String(dto.getAddUpPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : Util.null2String(dto.getAddUpIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : Util.null2String(dto.getAddUpSubtraction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : Util.null2String(dto.getAddUpSocialSecurityTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : Util.null2String(dto.getAddUpChildEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) : Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) : Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) : Util.null2String(dto.getAddUpHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) : Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) : Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) : Util.null2String(dto.getAddUpInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getAddUpPrivatePension()) ? new BigDecimal(dto.getAddUpPrivatePension()) : Util.null2String(dto.getAddUpPrivatePension())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -354,10 +356,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation * @param param * @return */ - private List> getExcelRowDetailList(AddUpSituationQueryParam param) { + private List> getExcelRowDetailList(AddUpSituationQueryParam param) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", "累计社保个人合计", + List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", "累计社保个人合计", "累计公积金个人合计", "累计子女教育", "累计继续教育", "累计住房贷款利息", "累计住房租金", "累计赡养老人", "累计大病医疗", "累计企业(职业)年金及其他福利", "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "累计婴幼儿照护", "累计个人养老金"); @@ -373,39 +375,39 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) ).collect(Collectors.toList()); } - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxYearMonth() == null ? "" : formatter.format(dto.getTaxYearMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpIncome())); - cellList.add(Util.null2String(dto.getAddUpSubtraction())); - cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); - cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); - cellList.add(Util.null2String(dto.getAddUpPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : dto.getAddUpIncome()); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : dto.getAddUpSubtraction()); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : dto.getAddUpSocialSecurityTotal()); + cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : dto.getAddUpAccumulationFundTotal()); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : dto.getAddUpChildEducation()); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) : dto.getAddUpContinuingEducation()); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) : dto.getAddUpHousingLoanInterest()); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) : dto.getAddUpHousingRent()); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) : dto.getAddUpSupportElderly()); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) : dto.getAddUpIllnessMedical()); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : dto.getAddUpEnterpriseAndOther()); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : dto.getAddUpOtherDeduction()); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : dto.getAddUpTaxExemptIncome()); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : dto.getAddUpAllowedDonation()); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : dto.getAddUpTaxSavings()); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : dto.getAddUpAdvanceTax()); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) : dto.getAddUpInfantCare()); + cellList.add(NumberUtil.isNumber(dto.getAddUpPrivatePension()) ? new BigDecimal(dto.getAddUpPrivatePension()) : dto.getAddUpPrivatePension()); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -441,10 +443,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation } //获取操作按钮资源 - List> rowList = getExcelRowDetailList(queryParam); + List> rowList = getExcelRowDetailList(queryParam); //获取excel - return ExcelUtil.genWorkbook(rowList, "累计情况明细"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "累计情况明细", 2); } diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 9216e7841..e83195dcf 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.api.formmode.mybatis.util.SqlProxyHandle; @@ -268,7 +269,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // 动态列 for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { - row.add(dto.get(attendQuoteField.getId().toString() + "_attendQuoteData")); + Object o = dto.get(attendQuoteField.getId().toString() + "_attendQuoteData"); + try { + if (o != null && NumberUtil.isNumber(o.toString())) { + row.add(new BigDecimal(o.toString())); + } else { + row.add(o); + } + } catch (Exception e) { + row.add(o); + } } rows.add(row); } diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index 6ac7b89cf..bb21a8381 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -1,13 +1,14 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSONObject; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.OtherDeductionBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -54,6 +55,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.YearMonth; @@ -489,7 +491,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction SalaryElogConfig.otherDeductionLoggerTemplate.write(loggerContext); //获取excel - return ExcelUtil.genWorkbookV2(rowList, "其他免税扣除"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "其他免税扣除", 2); } @@ -533,11 +535,11 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getBusinessHealthyInsurance())); - cellList.add(Util.null2String(dto.getTaxDelayEndowmentInsurance())); - cellList.add(Util.null2String(dto.getOtherDeduction())); - cellList.add(Util.null2String(dto.getDeductionAllowedDonation())); - cellList.add(Util.null2String(dto.getPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); + cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); + cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getDeductionAllowedDonation()) ? new BigDecimal(dto.getDeductionAllowedDonation()) : Util.null2String(dto.getDeductionAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getPrivatePension()) ? new BigDecimal(dto.getPrivatePension()) : Util.null2String(dto.getPrivatePension())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -585,10 +587,10 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction //获取操作按钮资源 - List> rowList = getExcelRowDetailList(param); + List> rowList = getExcelRowDetailList(param); //获取excel - return ExcelUtil.genWorkbook(rowList, "其他免税扣除明细"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "其他免税扣除明细", 2); } @@ -598,34 +600,34 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction * @param param * @return */ - private List> getExcelRowDetailList(OtherDeductionQueryParam param) { + private List> getExcelRowDetailList(OtherDeductionQueryParam param) { //excel标题 - List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); + List title = Arrays.asList("姓名", "申报月份", "个税扣缴义务人", "部门", "手机号", "工号", "商业健康保险", "税延养老保险", "其他", "准予扣除的捐赠额", "个人养老金"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //查询详细信息 List list = getOtherDeductionMapper().recordList(param); encryptUtil.decryptList(list, OtherDeductionRecordDTO.class); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getBusinessHealthyInsurance())); - cellList.add(Util.null2String(dto.getTaxDelayEndowmentInsurance())); - cellList.add(Util.null2String(dto.getOtherDeduction())); - cellList.add(Util.null2String(dto.getDeductionAllowedDonation())); - cellList.add(Util.null2String(dto.getPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); + cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); + cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getDeductionAllowedDonation()) ? new BigDecimal(dto.getDeductionAllowedDonation()) : Util.null2String(dto.getDeductionAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getPrivatePension()) ? new BigDecimal(dto.getPrivatePension()) : Util.null2String(dto.getPrivatePension())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 3c2ab86c4..0f0cdf7a7 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -47,6 +47,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.general.BaseBean; import weaver.hrm.User; +import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -250,7 +251,15 @@ public class SIExportServiceImpl extends Service implements SIExportService { for (Map recordData : records) { List row = new LinkedList<>(); for (WeaTableColumn column : columns) { - row.add(recordData.get(column.getColumn())); + try { + if (column.getText().contains("个人") || column.getText().contains("单位") || column.getText().contains("合计")) { + row.add(new BigDecimal(recordData.get(column.getColumn()).toString())); + } else { + row.add(recordData.get(column.getColumn())); + } + } catch (Exception e) { + row.add(recordData.get(column.getColumn())); + } } rows.add(row); } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 66945d79b..b0eefa1c6 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -623,7 +623,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { for (WeaTableColumn column : columns) { try { Object o = recordData.get(column.getColumn()); - row.add(o.toString()); + if (column.getText().contains("申报基数") && StringUtils.isNotBlank(o.toString())) { + row.add(new BigDecimal(o.toString())); + } else { + row.add(o.toString()); + } } catch (Exception e) { row.add(""); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index e492cbd16..fb261cb86 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -3,12 +3,13 @@ package com.engine.salary.service.impl; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.*; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.constant.SalaryItemConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryarchive.bo.SalaryArchiveBO; @@ -28,6 +29,7 @@ import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryarchive.*; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; @@ -68,6 +70,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; @@ -520,18 +523,20 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe String sheetName = SalaryI18nUtil.getI18nLabel(85368, "薪资档案"); // 获取所有可被引用的薪资项目 List salaryItems = salaryItemMapper.getCanAdjustSalaryItems(); - String[] header = {SalaryI18nUtil.getI18nLabel(85429, "姓名"), - SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), - SalaryI18nUtil.getI18nLabel(86185, "部门"), - SalaryI18nUtil.getI18nLabel(86176, "工号"), - SalaryI18nUtil.getI18nLabel(86186, "手机号"), - SalaryI18nUtil.getI18nLabel(15890, "员工状态"), - SalaryI18nUtil.getI18nLabel(91075, "起始发薪日期"), - SalaryI18nUtil.getI18nLabel(91075, "最后发薪日期")}; + Object[] header = { + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86176, "工号"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86186, "手机号"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(15890, "员工状态"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(91075, "起始发薪日期"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(91075, "最后发薪日期"), "", "", 0) + }; // 2.表头 List headerList = new ArrayList<>(Arrays.asList(header)); for (SalaryItemPO salaryItem : salaryItems) { - headerList.add(salaryItem.getName()); + headerList.add(new WeaTableColumnGroup("150px", salaryItem.getName(), "", "", salaryItem.getPattern())); } // 获取所有个税扣缴义务人 @@ -585,7 +590,15 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe row.add(Util.null2String(e.get("payEndDate"))); // 薪资项目数据 for (SalaryItemPO salaryItem : salaryItems) { - row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + try { + if (salaryItem.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { + row.add(new BigDecimal(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : "")); + } else { + row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + } + } catch (Exception ex) { + row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + } } rows.add(row); }); @@ -603,7 +616,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "薪资档案") + "-" + name); loggerContext.setUser(user); SalaryElogConfig.salaryArchiveLoggerTemplate.write(loggerContext); - return ExcelUtilPlus.genWorkbookV2(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2WithPattern(rows, sheetName); } diff --git a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java index cd8cc1c83..43d8e13c7 100644 --- a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java @@ -1,12 +1,13 @@ package com.engine.salary.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.SpecialAddDeductionBiz; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -53,6 +54,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.YearMonth; import java.util.*; @@ -370,7 +372,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd public XSSFWorkbook export(SpecialAddDeductionQueryParam param, boolean isTemplate) { //获取操作按钮资源 - List> rowList = getExcelRowList(param, isTemplate); + List> rowList = getExcelRowList(param, isTemplate); // 记录操作日志 String name = SalaryI18nUtil.getI18nLabel(0, "导出"); @@ -383,7 +385,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd SalaryElogConfig.specialAddDeductionLoggerTemplate.write(loggerContext); //获取excel - return ExcelUtil.genWorkbook(rowList, "专项附加免税扣除"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "专项附加免税扣除", 2); } @@ -392,16 +394,16 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd * * @return 导出数据行集合 */ - private List> getExcelRowList(SpecialAddDeductionQueryParam param, boolean isTemplate) { + private List> getExcelRowList(SpecialAddDeductionQueryParam param, boolean isTemplate) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "子女教育", "继续教育", "住房贷款利息", "住房租金", "赡养老人", "大病医疗", "婴幼儿照护"); + List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "入职日期", "子女教育", "继续教育", "住房贷款利息", "住房租金", "赡养老人", "大病医疗", "婴幼儿照护"); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); if (!isTemplate || param.isHasData()) { // 非下载导入模版,查询数据填充 - List> dataRowList = queryInfoForExcel(param, rowList); + List> dataRowList = queryInfoForExcel(param, rowList); rowList.addAll(dataRowList); } return rowList; @@ -438,10 +440,10 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd //获取操作按钮资源 - List> rowList = getExcelRowDetailList(param); + List> rowList = getExcelRowDetailList(param); //获取excel - return ExcelUtil.genWorkbook(rowList, "专项附加扣除明细"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "专项附加扣除明细", 2); } @@ -451,35 +453,35 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd * @param param * @return */ - private List> getExcelRowDetailList(SpecialAddDeductionQueryParam param) { + private List> getExcelRowDetailList(SpecialAddDeductionQueryParam param) { //excel标题 - List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "子女教育", "继续教育", "住房贷款利息", "住房租金", "赡养老人", "大病医疗", "婴幼儿照护"); + List title = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "子女教育", "继续教育", "住房贷款利息", "住房租金", "赡养老人", "大病医疗", "婴幼儿照护"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //查询详细信息 List list = getSpecialAddDeductionBiz().listDTOByParam(param); encryptUtil.decryptList(list, SpecialAddDeductionRecordDTO.class); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getChildrenEducation())); - cellList.add(Util.null2String(dto.getContinuingEducation())); - cellList.add(Util.null2String(dto.getHousingLoanInterest())); - cellList.add(Util.null2String(dto.getHousingRent())); - cellList.add(Util.null2String(dto.getSupportingElder())); - cellList.add(Util.null2String(dto.getSeriousIllnessTreatment())); - cellList.add(Util.null2String(dto.getInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getChildrenEducation()) ? new BigDecimal(dto.getChildrenEducation()) : Util.null2String(dto.getChildrenEducation())); + cellList.add(NumberUtil.isNumber(dto.getContinuingEducation()) ? new BigDecimal(dto.getContinuingEducation()) : Util.null2String(dto.getContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getHousingLoanInterest()) ? new BigDecimal(dto.getHousingLoanInterest()) : Util.null2String(dto.getHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getHousingRent()) ? new BigDecimal(dto.getHousingRent()) : Util.null2String(dto.getHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getSupportingElder()) ? new BigDecimal(dto.getSupportingElder()) : Util.null2String(dto.getSupportingElder())); + cellList.add(NumberUtil.isNumber(dto.getSeriousIllnessTreatment()) ? new BigDecimal(dto.getSeriousIllnessTreatment()) : Util.null2String(dto.getSeriousIllnessTreatment())); + cellList.add(NumberUtil.isNumber(dto.getInfantCare()) ? new BigDecimal(dto.getInfantCare()) : Util.null2String(dto.getInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -699,7 +701,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd return CollUtil.isNotEmpty(specialAddDeductionRecordDTOList) ? specialAddDeductionRecordDTOList.get(0) : null; } - private List> queryInfoForExcel(SpecialAddDeductionQueryParam param, List> rowList) { + private List> queryInfoForExcel(SpecialAddDeductionQueryParam param, List> rowList) { //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); param.setOrderRule(orderRule); @@ -708,10 +710,10 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd putQueryRange(param); } List list = getSpecialAddDeductionBiz().listByParam(param); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); @@ -719,13 +721,13 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getChildrenEducation())); - cellList.add(Util.null2String(dto.getContinuingEducation())); - cellList.add(Util.null2String(dto.getHousingLoanInterest())); - cellList.add(Util.null2String(dto.getHousingRent())); - cellList.add(Util.null2String(dto.getSupportingElder())); - cellList.add(Util.null2String(dto.getSeriousIllnessTreatment())); - cellList.add(Util.null2String(dto.getInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getChildrenEducation()) ? new BigDecimal(dto.getChildrenEducation()) : Util.null2String(dto.getChildrenEducation())); + cellList.add(NumberUtil.isNumber(dto.getContinuingEducation()) ? new BigDecimal(dto.getContinuingEducation()) : Util.null2String(dto.getContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getHousingLoanInterest()) ? new BigDecimal(dto.getHousingLoanInterest()) : Util.null2String(dto.getHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getHousingRent()) ? new BigDecimal(dto.getHousingRent()) : Util.null2String(dto.getHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getSupportingElder()) ? new BigDecimal(dto.getSupportingElder()) : Util.null2String(dto.getSupportingElder())); + cellList.add(NumberUtil.isNumber(dto.getSeriousIllnessTreatment()) ? new BigDecimal(dto.getSeriousIllnessTreatment()) : Util.null2String(dto.getSeriousIllnessTreatment())); + cellList.add(NumberUtil.isNumber(dto.getInfantCare()) ? new BigDecimal(dto.getInfantCare()) : Util.null2String(dto.getInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 784433e6c..16b4c3006 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.config.SalaryElogConfig; import com.engine.hrmelog.entity.dto.LoggerContext; +import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationAnnualListDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; @@ -28,9 +29,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.math.BigDecimal; +import java.util.*; /** * 个税申报表导出 @@ -74,6 +74,16 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List> rows = Lists.newArrayListWithExpectedSize(count); List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); + List NumberCode = Arrays.asList(TaxDeclarationDataIndexConstant.INCOME, TaxDeclarationDataIndexConstant.TAX_FREE_INCOME, + TaxDeclarationDataIndexConstant.ENDOWMENT_INSURANCE, TaxDeclarationDataIndexConstant.MEDICAL_INSURANCE, TaxDeclarationDataIndexConstant.UNEMPLOYMENT_INSURANCE, + TaxDeclarationDataIndexConstant.HOUSING_PROVIDENT_FUND, TaxDeclarationDataIndexConstant.ADD_UP_CHILD_EDUCATION, TaxDeclarationDataIndexConstant.ADD_UP_CONTINUING_EDUCATION, + TaxDeclarationDataIndexConstant.ADD_UP_HOUSING_LOAN_INTEREST, TaxDeclarationDataIndexConstant.ADD_UP_HOUSING_RENT, TaxDeclarationDataIndexConstant.ADD_UP_SUPPORT_ELDERLY, + TaxDeclarationDataIndexConstant.ADD_UP_ILLNESS_MEDICAL, TaxDeclarationDataIndexConstant.ADD_UP_INFANT_CARE, TaxDeclarationDataIndexConstant.ADD_UP_PRIVATE_PENSION, + TaxDeclarationDataIndexConstant.ANNUITY, TaxDeclarationDataIndexConstant.COMMERCIAL_HEALTH_INSURANCE, TaxDeclarationDataIndexConstant.TAX_DEFERRED_ENDOWMENT_INSURANCE, + TaxDeclarationDataIndexConstant.OTHER, TaxDeclarationDataIndexConstant.ALLOWED_DONATION, TaxDeclarationDataIndexConstant.TAX_DEDUCTION, + TaxDeclarationDataIndexConstant.LABOR_INCOME, TaxDeclarationDataIndexConstant.LABOR_TAX_FREE_INCOME, TaxDeclarationDataIndexConstant.ANNUAL_INCOME, + TaxDeclarationDataIndexConstant.ANNUAL_TAX_FREE_INCOME, TaxDeclarationDataIndexConstant.ANNUAL_OTHER, TaxDeclarationDataIndexConstant.ANNUAL_DONATE_TAX, + TaxDeclarationDataIndexConstant.ANNUAL_TAX_SAVINGS); if (Objects.equals(taxDeclarationPO.getIncomeCategory(), IncomeCategoryEnum.WAGES_AND_SALARIES.getValue())) { // 解析表头 ExcelUtil.parseHeader(TaxDeclarationWageListDTO.class, headerList, dataIndexList); @@ -89,7 +99,15 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List row = Lists.newArrayListWithExpectedSize(dataIndexList.size()); Map map = JsonUtil.parseMap(taxDeclarationWageListDTO, Object.class); for (String dataIndex : dataIndexList) { - row.add(map.get(dataIndex)); + try { + if (NumberCode.contains(dataIndex)) { + row.add(new BigDecimal(map.get(dataIndex).toString())); + } else { + row.add(map.get(dataIndex)); + } + } catch (Exception e) { + row.add(map.get(dataIndex)); + } } rows.add(row); } @@ -110,7 +128,15 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List row = Lists.newArrayListWithExpectedSize(dataIndexList.size()); Map map = JsonUtil.parseMap(taxDeclarationLaborListDTO, Object.class); for (String dataIndex : dataIndexList) { - row.add(map.get(dataIndex)); + try { + if (NumberCode.contains(dataIndex)) { + row.add(new BigDecimal(map.get(dataIndex).toString())); + } else { + row.add(map.get(dataIndex)); + } + } catch (Exception e) { + row.add(map.get(dataIndex)); + } } rows.add(row); } @@ -132,7 +158,15 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List row = Lists.newArrayListWithExpectedSize(dataIndexList.size()); Map map = JsonUtil.parseMap(taxDeclarationLaborListDTO, Object.class); for (String dataIndex : dataIndexList) { - row.add(map.get(dataIndex)); + try { + if (NumberCode.contains(dataIndex)) { + row.add(new BigDecimal(map.get(dataIndex).toString())); + } else { + row.add(map.get(dataIndex)); + } + } catch (Exception e) { + row.add(map.get(dataIndex)); + } } rows.add(row); } diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index 2a482e42d..5b7410994 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -10,6 +10,7 @@ import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.*; +import org.springframework.beans.BeanUtils; import java.awt.*; import java.beans.BeanInfo; @@ -17,11 +18,15 @@ import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class ExcelUtil { + /** * 生成excel * @@ -76,6 +81,82 @@ public class ExcelUtil { return workbook; } + // 设置默认舍入位数,可设为null + public static XSSFWorkbook genWorkbookWithDefaultPattern(List> rowList, String sheetName, Integer defaultPattern) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 设置title样式 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setFontName("仿宋"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景色 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + + // 设置主体样式 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("宋体"); + font.setFontHeightInPoints((short) 10);// 设置字体大小 + cellStyle.setFont(font);// 选择需要用到的字体格式 + cellStyle.setWrapText(true); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //自适应宽度 + sheet.autoSizeColumn(0, true); + //默认列宽 + sheet.setDefaultColumnWidth(20); + //默认行高 + sheet.setDefaultRowHeightInPoints(18); + + + XSSFCellStyle numberCellStyle = null; + if (defaultPattern != null) { + XSSFDataFormat df = workbook.createDataFormat(); + String start = "0."; + if (defaultPattern.equals(0)) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(defaultPattern).collect(Collectors.joining()) + "_ "); + numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + } + + for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + cell.setCellType(CellType.STRING); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } else { + cell.setCellStyle(cellStyle); + } + Object o = infoList.get(cellIndex); + if (o instanceof String) { + cell.setCellType(CellType.STRING); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + if (defaultPattern != null) { + cell.setCellStyle(numberCellStyle); + } + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } +// sheet.setColumnWidth(cellIndex, 35 * 256); + } + } + return workbook; + } + public static XSSFWorkbook genWorkbook(String sheetName, List rowList) { List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); @@ -156,6 +237,88 @@ public class ExcelUtil { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + } else if (o instanceof Boolean) { + cell.setCellType(CellType.BOOLEAN); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + } + } + return workbook; + } + + // 设置默认舍入位数,可传null + public static XSSFWorkbook genWorkbookV2WithDefaultPattern(List> rowList, String sheetName, Integer defaultPattern) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 设置title样式 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setFontName("仿宋"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景色 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + + // 设置主体样式 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("宋体"); + font.setFontHeightInPoints((short) 10);// 设置字体大小 + cellStyle.setFont(font);// 选择需要用到的字体格式 + cellStyle.setWrapText(true); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //自适应宽度 + sheet.autoSizeColumn(0, true); + //默认列宽 + sheet.setDefaultColumnWidth(20); + //默认行高 + sheet.setDefaultRowHeightInPoints(18); + + XSSFCellStyle numberCellStyle = null; + if (defaultPattern != null) { + XSSFDataFormat df = workbook.createDataFormat(); + String start = "0."; + if (defaultPattern.equals(0)) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(defaultPattern).collect(Collectors.joining()) + "_ "); + numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + } + + for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } else { + cell.setCellStyle(cellStyle); + } + Object o = infoList.get(cellIndex); + if (o instanceof String) { + cell.setCellType(CellType.STRING); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + if (defaultPattern != null) { + cell.setCellStyle(numberCellStyle); + } } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index b9aee0531..bfb2cf92e 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -70,6 +70,114 @@ public class ExcelUtilPlus { } + public static XSSFWorkbook genWorkbookV2WithPattern(List> rowList, String sheetName) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 设置title样式 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setBold(true); + titleFont.setFontName("仿宋"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景色 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + titleCellStyle.setBorderLeft(BorderStyle.THIN); + titleCellStyle.setBorderRight(BorderStyle.THIN); + titleCellStyle.setBorderTop(BorderStyle.THIN); + titleCellStyle.setBorderBottom(BorderStyle.THIN); + + + // 设置主体样式 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("宋体"); + font.setFontHeightInPoints((short) 10);// 设置字体大小 + cellStyle.setFont(font);// 选择需要用到的字体格式 + cellStyle.setWrapText(true); + cellStyle.setBorderLeft(BorderStyle.THIN); + cellStyle.setBorderRight(BorderStyle.THIN); + cellStyle.setBorderTop(BorderStyle.THIN); + cellStyle.setBorderBottom(BorderStyle.THIN); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //自适应宽度 + sheet.autoSizeColumn(0, true); + //默认列宽 + sheet.setDefaultColumnWidth(20); + //默认行高 + sheet.setDefaultRowHeightInPoints(18); + //遍历设置列宽 + List header = rowList.get(0); + List patternList = new ArrayList<>(); + XSSFRow row0 = sheet.createRow(0); + for (int i = 0; i < header.size(); i++) { + WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) header.get(i); + XSSFCell rowZeroCell = row0.createCell(i, CellType.STRING); + rowZeroCell.setCellValue(columnGroupItem.getText().toString()); + rowZeroCell.setCellStyle(titleCellStyle); + //设置列宽 + sheet.setColumnWidth(i, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + patternList.add(columnGroupItem.getPattern()); + } + + HashMap numberCellStyleMap = new HashMap(); + XSSFDataFormat df = workbook.createDataFormat(); + patternList.stream().distinct().filter(a -> a != null).forEach(p -> { + String start = "0."; + if (p == 0) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(p).collect(Collectors.joining()) + "_ "); + XSSFCellStyle numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + numberCellStyleMap.put(p, numberCellStyle); + }); + + + for (int rowIndex = 1; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + float height = 18; + float finalHeight = 18; + + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } else { + cell.setCellStyle(cellStyle); + } + Object o = infoList.get(cellIndex); + if (o instanceof String) { + cell.setCellType(CellType.STRING); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + cell.setCellStyle(numberCellStyleMap.get(patternList.get(cellIndex))); + } else if (o instanceof Boolean) { + cell.setCellType(CellType.BOOLEAN); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + + //判断是否要调整高度 + int width = sheet.getColumnWidth(cellIndex) / 256; + finalHeight = getFinalHeight(o, width, finalHeight, height); + } + row.setHeightInPoints(finalHeight); + } + return workbook; + } public static XSSFWorkbook genWorkbookV2(List> rowList, String sheetName) { XSSFWorkbook workbook = new XSSFWorkbook(); @@ -132,6 +240,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -325,6 +436,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); From 0facbabf55853089ac52d3dd170d0627dd0456cc Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 20 May 2024 15:04:14 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=80=BCtemp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryitem/bo/SalaryItemBO.java | 4 +++- .../entity/salaryitem/dto/SalaryItemFormDTO.java | 3 +++ .../salaryitem/param/SalaryItemSaveParam.java | 5 +++++ .../entity/salaryitem/po/SalaryItemPO.java | 6 ++++++ .../salarysob/dto/SalarySobItemFormDTO.java | 3 +++ .../salarysob/param/SalarySobItemSaveParam.java | 3 +++ .../entity/salarysob/po/SalarySobBackItemPO.java | 5 +++++ .../entity/salarysob/po/SalarySobItemPO.java | 5 +++++ .../mapper/salaryitem/SalaryItemMapper.xml | 16 ++++++++++++++-- .../mapper/salarysob/SalarySobBackItemMapper.xml | 1 + .../mapper/salarysob/SalarySobItemMapper.xml | 4 ++++ .../service/impl/SalaryItemServiceImpl.java | 1 + .../service/impl/SalarySobItemServiceImpl.java | 8 +++++++- 13 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index 1048360fa..49c1a9300 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -202,7 +202,8 @@ public class SalaryItemBO { .setTaxAgentIds(salaryItemPO.getTaxAgentIds()) .setSharedType(salaryItemPO.getSharedType()) .setSortedIndex(salaryItemPO.getSortedIndex()) - .setWidth(salaryItemPO.getWidth()); + .setWidth(salaryItemPO.getWidth()) + .setDefaultValue(salaryItemPO.getDefaultValue()); } /** @@ -283,6 +284,7 @@ public class SalaryItemBO { .taxAgentIds(saveParam.getTaxAgentIds()) .sortedIndex(saveParam.getSortedIndex()) .width(saveParam.getWidth()) + .defaultValue(saveParam.getDefaultValue()) .build(); // 开启了"薪资档案引用",取值方式固定为输入 // if (Objects.equals(saveParam.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) { diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java index da0c6d4d5..15585ff2d 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java @@ -98,4 +98,7 @@ public class SalaryItemFormDTO { // 宽度 private Integer width; + + // 默认值 + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index a200cea77..6622f3173 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -107,4 +107,9 @@ public class SalaryItemSaveParam { * 宽度 */ private Integer width; + + /** + * 默认值 + */ + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java index 8db3c3c89..1224b0c56 100644 --- a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java +++ b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java @@ -191,4 +191,10 @@ public class SalaryItemPO { */ @ElogTransform(name = "宽度") private Integer width; + + /** + * 默认值 + */ + @ElogTransform(name = "默认值") + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index f23df1512..7c600fcb4 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -83,4 +83,7 @@ public class SalarySobItemFormDTO { // 薪资档案引用。0:薪资档案未引用、1:薪资档案引用 private Integer useInEmployeeSalary; + + // 默认值 + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index e19856374..f0e9c4004 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -78,6 +78,9 @@ public class SalarySobItemSaveParam { private Boolean canDelete; + // 默认值 + private String defaultValue; + /** * 进位规则 */ diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java index 659707a90..02e05af29 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java @@ -110,6 +110,11 @@ public class SalarySobBackItemPO{ @JsonIgnore private Date updateTime; + /** + * 默认值 + */ + private String defaultValue; + /** diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index 15704802b..10d5112c6 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -115,6 +115,11 @@ public class SalarySobItemPO { //该分类是否隐藏(0不隐藏,1隐藏) private Long itemHide; + /** + * 默认值 + */ + private String defaultValue; + //in Collection ids; Collection salarySobIds; diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 93ec756ca..77e4b37d9 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -52,7 +52,8 @@ t.tax_agent_ids, t.sorted_index, t.hide_default, - t.width + t.width, + t.default_value @@ -221,6 +222,9 @@ width, + + default_value, + @@ -295,6 +299,9 @@ #{width}, + + #{defaultValue}, + @@ -369,7 +376,12 @@ width=#{width}, - sorted_index=#{sortedIndex}, + + sorted_index=#{sortedIndex}, + + + default_value=#{defaultValue}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml index 430bb5734..85c51b081 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml @@ -52,6 +52,7 @@ , t.delete_type , t.create_time , t.update_time + , t.default_value diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index ed7016175..98fe7f070 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -37,6 +37,7 @@ , t.rounding_mode , t.pattern , t.value_type + , t.default_value @@ -336,6 +337,9 @@ value_type=#{valueType}, + + default_value=#{defaultValue}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 82afc2e9e..b652d7e47 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -249,6 +249,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService newSalaryItemPO.setTaxAgentIds(saveParam.getTaxAgentIds()); newSalaryItemPO.setSortedIndex(saveParam.getSortedIndex()); newSalaryItemPO.setWidth(saveParam.getWidth()); + newSalaryItemPO.setDefaultValue(saveParam.getDefaultValue()); salaryItemBiz.updateById(newSalaryItemPO); //改名后更新公式 diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index d857a9709..8f916f0b2 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -396,6 +396,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .defaultValue(itemParam.getDefaultValue()) .build(); salarySobItems.add(salarySobItemPO); @@ -475,6 +476,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .defaultValue(itemParam.getDefaultValue()) .build(); salarySobItems.add(salarySobItemPO); @@ -509,6 +511,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .defaultValue(itemParam.getDefaultValue()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); // 保存薪资项目是否展示 @@ -565,6 +568,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .defaultValue(itemParam.getDefaultValue()) .build(); salarySobItems.add(salarySobItemPO); @@ -597,6 +601,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()) .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) + .defaultValue(itemParam.getDefaultValue()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); @@ -776,7 +781,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "") .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()) .setDescription(salarySobItemPO.getDescription()) - .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0); + .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0) + .setDefaultValue(salarySobItemPO.getDefaultValue()); } return salarySobItemFormDTO; } From a1e7ec160c2ba9c08514a229ffabf2f31ca767cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 11 Jun 2024 10:10:45 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalaryTemplateServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index f8ee03c5a..f6f7e8b18 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -317,7 +317,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate List newItems = new ArrayList<>(); for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) { SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId())); - if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { + if (empFieldPO != null && empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); newItems.add(templateItem); @@ -341,7 +341,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate List newItems = new ArrayList<>(); for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) { SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId())); - if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { + if (empFieldPO != null && empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); newItems.add(templateItem); From e94273468e23b42b52a3b7220094ee18e9677b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 11 Jun 2024 15:27:00 +0800 Subject: [PATCH 04/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E9=9D=9E=E6=AD=A3=E5=B8=B8=E4=BA=BA=E5=91=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/EmployeeDeclareServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index a88612e7e..3756e353e 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -458,8 +458,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla List preTaxCycleEmployeeDeclares = listByTaxCycleAndTaxAgentId(SalaryDateUtil.plusMonths(refreshParam.getTaxCycle(), -1), refreshParam.getTaxAgentId()) //只需要正常的 .stream() - .filter(e -> Objects.equals(e.getEmploymentStatus(), EmploymentStatusEnum.NORMAL.getValue()) - && Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue())) + .filter(e ->Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue())) .collect(Collectors.toList()); // 查询个税扣缴义务人 TaxAgentPO taxAgent = getTaxAgentService(user).getById(refreshParam.getTaxAgentId()); From f073f6d90cadb0897ee628fcac9a935499309e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 11 Jun 2024 15:48:07 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E9=9D=9E=E6=AD=A3=E5=B8=B8=E4=BA=BA=E5=91=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index f4d5b3643..e7cc9af35 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -261,7 +261,7 @@ public class SalaryBillBO { } Util_Message.store(messageBean); } catch (IOException e) { - e.printStackTrace(); + log.error("消息发送失败",e); } } From 853482141fb0dbe6a27d43a35a9ed929ed6475f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 12 Jun 2024 10:45:32 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E5=B0=8F=E6=95=B0=E4=BD=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=8110=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryitem/param/SalaryItemSaveParam.java | 2 +- .../salary/entity/salarysob/dto/SalarySobItemFormDTO.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index a200cea77..5cf5c64b9 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -63,7 +63,7 @@ public class SalaryItemSaveParam { private Integer roundingMode; //保留小数位 - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 10, message = "小数位最多为10") private Integer pattern; /** diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index f23df1512..3f797c9bf 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -53,7 +53,7 @@ public class SalarySobItemFormDTO { private Integer roundingMode; //保留小数位") - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "小数位最多为8") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 10, message = "小数位最多为10") private Integer pattern; //取值方式") From 7e988193c6b3536f84388ecce63ac6a645e660a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 12 Jun 2024 14:31:50 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E5=85=AC=E5=BC=8F=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9C=88=E6=9C=89=E5=A4=9A=E5=B0=91=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/常用查询.md | 2 +- src/com/engine/salary/constant/des.json | 26 ++++++++++++++- .../formlua/constant/FormluaConstant.java | 26 ++++++++++++++- .../engine/salary/formlua/core/QlExpress.java | 1 + .../formlua/func/date/DateTimeService.java | 7 ++++ .../func/date/DateTimeServiceImpl.java | 32 +++++++++++++++++++ 6 files changed, 91 insertions(+), 3 deletions(-) diff --git a/resource/wiki/常用查询.md b/resource/wiki/常用查询.md index 594b14bf8..13ba2242f 100644 --- a/resource/wiki/常用查询.md +++ b/resource/wiki/常用查询.md @@ -18,4 +18,4 @@ left join hrmresource e on e.id= result.employee_id left join hrsa_tax_agent t on a.tax_agent_id=t.id where a.delete_type=0 and i.delete_type=0 and t.delete_type=0 and c.delete_type=0 and a.employee_id=人员id and t.name=扣缴义务人名称 - and effective_time <= now() and c.name='基本工资' order by effective_time desc \ No newline at end of file + c.name='基本工资' order by effective_time desc \ No newline at end of file diff --git a/src/com/engine/salary/constant/des.json b/src/com/engine/salary/constant/des.json index 0b35d5f80..f970e4448 100644 --- a/src/com/engine/salary/constant/des.json +++ b/src/com/engine/salary/constant/des.json @@ -980,7 +980,31 @@ "infinite": true } ] - } + }, + { + "name": "DAYSINMONTH", + "chineseName": "返回指定月的天数", + "description": "返回指定月的天数。", + "example": "DAYSINMONTH('2024-01-01')", + "result": "31", + "paramDescs": [ + "*日期*(必选)" + ], + "formatString": "DAYSINMONTH(日期)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "days_in_month", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": true + } + ] + }, ], "dataType": "date", "name": "日期函数", diff --git a/src/com/engine/salary/formlua/constant/FormluaConstant.java b/src/com/engine/salary/formlua/constant/FormluaConstant.java index c3d7f4cb7..c88d7090d 100644 --- a/src/com/engine/salary/formlua/constant/FormluaConstant.java +++ b/src/com/engine/salary/formlua/constant/FormluaConstant.java @@ -985,7 +985,31 @@ public class FormluaConstant { " \"infinite\": true\n" + " }\n" + " ]\n" + - " }\n" + + " },\n" + + " {\n" + + " \"name\": \"DAYSINMONTH\",\n" + + " \"chineseName\": \"返回指定月的天数\",\n" + + " \"description\": \"返回指定月的天数。\",\n" + + " \"example\": \"DAYSINMONTH('2024-01-01')\",\n" + + " \"result\": \"31\",\n" + + " \"paramDescs\": [\n" + + " \"*日期*(必选)\"\n" + + " ],\n" + + " \"formatString\": \"DAYSINMONTH(日期)\",\n" + + " \"paramArray\": [],\n" + + " \"paramData\": [],\n" + + " \"returnType\": \"number\",\n" + + " \"type\": \"function\",\n" + + " \"validForm\": \"days_in_month\",\n" + + " \"paramCount\": -1,\n" + + " \"paramStatuses\": [\n" + + " {\n" + + " \"dataType\": \"date\",\n" + + " \"must\": true,\n" + + " \"infinite\": true\n" + + " }\n" + + " ]\n" + + " },\n" + " ],\n" + " \"dataType\": \"date\",\n" + " \"name\": \"日期函数\",\n" + diff --git a/src/com/engine/salary/formlua/core/QlExpress.java b/src/com/engine/salary/formlua/core/QlExpress.java index 68cd238d9..9660ff1fe 100644 --- a/src/com/engine/salary/formlua/core/QlExpress.java +++ b/src/com/engine/salary/formlua/core/QlExpress.java @@ -189,6 +189,7 @@ public class QlExpress { runner.addFunctionOfServiceMethod("CURRSECOND", dateTimeService, "currSecond", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MAXDATE", dateTimeService, "maxDate", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MINDATE", dateTimeService, "minDate", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("DAYSINMONTH", dateTimeService, "daysInMonth", new Class[]{Object[].class}, ""); // runner.addFunctionOfServiceMethod("DAYOFMONTH", dateTimeService, "dayOfMonth", new Class[]{Object[].class}, ""); //聚合函数 diff --git a/src/com/engine/salary/formlua/func/date/DateTimeService.java b/src/com/engine/salary/formlua/func/date/DateTimeService.java index 2b7dca962..7fbf04508 100644 --- a/src/com/engine/salary/formlua/func/date/DateTimeService.java +++ b/src/com/engine/salary/formlua/func/date/DateTimeService.java @@ -89,4 +89,11 @@ import com.engine.salary.formlua.entity.parameter.DataType; */ DataType currSecond(Object... objects); + /** + * 获取月有多少天 + * @param objects + * @return + */ + DataType daysInMonth(Object... objects); + } diff --git a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java index 07fa4c8ae..2220ff86c 100644 --- a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java +++ b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.YearMonth; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -998,6 +999,37 @@ public class DateTimeServiceImpl implements DateTimeService { int year = cal.get(Calendar.SECOND); return new DataType(DataType.NUMBER, year); } + + @Override + public DataType daysInMonth(Object... objects) { + Class[] typeObjects = new Class[]{DateAndString.class}; + IgnoreParamFilter.commonFilter("YEAR", 1, 1, typeObjects, objects); + Object obj = objects[0]; + Object date = DateUtil.getContent(obj, formatter); + if (ExcelParamUtil.checkIsNull(date, ExcelParamUtil.CHECKLEVEL_STRING)) { + return new DataType(DataType.NUMBER, 0); + } + int year = 0; + try { + year = getDateTimeValue(date, "Y", "YEAR"); + } catch (ParseException e) { + logger.error("err", e); + throw new RuntimeException(e); + } + + IgnoreParamFilter.commonFilter("MONTH", 1, 1, typeObjects, objects); + int month = 0; + try { + month = getDateTimeValue(date, "M", "MONTH") + 1; + } catch (ParseException e) { + logger.error("err", e); + throw new RuntimeException(e); + } + + YearMonth yearMonth = YearMonth.of(year, month); + int daysInMonth = yearMonth.lengthOfMonth(); + return new DataType(DataType.NUMBER, daysInMonth); + } /*******以下为日期函数的一些公共逻辑********/ From 1983ba968c73513ab75eb1fd0e9cb00e8f210b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 12 Jun 2024 15:35:40 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=8D=E9=9C=80=E8=A6=81=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryitem/bo/SalaryItemBO.java | 9 +++++++-- .../salary/formlua/func/compare/EqOperator.java | 4 ---- .../salary/formlua/func/compare/GreaterOperator.java | 4 ---- .../salary/formlua/func/compare/WOperatorDiv.java | 3 +-- .../salary/formlua/func/date/DateTimeServiceImpl.java | 3 +-- .../formlua/func/finance/FinanceServiceImpl.java | 1 - .../engine/salary/formlua/func/logic/IfOperator.java | 2 -- .../salary/formlua/func/logic/LogicServiceImpl.java | 1 - .../formlua/func/string/StringFormulaServiceImpl.java | 11 +---------- src/com/engine/salary/formlua/util/DateUtil.java | 1 - .../engine/salary/formlua/util/IgnoreParamFilter.java | 3 --- 11 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index 1048360fa..990ab41e8 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -40,8 +40,6 @@ public class SalaryItemBO { private static final BaseBean baseBean = new BaseBean(); - //强制开启账套的公式配置 - private static final Boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); @@ -86,6 +84,10 @@ public class SalaryItemBO { if (CollectionUtils.isEmpty(salaryItems)) { return Collections.emptyList(); } + + //强制开启账套的公式配置 + boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); + Map formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula); Map sysSalaryItemNameMap = SalaryEntityUtil.convert2Map(sysSalaryItemPOS, SysSalaryItemPO::getId, SysSalaryItemPO::getName); return salaryItems.stream().map(salaryItemPO -> { @@ -134,6 +136,9 @@ public class SalaryItemBO { if (CollectionUtils.isEmpty(salaryItems)) { return Collections.emptyList(); } + //强制开启账套的公式配置 + boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); + Map formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula); Map sysSalaryItemNameMap = SalaryEntityUtil.convert2Map(sysSalaryItemPOS, SysSalaryItemPO::getId, SysSalaryItemPO::getName); return salaryItems.stream().map(salaryItemPO -> { diff --git a/src/com/engine/salary/formlua/func/compare/EqOperator.java b/src/com/engine/salary/formlua/func/compare/EqOperator.java index 24ee31946..679149b83 100644 --- a/src/com/engine/salary/formlua/func/compare/EqOperator.java +++ b/src/com/engine/salary/formlua/func/compare/EqOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.compare; -import com.alibaba.fastjson.JSON; import com.engine.salary.formlua.core.exception.ErrorType; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.util.CompareUtil; @@ -37,7 +36,6 @@ public class EqOperator extends OperatorEqualsLessMore { public Object executeInner(Object... list) throws Exception { DataType result=new DataType(); result.setDataType(DataType.BOOL); - logger.info("等于号参数:"+JSON.toJSONString(list)); String oper="="; if(list.length!=2){ throw new RuntimeException("[=]"+ ErrorType.MAX_VAR_COUNT.name()); @@ -75,7 +73,6 @@ public class EqOperator extends OperatorEqualsLessMore { int i=0; for (;i"+secondParam); if((firstParam instanceof String || firstParam instanceof Character) && (secondParam instanceof String || secondParam instanceof Character)){ if(firstParam.toString().length()==1&&secondParam.toString().length()==1){ boolean r=firstParam.toString().equals(secondParam.toString()); diff --git a/src/com/engine/salary/formlua/func/compare/GreaterOperator.java b/src/com/engine/salary/formlua/func/compare/GreaterOperator.java index f33b7dd5a..1540b887c 100644 --- a/src/com/engine/salary/formlua/func/compare/GreaterOperator.java +++ b/src/com/engine/salary/formlua/func/compare/GreaterOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.compare; -import com.alibaba.fastjson.JSON; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.util.CompareUtil; import com.engine.salary.formlua.util.DateUtil; @@ -22,7 +21,6 @@ public class GreaterOperator extends OperatorEqualsLessMore { result.setDataType(DataType.BOOL); // IgnoreParamFilter.filterCompareFunc(op1,op2,">"); String datatype = ExcelParamUtil.checkParamType(op1); - logger.info("大于号比较:" + JSON.toJSONString(op1) + "-->" + JSON.toJSONString(op2)); //对option的特殊处理,获取option的字符串后根据逗号分割,然后排序数组,数组长度不一致返回false,一致则循环对比直到同样下标的数据不一致返回false,否则为true try { if (datatype.equals(DataType.OPTION)) { @@ -77,8 +75,6 @@ public class GreaterOperator extends OperatorEqualsLessMore { } result.setContent(dateResult); } else { - logger.info("参数1:" + ExcelParamUtil.convertParamValToNumber(op1) + ""); - logger.info("参数2:" + ExcelParamUtil.convertParamValToNumber(op2) + ""); boolean r; if (ExcelParamUtil.getParamType(op1).toLowerCase().equals("double") || ExcelParamUtil.getParamType(op2).toLowerCase().equals("double")) { r = OperatorEqualsLessMore.executeInner(">", ExcelParamUtil.convertParamValToNumber(op1), ExcelParamUtil.convertParamValToNumber(op2)); diff --git a/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java b/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java index d4d612bf8..8011e3649 100644 --- a/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java +++ b/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java @@ -52,10 +52,9 @@ public class WOperatorDiv extends OperatorMultiDiv { newList[1] = secondParam; try { Object r = super.executeInner(newList); - logger.info("乘法运算:" + r.toString()); result.setContent(new BigDecimal(r + "")); } catch (Exception e) { - logger.info("除法计算异常返回0:" + e.getMessage()); + logger.error("除法计算异常返回0:" + e.getMessage()); result.setContent(0); } return result; diff --git a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java index 2220ff86c..5f2ffedd0 100644 --- a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java +++ b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java @@ -550,7 +550,6 @@ public class DateTimeServiceImpl implements DateTimeService { date = lastday; break; } - logger.info("firstday:" + firstday + " lastday:" + lastday); return new DataType(DataType.STRING, date); } @@ -1288,7 +1287,7 @@ public class DateTimeServiceImpl implements DateTimeService { r = true; break; } catch (ParseException e) { - logger.info(e.getMessage()); + logger.error(e.getMessage()); r = false; } } diff --git a/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java b/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java index acda12221..e3b4f1d24 100644 --- a/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java +++ b/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java @@ -79,7 +79,6 @@ public class FinanceServiceImpl implements FinanceService{ int intLen = integerNum.length(); for (int i = 0; i < intLen; i++) { String n = integerNum.substring(i, i+1); - logger.info("转换中文:"+n); int p = intLen - i - 1; int q = p / 4; int m = p % 4; diff --git a/src/com/engine/salary/formlua/func/logic/IfOperator.java b/src/com/engine/salary/formlua/func/logic/IfOperator.java index 44430d341..b826836fb 100644 --- a/src/com/engine/salary/formlua/func/logic/IfOperator.java +++ b/src/com/engine/salary/formlua/func/logic/IfOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.logic; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.salary.formlua.core.exception.ExcelRunTimeException; import com.engine.salary.formlua.entity.parameter.DataType; @@ -26,7 +25,6 @@ public class IfOperator extends OperatorIf { throw new ExcelRunTimeException("IF函数只允许三个参数"); } Object obj = list.get(0).getObject(parent); - logger.info("IF参数:" + JSON.toJSONString(obj)); boolean isDataTypeBool = false; DataType boolDtaType = null; if (obj != null && obj instanceof DataType) { diff --git a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java index 395b9acdf..f550fd861 100644 --- a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java +++ b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java @@ -477,7 +477,6 @@ public class LogicServiceImpl implements LogicService { Object obj = objects[i - 1]; String typeStr = ExcelParamUtil.getParamType(obj); typeStr = ExcelParamUtil.checkParamType(typeStr); - logger.info(typeStr); if (type == null) { type = typeStr; } else { diff --git a/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java b/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java index bf96613c3..f18557327 100644 --- a/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java +++ b/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java @@ -236,7 +236,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { int replaceLength=(repIdx-1)+repLenth; if(replaceLength>sourceStr.length()){ // throw new RunTimeException(errorJson.getString("msg")); - logger.info("REPLACE函数替换位置超过了字符长度"); replaceLength=sourceStr.length(); } String cutStr=sourceStr.substring(repIdx-1,replaceLength); @@ -463,7 +462,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { sex = "男"; } } - logger.info(sex); return new DataType(DataType.STRING,sex); } @@ -471,7 +469,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { public DataType nativePlace(String idCard){ int nativePlaceCode=Integer.parseInt(idCard.substring(0, 6)); String nativePlace= NativePlace.getNativePlace(nativePlaceCode); - logger.info("您所在的地区为:\n" + nativePlace); return new DataType(DataType.STRING,nativePlace); } @@ -489,7 +486,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(dataType!=null && dataType.getContent()!=null){ age=dataType.getContent(); } - logger.info("年龄:"+age); } } catch (ParseException e) { logger.error("err",e); @@ -526,7 +522,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { } String birth=year+"-"+month+"-"+day; - logger.info("生日为:"+birth); result=birth; break; @@ -756,12 +751,10 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(fieldType.equalsIgnoreCase("string")){ if(content!=null){ try { - logger.info("isJson函数的JSON字符转换:"+content+""); JSON.parseObject(content+""); resultDataType=new DataType(DataType.BOOL,true); } catch (Exception e) { - logger.info("err",e); - logger.info("不是正常的JSON字符"); + logger.error("err",e); resultDataType=new DataType(DataType.BOOL,false); } }else{ @@ -800,13 +793,11 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(fieldType.equalsIgnoreCase("string")){ if(content!=null){ try { - logger.info("isJson函数的JSON字符转换:"+content+""); JSONObject jsonObject=JSON.parseObject(content+""); Object jsonValue=jsonObject.get(objectKey+""); resultDataType=new DataType(DataType.STRING,jsonValue==null?"":jsonValue.toString()); } catch (Exception e) { logger.info("err",e); - logger.info("不是正常的JSON字符"); resultDataType=new DataType(DataType.STRING,""); } }else{ diff --git a/src/com/engine/salary/formlua/util/DateUtil.java b/src/com/engine/salary/formlua/util/DateUtil.java index 64e97e2bd..5eddb6eb0 100644 --- a/src/com/engine/salary/formlua/util/DateUtil.java +++ b/src/com/engine/salary/formlua/util/DateUtil.java @@ -87,7 +87,6 @@ public class DateUtil { try { format.setLenient(false); format.parse(dateString); - logger.info(dateString); } catch (ParseException e) { // logger.error("err",e); convertSuccess=false; diff --git a/src/com/engine/salary/formlua/util/IgnoreParamFilter.java b/src/com/engine/salary/formlua/util/IgnoreParamFilter.java index 31f670347..b8db227e4 100644 --- a/src/com/engine/salary/formlua/util/IgnoreParamFilter.java +++ b/src/com/engine/salary/formlua/util/IgnoreParamFilter.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.util; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.salary.formlua.core.exception.ErrorType; import com.engine.salary.formlua.entity.parameter.DataType; @@ -39,7 +38,6 @@ public class IgnoreParamFilter { * @return */ public static boolean isEmployee(Object object) { - logger.info("校验人员参数" + JSON.toJSONString(object)); // if (object instanceof DataType) { // DataType dataType = (DataType) object; // if (dataType.getComponentKey() != null && dataType.getComponentKey().equalsIgnoreCase(ComponentType.Employee.toString())) { @@ -227,7 +225,6 @@ public class IgnoreParamFilter { * @throws RuntimeException */ public static void filterAggFunc(String func, Object... objects) throws RuntimeException { - logger.info("聚合参数:" + JSON.toJSONString(objects)); Integer number = getSetFuncNumber(func); Map map = new HashMap<>(); boolean mustNumber = false; From e249de9a59c3e3ee92a31302227a8c909ce24022 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 12 Jun 2024 16:01:09 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportWrapper.java | 22 ++++++++++++++++++- .../salary/util/excel/ExcelUtilPlus.java | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 0ccb7df05..1abf7c36b 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -14,6 +14,7 @@ import com.engine.salary.config.SalaryElogConfig; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.OperateTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO; @@ -40,6 +41,7 @@ import weaver.general.PageIdConst; import weaver.hrm.User; import weaver.wechat.util.Utils; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -418,10 +420,28 @@ public class SalaryStatisticsReportWrapper extends Service { } }); + List itemIds = salaryStatisticsItemList.stream().map(item -> item.getItemValue().split(",")).flatMap(Arrays::stream).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + List salaryItemPOList = getSalaryItemService(user).listByIds(itemIds); + List numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList()); + Map salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString()); + for (Map map : records) { List row = Lists.newArrayListWithExpectedSize(records.size()); head.forEach(k -> { - row.add(map.getOrDefault(k, StringUtils.EMPTY)); + // 获取是数值还是文本 + if (k.contains(SalaryStatisticsReportBO.UD)) { + String[] split = k.split(SalaryStatisticsReportBO.UD); + String salaryItemId = split[0]; + SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId); + if (salaryStatisticsItemPO != null) { + Optional textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(id -> !numberItemIds.contains(id)).findFirst(); + row.add( (!textItemOptional.isPresent() && NumberUtils.isCreatable(map.getOrDefault(k, StringUtils.EMPTY).replace(",", ""))) ? new BigDecimal(map.get(k).replace(",", "")) : map.getOrDefault(k, StringUtils.EMPTY)); + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } }); rows.add(row); } diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index bfb2cf92e..3707f2f7c 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -784,6 +784,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); From 4798f5d4a6f35b8e907b85a702bfb21c7092683d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 12 Jun 2024 17:35:06 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=A4=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=86=85=E5=AD=98=E6=BA=A2=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index c3d96f1ef..a1c7b9b90 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -219,10 +219,11 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List> partition = Lists.partition((List) salaryAcctEmployeeIds, 500); List salaryAcctResultPOS = new ArrayList<>(); partition.forEach(empIds -> { - salaryAcctResultPOS.addAll(getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).build())); + List resultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).build()); + encryptUtil.decryptList(resultPOS, SalaryAcctResultPO.class); + salaryAcctResultPOS.addAll(resultPOS); }); // 解密 - encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); return salaryAcctResultPOS; } @@ -789,7 +790,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe acctResults = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())).collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); } List lockEmpIds = salaryAcctEmployeePOS.stream().filter(po -> LockStatusEnum.LOCK.getValue().equals(po.getLockStatus())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(lockEmpIds)){ + if (CollUtil.isNotEmpty(lockEmpIds)) { List acctResultPOS = listBySalaryAcctEmployeeIds(lockEmpIds); Map acctResultMaps = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); acctResults.putAll(acctResultMaps); From db391f01c4b212f234817c7e44f193e2f359ffd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jun 2024 13:39:24 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=A4=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=86=85=E5=AD=98=E6=BA=A2=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsEmployeeWrapper.java | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 46ade27fb..1350df88a 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -24,6 +24,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -137,6 +138,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { /** * 获取员工发薪明细列表 + * * @param queryParam */ public Map salaryList(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { @@ -147,7 +149,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); // 获取薪资核算结果 - SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); + SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); Map countResultMap = Maps.newHashMap(); @@ -183,7 +185,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 结果 if (queryParam.isExport()) { resultMap.put("columns", weaTableColumns); - resultMap.put("salaryItems",salaryStatisticsEmployeeDetailResult.getSalaryItemList()); + resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList()); resultMap.put("countResult", countResultMap); } else { WeaTable table = new WeaTable(); @@ -205,6 +207,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { /** * 获取员工发薪明细列表 + * * @param queryParam */ public Map salaryListSum(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { @@ -215,25 +218,37 @@ public class SalaryStatisticsEmployeeWrapper extends Service { queryParam.setExport(true); // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); - // 获取薪资核算结果 - SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); - List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); + List employeePOS = salaryAcctEmployeePageInfo.getList(); Map sumResultMap = Maps.newHashMap(); - if (CollectionUtils.isNotEmpty(records)) { - List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); - for (SalaryItemPO item : salaryItems) { - BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); - String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; - for (Map record : records) { - if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { - sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); + + List> empParts = Lists.partition(employeePOS, 500); + + for (int i = 0; i < empParts.size(); i++) { + // 获取薪资核算结果 + SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(empParts.get(i)); + List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); + + if (CollectionUtils.isNotEmpty(records)) { + List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); + for (SalaryItemPO item : salaryItems) { + BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); + String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; + for (Map record : records) { + if (record.containsKey(itemKey)) { + if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); + } } } + Object o = sumResultMap.get(itemKey + "_n"); + if (o != null) { + sumBigDecimal = sumBigDecimal.add((BigDecimal) o); + } + sumResultMap.put(itemKey + "_n", sumBigDecimal); + // 薪资项目合计 + sumResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString())); } - // 薪资项目合计 - sumResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString())); } } resultMap.put("sumRow", sumResultMap); @@ -263,12 +278,12 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 合计 List sumRow = new ArrayList<>(); sumRow.add("总计"); - for (int i=1; i exportDetailList(SalaryStatisticsEmployeeDetailQueryParam queryParam) { From 1dd3439ce3133bff85d41c8b9c0bc196da0dcb5d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 13 Jun 2024 13:59:43 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=B0=8F=E6=95=B0=E4=BD=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIAccountServiceImpl.java | 51 +++++++++++++++++-- .../service/impl/SIBalanceServiceImpl.java | 4 +- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 66273cc37..f95fb8244 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -3502,11 +3502,56 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { Map resultMap = new HashMap<>(); // resultMap.put("data", dataMap); // resultMap.put("items", addGroups); + + // 获取当前放方案信息 + InsuranceArchivesSocialSchemePO socialSchemePO = new InsuranceArchivesSocialSchemePO(); + InsuranceArchivesFundSchemePO fundSchemePO = new InsuranceArchivesFundSchemePO(); + InsuranceArchivesOtherSchemePO otherSchemePO = new InsuranceArchivesOtherSchemePO(); + List insuranceSchemeDetailPOS = new ArrayList<>(); List schemeIdList = new ArrayList<>(); - schemeIdList.add(insuranceAccountDetailPO.getSocialSchemeId()); - schemeIdList.add(insuranceAccountDetailPO.getFundSchemeId()); - schemeIdList.add(insuranceAccountDetailPO.getOtherSchemeId()); + if (insuranceAccountDetailPO.getSocialSchemeId() == null) { + List socialSchemePOList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (socialSchemePOList.size() > 0) { + encryptUtil.decryptList(socialSchemePOList, InsuranceArchivesSocialSchemePO.class); + socialSchemePO = socialSchemePOList.get(0); + } + schemeIdList.add(socialSchemePO.getSocialSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getSocialSchemeId()); + } + + if (insuranceAccountDetailPO.getFundSchemeId() == null) { + List fundSchemePOList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (fundSchemePOList.size() > 0) { + encryptUtil.decryptList(fundSchemePOList, InsuranceArchivesFundSchemePO.class); + fundSchemePO = fundSchemePOList.get(0); + } + schemeIdList.add(fundSchemePO.getFundSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getFundSchemeId()); + } + + if (insuranceAccountDetailPO.getOtherSchemeId() == null) { + List otherSchemePOList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (otherSchemePOList.size() > 0) { + encryptUtil.decryptList(otherSchemePOList, InsuranceArchivesOtherSchemePO.class); + otherSchemePO = otherSchemePOList.get(0); + } + schemeIdList.add(otherSchemePO.getOtherSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getOtherSchemeId()); + } + schemeIdList = schemeIdList.stream().filter(schemeId -> schemeId != null).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(schemeIdList)) { insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(schemeIdList); diff --git a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java index 29464725d..b9ec0de27 100644 --- a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java @@ -207,7 +207,7 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); - List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); + List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(fundSchemePO.getFundSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); fundMap.forEach((k, v) -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); @@ -243,7 +243,7 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); - List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); + List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(otherSchemePO.getOtherSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); otherMap.forEach((k, v) -> { From 64e34d6d085e2f2bb3fc7dcb8f94861a39f831dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 13 Jun 2024 17:46:37 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryBill/param/SalaryPreviewParam.java | 32 +++ .../salary/service/SalaryBillService.java | 12 ++ .../salary/service/SalarySendService.java | 7 + .../service/impl/SalaryBillServiceImpl.java | 2 +- .../service/impl/SalarySendServiceImpl.java | 186 ++++++++++++++++++ .../salary/web/SalaryBillController.java | 15 ++ .../salary/wrapper/SalarySendWrapper.java | 4 + 7 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java new file mode 100644 index 000000000..8d48e5118 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryBill.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 工资单预览参数 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryPreviewParam { + + /** + * 工资单id + */ + private Long salaryInfoId; + + /** + * 员工id + */ + private Long recipient; + +} diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 530c3080e..4878df87b 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -1,7 +1,10 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryBill.dto.SalaryBillSendDTO; import com.engine.salary.entity.salaryBill.param.SalaryExportPdfParam; import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import java.util.List; import java.util.Map; @@ -52,6 +55,15 @@ public interface SalaryBillService { String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam); + /** + * 构建发放参数 + * @param salarySend + * @param taxAgentName + * @param salaryTemplate + * @return + */ + SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate); + /** * 工资单撤回 * diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index 72fc71423..4f570039b 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -218,4 +218,11 @@ public interface SalarySendService { List getByIds(List salarySendId); List listSome(SalarySendPO param); + + /** + * 工资单预览 + * @param param + * @return + */ + Map preview(SalaryPreviewParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index eaf9c0be1..060f15cb2 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -337,7 +337,7 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService * @param salaryTemplate * @return */ - private SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate) { + public SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate) { // 发送通道 Set sendChannels = SalaryBillBO.buildSendChannels(salaryTemplate); if (CollectionUtils.isEmpty(sendChannels)) { diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index efd438444..5e61fec2d 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1834,4 +1834,190 @@ public class SalarySendServiceImpl extends Service implements SalarySendService public List listSome(SalarySendPO param) { return getSalarySendMapper().listSome(param); } + + @Override + public Map preview(SalaryPreviewParam param) { + Long salaryInfoId = param.getSalaryInfoId(); + Long recipient = param.getRecipient(); + + if (salaryInfoId == null) { + throw new SalaryRunTimeException("工资单记录不存在!"); + } + SalarySendInfoPO po = new SalarySendInfoPO(); + po.setDeleteType(0); + po.setId(salaryInfoId); + + List salarySendInfos = salarySendInfoMapper.listSome(po); + if (CollectionUtils.isEmpty(salarySendInfos)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "工资单信息不存在")); + } + + SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + + // 获取默认模板信息 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("工资单不存在"); + } + + + SalarySendPO sendPo = new SalarySendPO(); + sendPo.setDeleteType(0); + sendPo.setId(salarySendInfo.getSalarySendId()); + List salarySends = mapper.listSome(sendPo); + if (CollectionUtils.isEmpty(salarySends)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在")); + } + SalarySendPO salarySend = salarySends.get(0); + Date salaryMonth = salarySend.getSalaryMonth(); + + + // 获取模板 + SalarySobPO salarySob = getSalarySobService(user).getById(salarySend.getSalarySobId()); + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Arrays.asList(salarySend.getSalarySobId(), salarySob.getId())); + if (CollectionUtils.isEmpty(salaryTemplates)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100518, "没有默认模板,无法发送")); + } + SalaryBillSendDTO salaryBillSendDTO = getSalaryBillService(user).buildSendParams(sendPo, taxAgentPO.getName(), salaryTemplates.get(0)); + + SalaryTemplatePO salaryTemplate = salaryBillSendDTO.getSalaryTemplate(); + if (salaryTemplate==null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100513, "没有默认模板,无法查看")); + } + + // 判断是否是补发 + boolean isReplenish = NumberUtils.INTEGER_ONE.equals(salarySendInfo.getSalaryAcctType()); + + SalaryAcctResultPO acctPo = new SalaryAcctResultPO(); + acctPo.setDeleteType(0); + acctPo.setSalaryAcctRecordId(salarySendInfo.getSalaryAcctRecordId()); + acctPo.setEmployeeId(recipient); + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(acctPo); + encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salarySendInfo.getSalaryAcctRecordId()); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在!"); + } + List> salaryAcctResultS = null; + if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE) && !isReplenish) { + // 该记录回算过,并且获取的不是回算后的工资单 + salaryAcctResultS = salaryAcctResultPOS.stream().map(m -> { + Map map = new LinkedHashMap<>(); + map.put("salaryItemId", m.getSalaryItemId()); + map.put("resultValue", m.getOriginResultValue()); + return map; + }).collect(Collectors.toList()); + } else { + salaryAcctResultS = salaryAcctResultPOS.stream().map(m -> { + Map map = new LinkedHashMap<>(); + map.put("salaryItemId", m.getSalaryItemId()); + map.put("resultValue", m.getResultValue()); + return map; + }).collect(Collectors.toList()); + } + + + Map map = new LinkedHashMap<>(); + map.put("tenantName", ""); + map.put("sendTime", SalaryDateUtil.getFormatLocalDateTime(salarySendInfo.getSendTime())); + List listDTOS = JSONArray.parseArray(isReplenish ? salaryTemplate.getReplenishSalaryItemSetting() : salaryTemplate.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class); + Optional optionalEmployeeInformation = listDTOS.stream().filter(e -> SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).findFirst(); + SalaryTemplateSalaryItemSetListDTO employeeInformation = optionalEmployeeInformation.orElse(null); + List itemSetListDTOS = listDTOS.stream().filter(e -> !SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).collect(Collectors.toList()); + List> finalSalaryAcctResultS = salaryAcctResultS; + itemSetListDTOS.stream().forEach(item -> { + item.getItems() + .forEach(e -> { + if (CollectionUtils.isEmpty(finalSalaryAcctResultS)) { + e.setSalaryItemValue(""); + } else { + Object o = finalSalaryAcctResultS.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); + } + } + + DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salarySendInfo.getEmployeeId()); + buildEmployeeInfo(employeeInformation, simpleEmployee, taxAgentPO.getName(), SalaryAcctResultBO.buildEmployeeFieldName()); + map.put("employeeInformation", employeeInformation); + map.put("salaryGroups", itemSetListDTOS); + + salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salaryMonth, recipient)); + // 工资单水印文本型动态变量 == 处理 + handleSalaryWatermark(salaryTemplate, salarySendInfo, recipient); + map.put("salaryTemplate", salaryTemplate); + map.put("salaryAcctResult", salaryAcctResultS); + + // 工资单确认按钮 + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { + // 开启了工资单确认 + Integer ackStatus = salarySendInfo.getBillConfirmStatus(); + if (ackStatus == null || ackStatus != BillConfimStatusEnum.CONFIRMED.getValue()) { + map.put("showAck", "1"); + } else { + map.put("showAck", "0"); + } + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + } else { + map.put("showAck", "0"); + } + + + // 工资单反馈 + if (NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { + // 开启了工资单反馈按钮 + Integer confirmStatus = salarySendInfo.getBillConfirmStatus(); + map.put("showFeedback", "1"); + // 除非确认状态为已确认否则可以一直反馈 + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0 && confirmStatus != null && confirmStatus == BillConfimStatusEnum.CONFIRMED.getValue()) { + map.put("showFeedback", "0"); + } + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + } else { + map.put("showFeedback", "0"); + } + + // 记录查看日志 + String targetName = taxAgentPO.getName() + "-" + SalaryDateUtil.getFormatYearMonth(salarySendInfo.getSalaryMonth()); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(salarySendInfo.getId())); + loggerContext.setTargetName(targetName); + loggerContext.setOperateType(OperateTypeEnum.READ.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "预览工资单") + ": " + targetName + " " + salaryInfoId); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "预览工资单") + ": " + targetName); + SalaryElogConfig.mySalaryBillLoggerTemplate.write(loggerContext); + return map; + } } diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index c94be9966..10c6d9c31 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -323,6 +323,20 @@ public class SalaryBillController { return new ResponseResult(user).run(getSalarySendWrapper(user)::getBaseInfo, id); } + /** + * 预览工资单 + * + * @param param + * @return + */ + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryPreviewParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::preview, param); + } + /** * 工资单发放信息列表的高级搜索 * @@ -563,6 +577,7 @@ public class SalaryBillController { /** * 下载pdf前先进行校验 生成 + * * @param request * @param response * @return diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 210c69501..725931b80 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -219,6 +219,10 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return getSalarySendService(user).getBaseInfo(id); } + public Map preview(SalaryPreviewParam param) { + return getSalarySendService(user).preview(param); + } + /** * 工资单发放信息列表的高级搜索 * From 5b7533e908edaf9adfb7ba87ba9509b4215bf80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 14 Jun 2024 13:46:59 +0800 Subject: [PATCH 14/25] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=81=87=E6=9C=9F?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../attend/service/impl/RemoteAttend4SalaryServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 6aeab513e..99553f193 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; import weaver.general.Util; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -172,7 +173,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt public List> getBalanceOfLeaveColumns() { Map paramsMap = new HashMap(); paramsMap.put("dateScope", "6"); - paramsMap.put("selectedYear", 2023); + paramsMap.put("selectedYear", LocalDate.now().getYear()); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", 92); paramsMap.put("status", "9"); From 216c4cee84ef7d436f5a1e9694475b8c03e59566 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 17 Jun 2024 17:58:01 +0800 Subject: [PATCH 15/25] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BCtemp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salaryitem/bo/SalaryItemBO.java | 1 + .../salaryitem/dto/SalaryItemSobListDTO.java | 3 +++ .../salarysob/bo/SalarySobItemAggregateBO.java | 1 + .../entity/salarysob/dto/SalarySobItemDTO.java | 3 +++ .../mapper/salarysob/SalarySobItemMapper.xml | 15 +++++++++------ 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index 49c1a9300..ab2e04bcd 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -171,6 +171,7 @@ public class SalaryItemBO { .sortedIndex(salaryItemPO.getSortedIndex()) .description(salaryItemPO.getDescription()) .salaryItemType(salaryItemPO.getUseInEmployeeSalary() == 0 ? "薪资项目" : "档案字段") + .defaultValue(salaryItemPO.getDefaultValue()) .build(); } ).collect(Collectors.toList()); diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java index 10aaa12bc..f90b6ff41 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java @@ -113,6 +113,9 @@ public class SalaryItemSobListDTO { //排序 private Integer sortedIndex; + // 默认值 + private String defaultValue; + @SalaryTableColumn(text = "操作", width = "20%", column = "operate") private String operate; diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 511e946c7..b1a76a4a4 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -144,6 +144,7 @@ public class SalarySobItemAggregateBO { .canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1)) .canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1)) .width(salaryItemPO.getWidth()) + .defaultValue(salaryItemPO.getDefaultValue()) .build()); } } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 8b23d6446..9429f1522 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -112,4 +112,7 @@ public class SalarySobItemDTO { // 显示宽度 private Integer width; + + // 默认值 + private String defaultValue; } diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 98fe7f070..7f0267fc1 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -386,7 +386,7 @@ INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,default_value) VALUES ( @@ -404,13 +404,14 @@ #{item.canDelete}, #{item.roundingMode}, #{item.pattern}, - #{item.valueType} + #{item.valueType}, + #{item.defaultValue} ) INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,default_value) select @@ -428,14 +429,15 @@ #{item.canDelete,jdbcType=INTEGER}, #{item.roundingMode,jdbcType=INTEGER}, #{item.pattern,jdbcType=INTEGER}, - #{item.valueType,jdbcType=INTEGER} + #{item.valueType,jdbcType=INTEGER}, + #{item.defaultValue,jdbcType=VARCHAR} from dual INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,default_value) VALUES ( #{item.salarySobId}, @@ -452,7 +454,8 @@ #{item.canDelete}, #{item.roundingMode}, #{item.pattern}, - #{item.valueType} + #{item.valueType}, + #{item.defaultValue} ) From fe8dcd0ccdc85cf7fadfbdcfeb827a5c0ea533fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 19 Jun 2024 11:21:00 +0800 Subject: [PATCH 16/25] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalaryAcctCalculateServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index c70f3ad81..b83ceb4cb 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; @@ -35,6 +36,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.util.StopWatch; import weaver.general.BaseBean; +import weaver.general.Util; import weaver.hrm.User; import weaver.wechat.util.Utils; @@ -111,7 +113,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc @Override public void calculate(SalaryAcctCalculateBO salaryAcctCalculateBO, DataCollectionEmployee simpleEmployee, List salarySobBackItems) { - StopWatch sw = new StopWatch("核算耗时明细,id:"+salaryAcctCalculateBO.getSalaryAcctRecordPO().getId()+""); + StopWatch sw = new StopWatch("核算耗时明细,id:" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId() + ""); Date now = new Date(); try { // 数据库字段加密用 @@ -213,16 +215,20 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc String resultValue; SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemId); ExpressFormula expressFormula; + String defaultValue; if (salarySobBackItemMap.containsKey(salaryItemId)) { // 如果薪资账套的回算项目中重新定义了回算项目公式,则使用薪资账套下的公式 SalarySobBackItemPO salarySobBackItemPO = salarySobBackItemMap.get(salaryItemId); expressFormula = expressFormulaMap.get(salarySobBackItemPO.getFormulaId()); + defaultValue = salarySobBackItemPO.getDefaultValue(); } else if (salaryItemIdKeySalarySobItemPOMap.containsKey(salaryItemId)) { // 如果薪资账套下重新定义了薪资项目的公式,则使用薪资账套下的公式,否则使用薪资项目本身的公式 SalarySobItemPO salarySobItemPO = salaryItemIdKeySalarySobItemPOMap.get(salaryItemId); expressFormula = expressFormulaMap.get(salarySobItemPO.getFormulaId()); + defaultValue = salarySobItemPO.getDefaultValue(); } else { expressFormula = expressFormulaMap.get(salaryItemPO.getFormulaId()); + defaultValue = salaryItemPO.getDefaultValue(); } if (Objects.nonNull(expressFormula)) { // 运行公式 @@ -244,6 +250,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 处理取值类型为“输入/导入”的薪资项目 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); resultValue = formulaVarValueMap.getOrDefault(key, StringUtils.EMPTY); + if (StrUtil.isBlank(resultValue)) { + resultValue = Util.null2String(defaultValue); + } } // 处理薪资档案 if (Objects.equals(salaryItemPO.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) { From fa26d3041abec951dcb4202d53af70e2aba84d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 20 Jun 2024 11:08:52 +0800 Subject: [PATCH 17/25] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=AE=97=E7=A8=8Esql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202406200203.sql | 9 +++++++++ resource/sqlupgrade/GS/sql202406200203.sql | 9 +++++++++ resource/sqlupgrade/JC/sql202406200203.sql | 9 +++++++++ resource/sqlupgrade/Mysql/sql202406200203.sql | 3 +++ resource/sqlupgrade/Oracle/sql202406200203.sql | 6 ++++++ resource/sqlupgrade/PG/sql202406200203.sql | 3 +++ resource/sqlupgrade/SQLServer/sql202406200203.sql | 6 ++++++ resource/sqlupgrade/ST/sql202406200203.sql | 9 +++++++++ 8 files changed, 54 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202406200203.sql create mode 100644 resource/sqlupgrade/GS/sql202406200203.sql create mode 100644 resource/sqlupgrade/JC/sql202406200203.sql create mode 100644 resource/sqlupgrade/Mysql/sql202406200203.sql create mode 100644 resource/sqlupgrade/Oracle/sql202406200203.sql create mode 100644 resource/sqlupgrade/PG/sql202406200203.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202406200203.sql create mode 100644 resource/sqlupgrade/ST/sql202406200203.sql diff --git a/resource/sqlupgrade/DM/sql202406200203.sql b/resource/sqlupgrade/DM/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202406200203.sql b/resource/sqlupgrade/GS/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202406200203.sql b/resource/sqlupgrade/JC/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202406200203.sql b/resource/sqlupgrade/Mysql/sql202406200203.sql new file mode 100644 index 000000000..dc241d8d5 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406200203.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add default_value varchar(255); +alter table hrsa_salary_sob_item add default_value varchar(255); +alter table hrsa_salary_sob_back_item add default_value varchar(255); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406200203.sql b/resource/sqlupgrade/Oracle/sql202406200203.sql new file mode 100644 index 000000000..141829044 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406200203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL +/ +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL +/ +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406200203.sql b/resource/sqlupgrade/PG/sql202406200203.sql new file mode 100644 index 000000000..39c8d422e --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406200203.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add default_value VARCHAR(255); +alter table hrsa_salary_sob_item add default_value VARCHAR(255); +alter table hrsa_salary_sob_back_item add default_value VARCHAR(255); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406200203.sql b/resource/sqlupgrade/SQLServer/sql202406200203.sql new file mode 100644 index 000000000..17c17597a --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406200203.sql @@ -0,0 +1,6 @@ +alter table hrsa_salary_item add default_value varchar(255) +go +alter table hrsa_salary_sob_item add default_value varchar(255) +go +alter table hrsa_salary_sob_back_item add default_value varchar(255) +go \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202406200203.sql b/resource/sqlupgrade/ST/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + From e13c2b0cd08aae27fbf3370d43834274f7c4df7e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jun 2024 11:43:57 +0800 Subject: [PATCH 18/25] =?UTF-8?q?=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml | 3 +++ src/com/engine/salary/service/impl/SalaryItemServiceImpl.java | 1 + 2 files changed, 4 insertions(+) diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 102f35747..8765b0586 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -230,6 +230,9 @@ item_hide=#{itemHide}, + + default_value=#{defaultValue}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index b652d7e47..a63bec4e6 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -460,6 +460,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService sobItem.setValueType(salaryItemPO.getValueType()); sobItem.setDescription(salaryItemPO.getDescription()); sobItem.setUpdateTime(now); + sobItem.setDefaultValue(salaryItemPO.getDefaultValue() == null ? "" : salaryItemPO.getDefaultValue()); getSalarySobItemService(user).update(sobItem); } } From e5d66373e6cb0381f57eb5b6261eeb0d51fed778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 20 Jun 2024 14:47:19 +0800 Subject: [PATCH 19/25] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BC=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=AF=BC=E8=87=B4=E5=BC=82=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/entity/salarysob/po/SalarySobBackItemPO.java | 1 + src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java index d9751aeb8..793d64bfe 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java @@ -137,6 +137,7 @@ public class SalarySobBackItemPO{ ", valueType=" + valueType + ", formulaId=" + formulaId + ", backCalcType=" + backCalcType + + ", defaultValue=" + defaultValue + '}'; } diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index fa61408af..19a6db873 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -146,6 +146,7 @@ public class SalarySobItemPO { ", pattern=" + pattern + ", valueType=" + valueType + ", itemHide=" + itemHide + + ", defaultValue=" + defaultValue + '}'; } From 8d65e5d501b498e8a687bcdb5c80ac1c7fcfea0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 20 Jun 2024 14:48:35 +0800 Subject: [PATCH 20/25] =?UTF-8?q?=E7=89=88=E6=9C=AC=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index c62ade2bb..116589d50 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=2.14.3.2406.01 +version=2.14.4.2406.02 openFormulaForcedEditing=false \ No newline at end of file From 560fabe0759e6dbe705205b526d00e777bed2225 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jun 2024 16:28:48 +0800 Subject: [PATCH 21/25] =?UTF-8?q?=E8=B4=A6=E5=A5=97=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E5=AF=BC=E5=85=A5=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E4=B8=80=E5=88=97=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=B2=A1=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalarySobRangeServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java index 0432abfee..0a4b06cb4 100644 --- a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java @@ -293,7 +293,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); - List salarySobRangeImportLists = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 5, "SpecialAddDeductionTemplate.xlsx"); + List salarySobRangeImportLists = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 6, "SpecialAddDeductionTemplate.xlsx"); int total = salarySobRangeImportLists.size(); int index = 0; From 2be7ec31dea1ddb8067769fe3b3a1cd9dd19954b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 20 Jun 2024 16:39:35 +0800 Subject: [PATCH 22/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SalarySendServiceImpl.java | 79 ++++++------------- 1 file changed, 24 insertions(+), 55 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 5e61fec2d..6d71d4bb7 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -469,26 +469,24 @@ public class SalarySendServiceImpl extends Service implements SalarySendService @Override public Map mySalaryBill(Long salaryInfoId, Long currentEmployeeId) { -// List salarySendInfos = new LambdaQueryChainWrapper<>(salarySendInfoMapper) -// .eq(SalarySendInfoPO::getDeleteType, 0) -// .eq(SalarySendInfoPO::getTenantKey, currentTenantKey) -// .eq(SalarySendInfoPO::getId, salaryInfoId).list(); - if (salaryInfoId == null) { - throw new SalaryRunTimeException("工资单记录不存在!"); + throw new SalaryRunTimeException("工资单id为空!"); } - SalarySendInfoPO po = new SalarySendInfoPO(); - po.setDeleteType(0); - po.setId(salaryInfoId); - List salarySendInfos = salarySendInfoMapper.listSome(po); - if (CollectionUtils.isEmpty(salarySendInfos)) { + SalarySendInfoPO salarySendInfo = getSalarySendInfoMapper().getById(salaryInfoId); + if (salarySendInfo == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "工资单信息不存在")); } - if (currentEmployeeId.compareTo(salarySendInfos.get(0).getEmployeeId()) != 0) { + + if (currentEmployeeId.compareTo(salarySendInfo.getEmployeeId()) != 0) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "当前账号无法查看此工资单")); } - SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + + // 获取默认模板信息 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("工资单记录不存在"); + } //工资单查看时效性 Date limitMonth = getLimitMonth(); @@ -497,11 +495,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "仅能查看" + salaryBillViewingLimitSetting.getLimitMonth() + "月内的工资单")); } - // 获取默认模板信息 - SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); - if (salarySendPO == null) { - throw new SalaryRunTimeException("工资单不存在"); - } // 获取、记录首次查看时间 Date firstReadingTime = new Date(); if (salarySendInfo.getFirstReadingTime() == null) { @@ -534,10 +527,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // .eq(SalarySendPO::getTenantKey, currentTenantKey) // .eq(SalarySendPO::getId, salarySendInfo.getSalarySendId()).list(); - SalarySendPO sendPo = new SalarySendPO(); - sendPo.setDeleteType(0); - sendPo.setId(salarySendInfo.getSalarySendId()); - List salarySends = mapper.listSome(sendPo); + List salarySends = mapper.listSome(SalarySendPO.builder().id(salarySendInfo.getSalarySendId()).build()); if (CollectionUtils.isEmpty(salarySends)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在")); } @@ -565,15 +555,11 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 获取薪资项目数据 - - SalaryAcctResultPO acctPo = new SalaryAcctResultPO(); - acctPo.setDeleteType(0); - acctPo.setSalaryAcctRecordId(salarySendInfo.getSalaryAcctRecordId()); - acctPo.setEmployeeId(currentEmployeeId); - List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(acctPo); + Long salaryAcctRecordId = salarySendInfo.getSalaryAcctRecordId(); + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctRecordId(salaryAcctRecordId).employeeId(currentEmployeeId).build()); encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salarySendInfo.getSalaryAcctRecordId()); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException("薪资核算记录不存在!"); } @@ -1841,48 +1827,31 @@ public class SalarySendServiceImpl extends Service implements SalarySendService Long recipient = param.getRecipient(); if (salaryInfoId == null) { - throw new SalaryRunTimeException("工资单记录不存在!"); + throw new SalaryRunTimeException("工资单id为空!"); } - SalarySendInfoPO po = new SalarySendInfoPO(); - po.setDeleteType(0); - po.setId(salaryInfoId); - List salarySendInfos = salarySendInfoMapper.listSome(po); - if (CollectionUtils.isEmpty(salarySendInfos)) { + SalarySendInfoPO salarySendInfo = getSalarySendInfoMapper().getById(salaryInfoId); + if (salarySendInfo == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "工资单信息不存在")); } - SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); - // 获取默认模板信息 SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); if (salarySendPO == null) { - throw new SalaryRunTimeException("工资单不存在"); + throw new SalaryRunTimeException("工资单记录不存在"); } - - SalarySendPO sendPo = new SalarySendPO(); - sendPo.setDeleteType(0); - sendPo.setId(salarySendInfo.getSalarySendId()); - List salarySends = mapper.listSome(sendPo); - if (CollectionUtils.isEmpty(salarySends)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "工资单发放不存在")); - } - SalarySendPO salarySend = salarySends.get(0); - Date salaryMonth = salarySend.getSalaryMonth(); - - // 获取模板 - SalarySobPO salarySob = getSalarySobService(user).getById(salarySend.getSalarySobId()); + SalarySobPO salarySob = getSalarySobService(user).getById(salarySendPO.getSalarySobId()); TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); - List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Arrays.asList(salarySend.getSalarySobId(), salarySob.getId())); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Arrays.asList(salarySendPO.getSalarySobId(), salarySob.getId())); if (CollectionUtils.isEmpty(salaryTemplates)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100518, "没有默认模板,无法发送")); } - SalaryBillSendDTO salaryBillSendDTO = getSalaryBillService(user).buildSendParams(sendPo, taxAgentPO.getName(), salaryTemplates.get(0)); + SalaryBillSendDTO salaryBillSendDTO = getSalaryBillService(user).buildSendParams(salarySendPO, taxAgentPO.getName(), salaryTemplates.get(0)); SalaryTemplatePO salaryTemplate = salaryBillSendDTO.getSalaryTemplate(); - if (salaryTemplate==null) { + if (salaryTemplate == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100513, "没有默认模板,无法查看")); } @@ -1973,7 +1942,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("employeeInformation", employeeInformation); map.put("salaryGroups", itemSetListDTOS); - salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salaryMonth, recipient)); + salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salarySendPO.getSalaryMonth(), recipient)); // 工资单水印文本型动态变量 == 处理 handleSalaryWatermark(salaryTemplate, salarySendInfo, recipient); map.put("salaryTemplate", salaryTemplate); From 537992187ef716bf02aaada345d642317e1d2f57 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 20 Jun 2024 16:39:48 +0800 Subject: [PATCH 23/25] =?UTF-8?q?update=20=E8=AE=BE=E7=BD=AE=E4=BA=86?= =?UTF-8?q?=E5=A4=9A=E4=B8=AAdefault=5Fvalue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 8765b0586..102f35747 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -230,9 +230,6 @@ item_hide=#{itemHide}, - - default_value=#{defaultValue}, - WHERE id = #{id} AND delete_type = 0 From a90e32fbf478d74d68cb60d2c1a566e4814ab36c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 20 Jun 2024 17:08:01 +0800 Subject: [PATCH 24/25] =?UTF-8?q?map=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml | 3 +++ src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 77e4b37d9..7b8f39b3b 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -24,6 +24,9 @@ + + + diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 102f35747..03b5a240f 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -16,6 +16,7 @@ + @@ -170,6 +171,7 @@ pattern=#{pattern}, value_type=#{valueType}, item_hide=#{itemHide}, + default_value=#{defaultValue}, WHERE id = #{id} AND delete_type = 0 From d5dd3093cbfbbd6db47d3b13f6e806edca851062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 21 Jun 2024 13:38:44 +0800 Subject: [PATCH 25/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AddUpDeductionServiceImpl.java | 5 +- .../impl/AddUpSituationServiceImpl.java | 53 +++++++++---------- .../impl/TaxDeclarationExcelServiceImpl.java | 8 +-- .../engine/salary/util/excel/ExcelUtil.java | 6 +-- 4 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java index 80440924b..6343bd692 100644 --- a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java @@ -11,14 +11,15 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.AddUpDeductionBiz; import com.engine.salary.common.LocalDateRange; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.constant.SzyhApiConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.bo.DataCollectionBO; import com.engine.salary.entity.datacollection.dto.AddUpDeductionDTO; import com.engine.salary.entity.datacollection.dto.AddUpDeductionRecordDTO; import com.engine.salary.entity.datacollection.dto.AddUpDeductionRequestFailListDTO; @@ -66,6 +67,7 @@ import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelParseHelper; @@ -75,7 +77,6 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.engine.salary.util.db.IdGenerator; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index 7ffc42f08..4692bb916 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -1,7 +1,7 @@ package com.engine.salary.service.impl; -import com.alibaba.fastjson.JSON; import cn.hutool.core.util.NumberUtil; +import com.alibaba.fastjson.JSON; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.api.browser.util.ConditionFactory; @@ -13,7 +13,6 @@ import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.AddUpSituationBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SzyhApiConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -349,18 +348,18 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : Util.null2String(dto.getAddUpIncome())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpSubtraction())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpSocialSecurityTotal())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getActualAddUpAdvanceTax())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getTaxAdjustment())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxableIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : Util.null2String(dto.getAddUpSubtraction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : Util.null2String(dto.getAddUpSocialSecurityTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getActualAddUpAdvanceTax()) ? new BigDecimal(dto.getActualAddUpAdvanceTax()) : Util.null2String(dto.getActualAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getTaxAdjustment()) ? new BigDecimal(dto.getTaxAdjustment()) : Util.null2String(dto.getTaxAdjustment())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxableIncome()) ? new BigDecimal(dto.getAddUpTaxableIncome()) : Util.null2String(dto.getAddUpTaxableIncome())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -381,7 +380,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation private List> getExcelRowDetailList(AddUpSituationQueryParam param) { long employeeId = user.getUID(); //excel标题 - List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", + List title = Arrays.asList("姓名", "税款所属期", "个税扣缴义务人", "部门", "手机号", "工号", "累计收入额", "累计减除费用", "累计社保个人合计", "累计公积金个人合计", "累计企业(职业)年金及其他福利", "累计其他扣除", "累计免税收入", "累计准予扣除的捐赠额", "累计减免税额", "累计已预扣预缴税额", "实际累计已预扣预缴税额", "个税调差", "累计应纳税所得额"); @@ -408,18 +407,18 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : Util.null2String(dto.getAddUpIncome())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpSubtraction())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpSocialSecurityTotal())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getActualAddUpAdvanceTax())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getTaxAdjustment())); - cellList.add(NumberUtil.isNumber() ? Util.null2String(dto.getAddUpTaxableIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : Util.null2String(dto.getAddUpSubtraction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : Util.null2String(dto.getAddUpSocialSecurityTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getActualAddUpAdvanceTax()) ? new BigDecimal(dto.getActualAddUpAdvanceTax()) : Util.null2String(dto.getActualAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getTaxAdjustment()) ? new BigDecimal(dto.getTaxAdjustment()) : Util.null2String(dto.getTaxAdjustment())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxableIncome()) ? new BigDecimal(dto.getAddUpTaxableIncome()) : Util.null2String(dto.getAddUpTaxableIncome())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index f93af5fd5..63581da27 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -7,8 +7,6 @@ import com.engine.core.impl.Service; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.hrmelog.entity.dto.LoggerContext; -import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.dto.FailEmployeeListDTO; @@ -50,8 +48,6 @@ import java.util.*; import java.util.stream.Collectors; import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; -import java.math.BigDecimal; -import java.util.*; /** * 个税申报表导出 @@ -110,8 +106,8 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar // 转成个税申报表明细 TaxDeclarationValueListDTO taxDeclarationValueListDTO = getTaxDeclarationValueService(user).convert2List(taxDeclarationPO, taxDeclarationValues); // excel导出的数据 - List> rows = Lists.newArrayListWithExpectedSize(count); - List headerList = Lists.newArrayList(); + List> rows = Lists.newArrayList(); + List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); // 解析表头 diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index 61a1bf326..55f5dc54e 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -1,7 +1,7 @@ package com.engine.salary.util.excel; -import com.engine.salary.util.JsonUtil; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.google.common.collect.Lists; @@ -20,10 +20,10 @@ import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class ExcelUtil {