From e80a3497d94e572d9d292e7b57c8eedce2273afc Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 17 Oct 2023 11:40:28 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=AF=BC=E5=85=A5=E9=80=BB=E8=BE=91=E4=B8=AD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 154 +++++++++++++++++- ...InsuranceArchivesBaseAdjustHistoryDTO.java | 103 ++++++++++++ .../InsuranceArchivesBaseAdjustHistoryPO.java | 98 +++++++++++ .../InsuranceBaseAdjustHistoryMapper.java | 24 +++ .../InsuranceBaseAdjustHistoryMapper.xml | 137 ++++++++++++++++ .../service/impl/SISchemeServiceImpl.java | 46 ++++-- 6 files changed, 536 insertions(+), 26 deletions(-) create mode 100644 src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java create mode 100644 src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java create mode 100644 src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java create mode 100644 src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index c03ef2a39..f670de0e0 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -18,10 +18,7 @@ import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.bo.InsuranceArchivesBO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesFundSchemeDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesOtherSchemeDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesSocialSchemeDTO; +import com.engine.salary.entity.siarchives.dto.*; import com.engine.salary.entity.siarchives.param.*; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; @@ -33,10 +30,7 @@ import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.mapper.siarchives.FundSchemeMapper; -import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; -import com.engine.salary.mapper.siarchives.OtherSchemeMapper; -import com.engine.salary.mapper.siarchives.SocialSchemeMapper; +import com.engine.salary.mapper.siarchives.*; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; @@ -58,6 +52,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.session.SqlSession; +import org.springframework.beans.BeanUtils; import org.springframework.util.StopWatch; import weaver.conn.mybatis.MyBatisFactory; import weaver.general.Util; @@ -1822,4 +1817,147 @@ public class SIArchivesBiz { } return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds); } + + public List dealSocialBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesSocialSchemePO po : adjustList) { + List oldBaseInfoList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getSocialSchemeId()) + .adjustAfterBaseJson(po.getSocialPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesSocialSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getSocialPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getSocialSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + + } + public List dealFundBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesFundSchemePO po : adjustList) { + List oldBaseInfoList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getFundSchemeId()) + .adjustAfterBaseJson(po.getFundPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesFundSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getFundPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getFundSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + } + public List dealOtherBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesOtherSchemePO po : adjustList) { + List oldBaseInfoList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getOtherSchemeId()) + .adjustAfterBaseJson(po.getOtherPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesOtherSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getOtherPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getOtherSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + } + + public List createAdjustInfo(InsuranceArchivesBaseAdjustHistoryDTO adjustInfo) { + List toCreateAdjustHistoryList = new ArrayList<>(); + if(adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() == null) { + Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { + }); + for (String key : adjustAfterBaseMap.keySet()) { + InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustAfterBaseValue((String) adjustAfterBaseMap.get(key)); + + toCreateAdjustHistoryList.add(adjustItem); + } + } else if (adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() != null) { + Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { + }); + Map adjustBeforeBaseMap = JSON.parseObject(adjustInfo.getAdjustBeforeBaseJson(), new TypeReference>() { + }); + Map reDealMap = new HashMap<>(); + reDealMap.putAll(adjustAfterBaseMap); + reDealMap.putAll(adjustBeforeBaseMap); + for (String key : reDealMap.keySet()) { + String beforeValue = (String) adjustBeforeBaseMap.get(key); + String afterValue = (String) adjustAfterBaseMap.get(key); + if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { + continue; + } + InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustBeforeBaseValue(beforeValue); + adjustItem.setAdjustAfterBaseValue(afterValue); + + toCreateAdjustHistoryList.add(adjustItem); + } + } + return toCreateAdjustHistoryList; + } + + /** + * 新增福利档案基数调整记录 + * + */ + public void batchInsertAdjustHistory(List adjustHistoryList, long employeeId) { + + if (CollectionUtils.isEmpty(adjustHistoryList)) { + return; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); + List> partition = Lists.partition(adjustHistoryList, 100); + partition.forEach(mapper::batchSave); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } + } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java new file mode 100644 index 000000000..6fa8e96ab --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java @@ -0,0 +1,103 @@ +package com.engine.salary.entity.siarchives.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: sy + * @Description: + * @Date: 2023/10/16 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InsuranceArchivesBaseAdjustHistoryDTO { + + /** + * id + */ + private Long id; + + /** + * Աid + */ + private Long employeeId; + + /** + * ˰۽id + */ + private Long paymentOrganization; + + /** + * + */ + private Integer welfareType; + + /** + * ǰid + */ + private Long adjustBeforeSchemeId; + /** + * 󷽰id + */ + private Long adjustAfterSchemeId; + /** + * ǰֵ + */ + private String adjustBeforeBaseValue; + /** + * ֵ + */ + private String adjustAfterBaseValue; + + /** + * id + */ + private Long adjustWelfareItemId; + + /** + * + */ + private Long operator; + + /** + * ʱ + */ + private Date operateTime; + + /** + * ⻧key + */ + private String tenantKey; + + /** + * id + */ + private Long creator; + + /** + * Ƿɾ + */ + private Integer deleteType; + + /** + * ʱ + */ + private Date createTime; + + /** + * ʱ + */ + private Date updateTime; + + + private String adjustBeforeBaseJson; + + private String adjustAfterBaseJson; + +} diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java new file mode 100644 index 000000000..1c78296b2 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java @@ -0,0 +1,98 @@ +package com.engine.salary.entity.siarchives.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: sy + * @Description: ʷ¼ + * @Date: 2023/10/16 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_insurance_base_adjust_history +public class InsuranceArchivesBaseAdjustHistoryPO { + + /** + * id + */ + private Long id; + + /** + * Աid + */ + private Long employeeId; + + /** + * ˰۽id + */ + private Long paymentOrganization; + + /** + * + */ + private Integer welfareType; + + /** + * ǰid + */ + private Long adjustBeforeSchemeId; + /** + * 󷽰id + */ + private Long adjustAfterSchemeId; + /** + * ǰֵ + */ + private String adjustBeforeBaseValue; + /** + * ֵ + */ + private String adjustAfterBaseValue; + + /** + * id + */ + private Long adjustWelfareItemId; + + /** + * + */ + private Long operator; + + /** + * ʱ + */ + private Date operateTime; + + /** + * ⻧key + */ + private String tenantKey; + + /** + * id + */ + private Long creator; + + /** + * Ƿɾ + */ + private Integer deleteType; + + /** + * ʱ + */ + private Date createTime; + + /** + * ʱ + */ + private Date updateTime; +} diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java new file mode 100644 index 000000000..412c7655c --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java @@ -0,0 +1,24 @@ +package com.engine.salary.mapper.siarchives; + +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseAdjustHistoryPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author sy + * @Date 2023/10/16 + **/ +public interface InsuranceBaseAdjustHistoryMapper { + + /** + * + */ + void batchSave(@Param("infos") List infos); + + /** + * ݸ˰۽˺Աidȡ¼ + */ + List listByEmployeeIdAndPayOrg(@Param("paymentOrganization")Long paymentOrganization, @Param("employeeId")Long employeeId); + +} diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml new file mode 100644 index 000000000..25cd391ed --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.payment_organization + , t.adjust_before_scheme_id + , t.adjust_after_scheme_id + , t.adjust_before_base_value + , t.adjust_after_base_value + , t.adjust_welfare_item_id + , t.operator + , t.operate_time + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.adjustBeforeSchemeId}, + #{item.adjustAfterSchemeId}, + #{item.adjustBeforeBaseValue}, + #{item.adjustAfterBaseValue}, + #{item.adjustWelfareItemId}, + #{item.operator}, + #{item.operateTime}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + ) + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.adjustBeforeSchemeId,jdbcType=DOUBLE}, + #{item.adjustAfterSchemeId,jdbcType=DOUBLE}, + #{item.adjustBeforeBaseValue,jdbcType=VARCHAR}, + #{item.adjustAfterBaseValue,jdbcType=VARCHAR}, + #{item.adjustWelfareItemId,jdbcType=DOUBLE}, + #{item.operator,jdbcType=DOUBLE}, + #{item.operateTime}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.creator,jdbcType=DOUBLE}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + from dual + + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.adjustBeforeSchemeId}, + #{item.adjustAfterSchemeId}, + #{item.adjustBeforeBaseValue}, + #{item.adjustAfterBaseValue}, + #{item.adjustWelfareItemId}, + #{item.operator}, + #{item.operateTime}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + ) + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 205c9d459..a807040d8 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1379,53 +1379,63 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //导入社保档案 List socialSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getSocial).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(socialSchemePOS)) { -// socialSchemePOS = socialSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesSocialSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List socialEmployeeIds = socialSchemePOS.stream().map(InsuranceArchivesSocialSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> socialEmployeeIdPartition = Lists.partition(socialEmployeeIds, 100); -// socialEmployeeIdPartition.forEach(getSocialSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 socialSchemePOS = socialSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS); + + //根据人员id和个税扣缴义务人id删除对应旧档案 + socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); + + //新建新档案 List insuranceArchivesSocialSchemePOS = encryptUtil.encryptList(socialSchemePOS, InsuranceArchivesSocialSchemePO.class); List> partition = Lists.partition(insuranceArchivesSocialSchemePOS, 100); partition.forEach(getSocialSchemeMapper()::batchSave); + + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustSocialHistoryPOList, user.getUID()); } //导入公积金档案 List fundSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getFund).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(fundSchemePOS)) { -// fundSchemePOS = fundSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesFundSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List fundEmployeeIds = fundSchemePOS.stream().map(InsuranceArchivesFundSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> fundEmployeeIdsPartition = Lists.partition(fundEmployeeIds, 100); -// fundEmployeeIdsPartition.forEach(getFundSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 fundSchemePOS = fundSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS); + //根据人员id和个税扣缴义务人id删除对应档案 + fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); + //新建新档案 List insuranceArchivesFundSchemePOS = encryptUtil.encryptList(fundSchemePOS, InsuranceArchivesFundSchemePO.class); List> partition = Lists.partition(insuranceArchivesFundSchemePOS, 100); partition.forEach(getFundSchemeMapper()::batchSave); + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustFundHistoryPOList, user.getUID()); } //导入其他福利档案 List otherSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getOther).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(otherSchemePOS)) { -// otherSchemePOS = otherSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesOtherSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List otherEmployeeIds = otherSchemePOS.stream().map(InsuranceArchivesOtherSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> otherEmployeeIdsPartition = Lists.partition(otherEmployeeIds, 100); -// otherEmployeeIdsPartition.forEach(getOtherSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 otherSchemePOS = otherSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS); + + //根据人员id和个税扣缴义务人id删除对应档案 + otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); + //新建新档案 List insuranceArchivesOtherSchemePOS = encryptUtil.encryptList(otherSchemePOS, InsuranceArchivesOtherSchemePO.class); List> partition = Lists.partition(insuranceArchivesOtherSchemePOS, 100); partition.forEach(getOtherSchemeMapper()::batchSave); + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustOtherHistoryPOList, user.getUID()); } //导入福利档案基础信息 List baseInfoPOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getBaseInfo).collect(Collectors.toList()); From 0225e40e57b40bd8cd0942ec72c2ae182719a8c8 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 17 Oct 2023 17:46:54 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E7=BC=96=E8=BE=91=E4=BF=9D=E5=AD=98=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=B8=AD=E5=A2=9E=E5=8A=A0=E5=9F=BA=E6=95=B0=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 101 ++++++++++++++++-- .../InsuranceBaseAdjustHistoryMapper.xml | 11 +- .../service/impl/SISchemeServiceImpl.java | 6 +- 3 files changed, 101 insertions(+), 17 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index f670de0e0..5730ffa05 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -662,8 +662,22 @@ public class SIArchivesBiz { otherIds.add(param.getId()); List oldOtherInfoList = otherSchemeMapper.getOtherById(otherIds); + //设置福利档案基数调整记录数据 + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(param.getOtherSchemeId()) + .adjustAfterBaseJson(paramReq.getPaymentForm()) + .welfareType(paramReq.getWelfareType().getValue()) + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build(); + if (oldOtherInfoList.size() == 1) { InsuranceArchivesOtherSchemePO oldOtherInfo = oldOtherInfoList.get(0); + //设置福利档案基数调整记录数据 + encryptUtil.decrypt(oldOtherInfo, InsuranceArchivesOtherSchemePO.class); + adjustInfo.setAdjustBeforeBaseJson(oldOtherInfo.getOtherPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldOtherInfo.getOtherSchemeId()); + //新数据 InsuranceArchivesOtherSchemePO updateOtherInfo = InsuranceArchivesOtherSchemePO.builder() .id(oldOtherInfo.getId()) @@ -740,10 +754,13 @@ public class SIArchivesBiz { } else { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "档案不存在!")); } - - } + //生成福利档案基数调整记录数据 + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + //福利档案基数调整记录数据入库 + batchInsertAdjustHistory(adjustHistoryList, employeeId); + } finally { sqlSession.close(); } @@ -771,8 +788,22 @@ public class SIArchivesBiz { fundIds.add(param.getId()); List oldFundInfoList = fundSchemeMapper.getFundById(fundIds); + //设置福利档案基数调整记录数据 + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(param.getFundSchemeId()) + .adjustAfterBaseJson(paramReq.getPaymentForm()) + .welfareType(paramReq.getWelfareType().getValue()) + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build(); + if (oldFundInfoList.size() == 1) { InsuranceArchivesFundSchemePO oldFundInfo = oldFundInfoList.get(0); + //设置福利档案基数调整记录数据 + encryptUtil.decrypt(oldFundInfo, InsuranceArchivesFundSchemePO.class); + adjustInfo.setAdjustBeforeBaseJson(oldFundInfo.getFundPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldFundInfo.getFundSchemeId()); + //新数据 InsuranceArchivesFundSchemePO updateFundInfo = InsuranceArchivesFundSchemePO.builder() .id(oldFundInfo.getId()) .fundSchemeId(param.getFundSchemeId()) @@ -855,6 +886,11 @@ public class SIArchivesBiz { } + //生成福利档案基数调整记录数据 + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + //福利档案基数调整记录数据入库 + batchInsertAdjustHistory(adjustHistoryList, employeeId); + } finally { sqlSession.close(); } @@ -888,10 +924,25 @@ public class SIArchivesBiz { List socialIds = new ArrayList(); socialIds.add(param.getId()); List oldSocialInfoList = socialSchemeMapper.getSocialById(socialIds); + + //设置福利档案基数调整记录数据 + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(param.getSocialSchemeId()) + .adjustAfterBaseJson(paramReq.getPaymentForm()) + .welfareType(paramReq.getWelfareType().getValue()) + .employeeId(param.getEmployeeId()) + .paymentOrganization(param.getPaymentOrganization()) + .build(); + //组装新数据 if (oldSocialInfoList.size() == 1) { + //老数据 InsuranceArchivesSocialSchemePO oldSocialInfo = oldSocialInfoList.get(0); - + //设置福利档案基数调整记录数据 + encryptUtil.decrypt(oldSocialInfo, InsuranceArchivesSocialSchemePO.class); + adjustInfo.setAdjustBeforeBaseJson(oldSocialInfo.getSocialPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldSocialInfo.getSocialSchemeId()); + //新数据 InsuranceArchivesSocialSchemePO updateSocialInfo = InsuranceArchivesSocialSchemePO.builder() .id(oldSocialInfo.getId()) @@ -974,6 +1025,10 @@ public class SIArchivesBiz { } + //生成福利档案基数调整记录数据 + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + //福利档案基数调整记录数据入库 + batchInsertAdjustHistory(adjustHistoryList, employeeId); } finally { sqlSession.close(); } @@ -1818,9 +1873,10 @@ public class SIArchivesBiz { return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds); } - public List dealSocialBaseAdjustInfoList(List adjustList) { + public List dealSocialBaseAdjustInfoList(List adjustList, Long creator) { List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { + //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesSocialSchemePO po : adjustList) { List oldBaseInfoList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); @@ -1835,20 +1891,22 @@ public class SIArchivesBiz { if (oldBaseInfoList.size() == 1) { //新增调整记录,变更 InsuranceArchivesSocialSchemePO oldBaseInfo = oldBaseInfoList.get(0); + encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesSocialSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getSocialPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getSocialSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保档案存在冗余数据!")); } - adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + adjustHistoryList.addAll(createAdjustInfo(adjustInfo, creator)); } } return adjustHistoryList; } - public List dealFundBaseAdjustInfoList(List adjustList) { + public List dealFundBaseAdjustInfoList(List adjustList, Long creator) { List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { + //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesFundSchemePO po : adjustList) { List oldBaseInfoList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); @@ -1863,19 +1921,21 @@ public class SIArchivesBiz { if (oldBaseInfoList.size() == 1) { //新增调整记录,变更 InsuranceArchivesFundSchemePO oldBaseInfo = oldBaseInfoList.get(0); + encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesFundSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getFundPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getFundSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金档案存在冗余数据!")); } - adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + adjustHistoryList.addAll(createAdjustInfo(adjustInfo, creator)); } } return adjustHistoryList; } - public List dealOtherBaseAdjustInfoList(List adjustList) { + public List dealOtherBaseAdjustInfoList(List adjustList, Long creator) { List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { + //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesOtherSchemePO po : adjustList) { List oldBaseInfoList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); @@ -1890,19 +1950,23 @@ public class SIArchivesBiz { if (oldBaseInfoList.size() == 1) { //新增调整记录,变更 InsuranceArchivesOtherSchemePO oldBaseInfo = oldBaseInfoList.get(0); + encryptUtil.decrypt(oldBaseInfo, InsuranceArchivesOtherSchemePO.class); adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getOtherPaymentBaseString()); adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getOtherSchemeId()); } else if (oldBaseInfoList.size() > 1) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利档案存在冗余数据!")); } - adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + adjustHistoryList.addAll(createAdjustInfo(adjustInfo, creator)); } } return adjustHistoryList; } - public List createAdjustInfo(InsuranceArchivesBaseAdjustHistoryDTO adjustInfo) { + //生成基数调整记录(基数单元未变化则忽略) + public List createAdjustInfo(InsuranceArchivesBaseAdjustHistoryDTO adjustInfo, Long creator) { + Date now = new Date(); List toCreateAdjustHistoryList = new ArrayList<>(); + //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 if(adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() == null) { Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { }); @@ -1911,7 +1975,14 @@ public class SIArchivesBiz { BeanUtils.copyProperties(adjustInfo, adjustItem); adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); adjustItem.setAdjustAfterBaseValue((String) adjustAfterBaseMap.get(key)); - + adjustItem.setOperateTime(now); + adjustItem.setOperator(creator); + adjustItem.setCreator(creator); + adjustItem.setCreateTime(now); + adjustItem.setUpdateTime(now); + adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + adjustItem.setId(IdGenerator.generate()); toCreateAdjustHistoryList.add(adjustItem); } } else if (adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() != null) { @@ -1933,6 +2004,14 @@ public class SIArchivesBiz { adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); adjustItem.setAdjustBeforeBaseValue(beforeValue); adjustItem.setAdjustAfterBaseValue(afterValue); + adjustItem.setOperateTime(now); + adjustItem.setOperator(creator); + adjustItem.setCreator(creator); + adjustItem.setCreateTime(now); + adjustItem.setUpdateTime(now); + adjustItem.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + adjustItem.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + adjustItem.setId(IdGenerator.generate()); toCreateAdjustHistoryList.add(adjustItem); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml index 25cd391ed..46a9d044a 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -6,6 +6,7 @@ + @@ -26,6 +27,7 @@ t.id , t.employee_id , t.payment_organization + , t.welfare_type , t.adjust_before_scheme_id , t.adjust_after_scheme_id , t.adjust_before_base_value @@ -42,7 +44,7 @@ INSERT INTO hrsa_insurance_base_adjust_history - (id,employee_id,payment_organization, + (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, @@ -53,6 +55,7 @@ #{item.id}, #{item.employeeId}, #{item.paymentOrganization}, + #{item.welfareType}, #{item.adjustBeforeSchemeId}, #{item.adjustAfterSchemeId}, #{item.adjustBeforeBaseValue}, @@ -70,7 +73,7 @@ INSERT INTO hrsa_insurance_base_adjust_history - (id,employee_id,payment_organization, + (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, @@ -80,6 +83,7 @@ #{item.id,jdbcType=DOUBLE}, #{item.employeeId,jdbcType=DOUBLE}, #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.welfareType,jdbcType=DOUBLE}, #{item.adjustBeforeSchemeId,jdbcType=DOUBLE}, #{item.adjustAfterSchemeId,jdbcType=DOUBLE}, #{item.adjustBeforeBaseValue,jdbcType=VARCHAR}, @@ -98,7 +102,7 @@ INSERT INTO hrsa_insurance_base_adjust_history - (id,employee_id,payment_organization, + (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, adjust_welfare_item_id,operator,operate_time, @@ -108,6 +112,7 @@ #{item.id}, #{item.employeeId}, #{item.paymentOrganization}, + #{item.welfareType}, #{item.adjustBeforeSchemeId}, #{item.adjustAfterSchemeId}, #{item.adjustBeforeBaseValue}, diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index a807040d8..84d9a4db4 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1385,7 +1385,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS); + List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应旧档案 socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); @@ -1407,7 +1407,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS); + List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应档案 fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); //新建新档案 @@ -1426,7 +1426,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS); + List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应档案 otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); From 9ac549c06a303a4b3ded721051ec247628d529a1 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 18 Oct 2023 13:34:05 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 74 +++++++++---- ...InsuranceArchivesBaseAdjustHistoryDTO.java | 103 ------------------ .../dto/InsuranceArchivesBaseHistoryDTO.java | 87 +++++++++++++++ .../param/SIArchiveBaseHistoryListParam.java | 28 +++++ ...va => InsuranceArchivesBaseHistoryPO.java} | 44 +++----- .../InsuranceBaseAdjustHistoryMapper.java | 11 +- .../InsuranceBaseAdjustHistoryMapper.xml | 38 +++++-- .../salary/service/SIArchivesService.java | 6 + .../service/impl/SIArchivesServiceImpl.java | 20 ++++ .../service/impl/SISchemeServiceImpl.java | 6 +- .../salary/web/SIArchivesController.java | 14 +++ 11 files changed, 258 insertions(+), 173 deletions(-) delete mode 100644 src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java create mode 100644 src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java create mode 100644 src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java rename src/com/engine/salary/entity/siarchives/po/{InsuranceArchivesBaseAdjustHistoryPO.java => InsuranceArchivesBaseHistoryPO.java} (66%) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 5730ffa05..04139c736 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -663,7 +663,7 @@ public class SIArchivesBiz { List oldOtherInfoList = otherSchemeMapper.getOtherById(otherIds); //设置福利档案基数调整记录数据 - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getOtherSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) .welfareType(paramReq.getWelfareType().getValue()) @@ -757,7 +757,7 @@ public class SIArchivesBiz { } //生成福利档案基数调整记录数据 - List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); //福利档案基数调整记录数据入库 batchInsertAdjustHistory(adjustHistoryList, employeeId); @@ -789,7 +789,7 @@ public class SIArchivesBiz { List oldFundInfoList = fundSchemeMapper.getFundById(fundIds); //设置福利档案基数调整记录数据 - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getFundSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) .welfareType(paramReq.getWelfareType().getValue()) @@ -887,7 +887,7 @@ public class SIArchivesBiz { } //生成福利档案基数调整记录数据 - List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); //福利档案基数调整记录数据入库 batchInsertAdjustHistory(adjustHistoryList, employeeId); @@ -926,7 +926,7 @@ public class SIArchivesBiz { List oldSocialInfoList = socialSchemeMapper.getSocialById(socialIds); //设置福利档案基数调整记录数据 - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(param.getSocialSchemeId()) .adjustAfterBaseJson(paramReq.getPaymentForm()) .welfareType(paramReq.getWelfareType().getValue()) @@ -1026,7 +1026,7 @@ public class SIArchivesBiz { } //生成福利档案基数调整记录数据 - List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); + List adjustHistoryList = createAdjustInfo(adjustInfo, employeeId); //福利档案基数调整记录数据入库 batchInsertAdjustHistory(adjustHistoryList, employeeId); } finally { @@ -1873,15 +1873,15 @@ public class SIArchivesBiz { return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds); } - public List dealSocialBaseAdjustInfoList(List adjustList, Long creator) { - List adjustHistoryList = new ArrayList<>(); + public List dealSocialBaseAdjustInfoList(List adjustList, Long creator) { + List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesSocialSchemePO po : adjustList) { List oldBaseInfoList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getSocialSchemeId()) .adjustAfterBaseJson(po.getSocialPaymentBaseString()) .welfareType(po.getWelfareType()) @@ -1903,15 +1903,15 @@ public class SIArchivesBiz { return adjustHistoryList; } - public List dealFundBaseAdjustInfoList(List adjustList, Long creator) { - List adjustHistoryList = new ArrayList<>(); + public List dealFundBaseAdjustInfoList(List adjustList, Long creator) { + List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesFundSchemePO po : adjustList) { List oldBaseInfoList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getFundSchemeId()) .adjustAfterBaseJson(po.getFundPaymentBaseString()) .welfareType(po.getWelfareType()) @@ -1932,15 +1932,15 @@ public class SIArchivesBiz { } return adjustHistoryList; } - public List dealOtherBaseAdjustInfoList(List adjustList, Long creator) { - List adjustHistoryList = new ArrayList<>(); + public List dealOtherBaseAdjustInfoList(List adjustList, Long creator) { + List adjustHistoryList = new ArrayList<>(); if (adjustList.size() > 0) { //遍历待更新的福利档案数据,对每组档案生成基数调整记录(基数单元未变化则忽略) for (InsuranceArchivesOtherSchemePO po : adjustList) { List oldBaseInfoList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); - InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + InsuranceArchivesBaseHistoryDTO adjustInfo = InsuranceArchivesBaseHistoryDTO.builder() .adjustAfterSchemeId(po.getOtherSchemeId()) .adjustAfterBaseJson(po.getOtherPaymentBaseString()) .welfareType(po.getWelfareType()) @@ -1963,15 +1963,15 @@ public class SIArchivesBiz { } //生成基数调整记录(基数单元未变化则忽略) - public List createAdjustInfo(InsuranceArchivesBaseAdjustHistoryDTO adjustInfo, Long creator) { + public List createAdjustInfo(InsuranceArchivesBaseHistoryDTO adjustInfo, Long creator) { Date now = new Date(); - List toCreateAdjustHistoryList = new ArrayList<>(); + List toCreateAdjustHistoryList = new ArrayList<>(); //旧档案不存在基数信息,则直接遍历新的基数数据,生成调整记录;旧档案存在基数信息,则合并新旧基数数据,遍历合并后的技术数据中的key,生成调整记录。 if(adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() == null) { Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { }); for (String key : adjustAfterBaseMap.keySet()) { - InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); BeanUtils.copyProperties(adjustInfo, adjustItem); adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); adjustItem.setAdjustAfterBaseValue((String) adjustAfterBaseMap.get(key)); @@ -1999,7 +1999,7 @@ public class SIArchivesBiz { if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { continue; } - InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + InsuranceArchivesBaseHistoryPO adjustItem = new InsuranceArchivesBaseHistoryPO(); BeanUtils.copyProperties(adjustInfo, adjustItem); adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); adjustItem.setAdjustBeforeBaseValue(beforeValue); @@ -2023,7 +2023,7 @@ public class SIArchivesBiz { * 新增福利档案基数调整记录 * */ - public void batchInsertAdjustHistory(List adjustHistoryList, long employeeId) { + public void batchInsertAdjustHistory(List adjustHistoryList, long employeeId) { if (CollectionUtils.isEmpty(adjustHistoryList)) { return; @@ -2031,7 +2031,7 @@ public class SIArchivesBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); - List> partition = Lists.partition(adjustHistoryList, 100); + List> partition = Lists.partition(adjustHistoryList, 100); partition.forEach(mapper::batchSave); sqlSession.commit(); } finally { @@ -2039,4 +2039,36 @@ public class SIArchivesBiz { } } + /** + * 获取福利档案基数调整记录 + * + */ + public List getAdjustHistoryList(Long paymentOrganization, Long employeeId) { + + if (paymentOrganization == null && employeeId == null) { + return null; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); + List list = mapper.listByEmployeeIdAndPayOrg(paymentOrganization, employeeId); + return list; + } finally { + sqlSession.close(); + } + } + + public List buildAdjustHistoryColumns(long operateId) { + List list = new ArrayList<>(); + WeaTableColumn nameColumn = new WeaTableColumn("100px", "福利项名称", "welfareItemName"); + nameColumn.setFixed("left"); + list.add(nameColumn); + list.add(new WeaTableColumn("150px", "调整前方案", "adjustBeforeSchemeName")); + list.add(new WeaTableColumn("150px", "调整前基数", "adjustBeforeBaseValue")); + list.add(new WeaTableColumn("150px", "调整后方案", "adjustAfterSchemeName")); + list.add(new WeaTableColumn("150px", "调整后基数", "adjustAfterBaseValue")); + list.add(new WeaTableColumn("150px", "操作人", "operatorName")); + list.add(new WeaTableColumn("150px", "操作时间", "operatorTime")); + return list; + } } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java deleted file mode 100644 index 6fa8e96ab..000000000 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.engine.salary.entity.siarchives.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; - -/** - * @Author: sy - * @Description: - * @Date: 2023/10/16 - **/ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InsuranceArchivesBaseAdjustHistoryDTO { - - /** - * id - */ - private Long id; - - /** - * Աid - */ - private Long employeeId; - - /** - * ˰۽id - */ - private Long paymentOrganization; - - /** - * - */ - private Integer welfareType; - - /** - * ǰid - */ - private Long adjustBeforeSchemeId; - /** - * 󷽰id - */ - private Long adjustAfterSchemeId; - /** - * ǰֵ - */ - private String adjustBeforeBaseValue; - /** - * ֵ - */ - private String adjustAfterBaseValue; - - /** - * id - */ - private Long adjustWelfareItemId; - - /** - * - */ - private Long operator; - - /** - * ʱ - */ - private Date operateTime; - - /** - * ⻧key - */ - private String tenantKey; - - /** - * id - */ - private Long creator; - - /** - * Ƿɾ - */ - private Integer deleteType; - - /** - * ʱ - */ - private Date createTime; - - /** - * ʱ - */ - private Date updateTime; - - - private String adjustBeforeBaseJson; - - private String adjustAfterBaseJson; - -} diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java new file mode 100644 index 000000000..e3c218d4d --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java @@ -0,0 +1,87 @@ +package com.engine.salary.entity.siarchives.dto; + +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: sy + * @Description: + * @Date: 2023/10/16 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InsuranceArchivesBaseHistoryDTO { + + private Long id; + + /** + * 人员id + */ + private Long employeeId; + + /** + *个税扣缴义务人id + */ + private Long paymentOrganization; + + /** + * 福利类型 + */ + private Integer welfareType; + + /** + * 调整前方案id + */ + private Long adjustBeforeSchemeId; + /** + * 调整后方案id + */ + private Long adjustAfterSchemeId; + + /** + * 调整的福利项id + */ + private Long adjustWelfareItemId; + + /** + * 操作人 + */ + private Long operator; + + private String tenantKey; + + private Long creator; + + private Integer deleteType; + + private Date createTime; + + private Date updateTime; + + + private String adjustBeforeBaseJson; + + private String adjustAfterBaseJson; + + @TableTitle(title = "福利项名称", dataIndex = "welfareItemName", key = "welfareItemName") + private String welfareItemName; + @TableTitle(title = "调整前方案", dataIndex = "adjustBeforeSchemeName", key = "adjustBeforeSchemeName") + private String adjustBeforeSchemeName; + @TableTitle(title = "调整前基数", dataIndex = "adjustBeforeBaseValue", key = "adjustBeforeBaseValue") + private String adjustBeforeBaseValue; + @TableTitle(title = "调整后方案", dataIndex = "adjustAfterSchemeName", key = "adjustAfterSchemeName") + private String adjustAfterSchemeName; + @TableTitle(title = "调整后基数", dataIndex = "adjustAfterBaseValue", key = "adjustAfterBaseValue") + private String adjustAfterBaseValue; + @TableTitle(title = "操作人", dataIndex = "operatorName", key = "operatorName") + private String operatorName; + @TableTitle(title = "操作时间", dataIndex = "operateTime", key = "operateTime") + private Date operateTime; +} diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java new file mode 100644 index 000000000..1e6a78459 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java @@ -0,0 +1,28 @@ +package com.engine.salary.entity.siarchives.param; + +import com.engine.salary.enums.sicategory.WelfareTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: sy + * @Description: 基数调整历史列表查询参数 + * @Date: 2023/10/17 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SIArchiveBaseHistoryListParam { + + private WelfareTypeEnum welfareTypeEnum; + + private Long employeeId; + + private Long paymentOrganization; + + private int pageNum; + private int pageSize; +} diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java similarity index 66% rename from src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java rename to src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java index 1c78296b2..6939c2258 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseHistoryPO.java @@ -9,90 +9,72 @@ import java.util.Date; /** * @Author: sy - * @Description: ʷ¼ + * @Description: 福利档案基数调整记录 * @Date: 2023/10/16 **/ @Data @Builder @NoArgsConstructor @AllArgsConstructor -//hrsa_insurance_base_adjust_history -public class InsuranceArchivesBaseAdjustHistoryPO { +//hrsa_insurance_base_history +public class InsuranceArchivesBaseHistoryPO { - /** - * id - */ private Long id; /** - * Աid + * 人员id */ private Long employeeId; /** - * ˰۽id + * 个税扣缴义务人id */ private Long paymentOrganization; /** - * + * 福利类别 */ private Integer welfareType; /** - * ǰid + * 调整前方案id */ private Long adjustBeforeSchemeId; /** - * 󷽰id + * 调整后方案id */ private Long adjustAfterSchemeId; /** - * ǰֵ + * 调整前基数值 */ private String adjustBeforeBaseValue; /** - * ֵ + * 调整后基数值 */ private String adjustAfterBaseValue; /** - * id + * 调整的福利项id */ private Long adjustWelfareItemId; /** - * + * 操作人 */ private Long operator; /** - * ʱ + * 操作时间 */ private Date operateTime; - /** - * ⻧key - */ private String tenantKey; - /** - * id - */ private Long creator; - /** - * Ƿɾ - */ private Integer deleteType; - /** - * ʱ - */ private Date createTime; - /** - * ʱ - */ private Date updateTime; } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java index 412c7655c..d8e2e18e8 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java @@ -1,6 +1,7 @@ package com.engine.salary.mapper.siarchives; -import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseAdjustHistoryPO; +import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO; +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseHistoryPO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -12,13 +13,13 @@ import java.util.List; public interface InsuranceBaseAdjustHistoryMapper { /** - * + * 批量保存 */ - void batchSave(@Param("infos") List infos); + void batchSave(@Param("infos") List infos); /** - * ݸ˰۽˺Աidȡ¼ + * 根据人员id和个税扣缴义务人id获取基数调整记录 */ - List listByEmployeeIdAndPayOrg(@Param("paymentOrganization")Long paymentOrganization, @Param("employeeId")Long employeeId); + List listByEmployeeIdAndPayOrg(@Param("paymentOrganization")Long paymentOrganization, @Param("employeeId")Long employeeId); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml index 46a9d044a..e0a3730f8 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -2,7 +2,7 @@ - + @@ -43,7 +43,7 @@ - INSERT INTO hrsa_insurance_base_adjust_history + INSERT INTO hrsa_insurance_base_history (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, @@ -72,7 +72,7 @@ - INSERT INTO hrsa_insurance_base_adjust_history + INSERT INTO hrsa_insurance_base_history (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, @@ -101,7 +101,7 @@ - INSERT INTO hrsa_insurance_base_adjust_history + INSERT INTO hrsa_insurance_base_history (id,employee_id,payment_organization,welfare_type, adjust_before_scheme_id,adjust_after_scheme_id, adjust_before_base_value,adjust_after_base_value, @@ -129,14 +129,32 @@ - SELECT - - FROM hrsa_insurance_base_adjust_history t + t.id + , t.employee_id + , t.payment_organization + , t.welfare_type + , t.adjust_before_scheme_id + , t.adjust_after_scheme_id + , t.adjust_before_base_value + , t.adjust_after_base_value + , t.adjust_welfare_item_id + , t.operator + , t.operate_time + , ca.insurance_name as welfareItemName + , sb.scheme_name as adjustBeforeSchemeName + , sa.scheme_name as adjustAfterSchemeName + , e.lastname as operatorName + FROM hrsa_insurance_base_history t + LEFT JOIN hrmresource e on e.id = t.operator + LEFT JOIN hrsa_social_security_scheme sb on sb.id = t.adjust_before_scheme_id + LEFT JOIN hrsa_social_security_scheme sa on sa.id = t.adjust_after_scheme_id + LEFT JOIN hrsa_insurance_category ca on ca.id = t.adjust_welfare_item_id WHERE t.delete_type = 0 - AND employee_id = #{employeeId} - AND payment_organization = #{paymentOrganization} - + AND t.employee_id = #{employeeId} + AND t.payment_organization = #{paymentOrganization} + ORDER BY t.operate_time DESC, t.adjust_welfare_item_id ASC \ No newline at end of file diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index fb4c63752..c6955dd75 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -1,9 +1,12 @@ package com.engine.salary.service; +import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; +import com.engine.salary.entity.siarchives.param.SIArchiveBaseHistoryListParam; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesEmployeePO; +import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; @@ -103,4 +106,7 @@ public interface SIArchivesService { void deleteArchive(Collection longs); void handleStayDelData(long currentEmployeeId); + + PageInfo getAdjustHistoryList(SIArchiveBaseHistoryListParam param); + } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 720ed4805..3f70932cc 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -7,8 +7,10 @@ import com.engine.core.impl.Service; import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.cmd.siarchives.SIArchivesTipsCmd; import com.engine.salary.entity.siarchives.bo.InsuranceArchivesBaseInfoBO; +import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; +import com.engine.salary.entity.siarchives.param.SIArchiveBaseHistoryListParam; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; @@ -37,6 +39,8 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -1133,5 +1137,21 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } } + @Override + public PageInfo getAdjustHistoryList(SIArchiveBaseHistoryListParam param) { + + if (param.getWelfareTypeEnum() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "参数错误")); + } + List adjustHistoryDTOS = siArchivesBiz.getAdjustHistoryList(param.getPaymentOrganization(), param.getEmployeeId()); + + List targetHistory = adjustHistoryDTOS.stream() + .filter(f -> f.getWelfareType().equals(param.getWelfareTypeEnum().getValue())).collect(Collectors.toList()); + + PageInfo listPage = SalaryPageUtil.buildPage(param.getPageNum(), param.getPageSize(), + targetHistory , InsuranceArchivesBaseHistoryDTO.class); + + return listPage; + } } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 84d9a4db4..04356432d 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1385,7 +1385,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS, (long) user.getUID()); + List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应旧档案 socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); @@ -1407,7 +1407,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS, (long) user.getUID()); + List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应档案 fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); //新建新档案 @@ -1426,7 +1426,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); //生成福利档案基数调整历史记录 - List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS, (long) user.getUID()); + List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS, (long) user.getUID()); //根据人员id和个税扣缴义务人id删除对应档案 otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); diff --git a/src/com/engine/salary/web/SIArchivesController.java b/src/com/engine/salary/web/SIArchivesController.java index d70763a45..60bf79b36 100644 --- a/src/com/engine/salary/web/SIArchivesController.java +++ b/src/com/engine/salary/web/SIArchivesController.java @@ -2,13 +2,16 @@ package com.engine.salary.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam; +import com.engine.salary.entity.siarchives.param.SIArchiveBaseHistoryListParam; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.enums.sicategory.WelfareTypeEnum; import com.engine.salary.service.SIArchivesService; import com.engine.salary.service.impl.SIArchivesServiceImpl; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; import io.swagger.v3.oas.annotations.parameters.RequestBody; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -249,4 +252,15 @@ public class SIArchivesController { param.setExtWelArchiveList(true); return new ResponseResult>(user).run(getService(user)::listPage, param); } + + /** + * 查询档案基数调整记录列表 + */ + @POST + @Path("/getAdjustHistoryList") + @Produces(MediaType.APPLICATION_JSON) + public String getAdjustHistoryList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveBaseHistoryListParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::getAdjustHistoryList, param); + } } From b9a681a791fa3ce5661b56a092117c62dc567a20 Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 18 Oct 2023 14:14:05 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=EF=BC=8C=E7=BA=BF=E4=B8=8B?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E4=B8=AD=E6=95=B0=E5=80=BC=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E5=B7=AE=E5=BC=82=E7=9B=B8=E5=85=B3=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/InsuranceComparisonResultBO.java | 77 +++++++++++++++---- 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java index e8ffcf358..6a85ddd20 100644 --- a/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java +++ b/src/com/engine/salary/entity/siaccount/bo/InsuranceComparisonResultBO.java @@ -228,7 +228,10 @@ public class InsuranceComparisonResultBO { map.put(welfare.getId() + baseTypeInfo + welfareStand, temp); // 薪资项目字段的字段类型 map.put(welfare.getId() + baseTypeInfo + welfareStand + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !temp.get("acctResultValue").equals(temp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !temp.get("acctResultValue").equals(temp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(temp.get("acctResultValue").toString()).compareTo(SalaryEntityUtil.empty2Zero(temp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } } @@ -243,7 +246,11 @@ public class InsuranceComparisonResultBO { socialPerSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getSocialPerSum())); map.put("socialPerSum", socialPerSumTemp); map.put("socialPerSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !socialPerSumTemp.get("acctResultValue").equals(socialPerSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !socialPerSumTemp.get("acctResultValue").equals(socialPerSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(socialPerSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(socialPerSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -252,7 +259,11 @@ public class InsuranceComparisonResultBO { fundPerSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getFundPerSum())); map.put("fundPerSum", fundPerSumTemp); map.put("fundPerSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !fundPerSumTemp.get("acctResultValue").equals(fundPerSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !fundPerSumTemp.get("acctResultValue").equals(fundPerSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(fundPerSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(fundPerSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -261,7 +272,11 @@ public class InsuranceComparisonResultBO { otherPerSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getOtherPerSum())); map.put("otherPerSum", otherPerSumTemp); map.put("otherPerSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !otherPerSumTemp.get("acctResultValue").equals(otherPerSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !otherPerSumTemp.get("acctResultValue").equals(otherPerSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(otherPerSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(otherPerSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -270,7 +285,11 @@ public class InsuranceComparisonResultBO { perSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getPerSum())); map.put("perSum", perSumTemp); map.put("perSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !perSumTemp.get("acctResultValue").equals(perSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !perSumTemp.get("acctResultValue").equals(perSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(perSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(perSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -280,7 +299,11 @@ public class InsuranceComparisonResultBO { socialComSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getSocialComSum())); map.put("socialComSum", socialComSumTemp); map.put("socialComSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !socialComSumTemp.get("acctResultValue").equals(socialComSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !socialComSumTemp.get("acctResultValue").equals(socialComSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(socialComSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(socialComSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -289,7 +312,11 @@ public class InsuranceComparisonResultBO { fundComSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getFundComSum())); map.put("fundComSum", fundComSumTemp); map.put("fundComSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !fundComSumTemp.get("acctResultValue").equals(fundComSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !fundComSumTemp.get("acctResultValue").equals(fundComSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(fundComSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(fundComSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -298,7 +325,11 @@ public class InsuranceComparisonResultBO { otherComSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getOtherComSum())); map.put("otherComSum", otherComSumTemp); map.put("otherComSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !otherComSumTemp.get("acctResultValue").equals(otherComSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !otherComSumTemp.get("acctResultValue").equals(otherComSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(otherComSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(otherComSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -307,7 +338,11 @@ public class InsuranceComparisonResultBO { perComTemp.put("excelResultValue", dealNull(excelAccountExportPO.getComSum())); map.put("comSum", perComTemp); map.put("comSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !perComTemp.get("acctResultValue").equals(perComTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !perComTemp.get("acctResultValue").equals(perComTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(perComTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(perComTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -317,7 +352,11 @@ public class InsuranceComparisonResultBO { socialSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getSocialSum())); map.put("socialSum", socialSumTemp); map.put("socialSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !socialSumTemp.get("acctResultValue").equals(socialSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !socialSumTemp.get("acctResultValue").equals(socialSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(socialSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(socialSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -326,7 +365,11 @@ public class InsuranceComparisonResultBO { fundSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getFundSum())); map.put("fundSum", fundSumTemp); map.put("fundSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !fundSumTemp.get("acctResultValue").equals(fundSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !fundSumTemp.get("acctResultValue").equals(fundSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(fundSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(fundSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -335,7 +378,11 @@ public class InsuranceComparisonResultBO { otherSumTemp.put("excelResultValue", dealNull(excelAccountExportPO.getOtherSum())); map.put("otherSum", otherSumTemp); map.put("otherSum" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !otherSumTemp.get("acctResultValue").equals(otherSumTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !otherSumTemp.get("acctResultValue").equals(otherSumTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(otherSumTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(otherSumTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } @@ -344,7 +391,11 @@ public class InsuranceComparisonResultBO { totalTemp.put("excelResultValue", dealNull(excelAccountExportPO.getTotal())); map.put("total", totalTemp); map.put("total" + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); - if (map.get("different").equals("false") && !totalTemp.get("acctResultValue").equals(totalTemp.get("excelResultValue"))) { +// if (map.get("different").equals("false") && !totalTemp.get("acctResultValue").equals(totalTemp.get("excelResultValue"))) { +// map.put("different", "true"); +// } + if (map.get("different").equals("false") && SalaryEntityUtil.empty2Zero(totalTemp.get("acctResultValue").toString()) + .compareTo(SalaryEntityUtil.empty2Zero(totalTemp.get("excelResultValue").toString())) != 0) { map.put("different", "true"); } From 96bc325b43227f7191a9ffea8de6abe75c44fd6b Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 18 Oct 2023 15:13:08 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E5=92=8C=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 17 ++++++++ .../dto/InsuranceArchivesBaseHistoryDTO.java | 4 ++ .../param/SIArchiveBaseHistoryListParam.java | 2 +- .../InsuranceBaseAdjustHistoryMapper.java | 4 ++ .../InsuranceBaseAdjustHistoryMapper.xml | 43 ++++++++++++++++++- .../salary/service/SIArchivesService.java | 1 + .../service/impl/SIArchivesServiceImpl.java | 11 +++++ .../salary/web/SIArchivesController.java | 2 +- 8 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 04139c736..7f91e79d1 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -2058,6 +2058,23 @@ public class SIArchivesBiz { } } + /** + * 获取福利档案基数调整记录 + * + */ + public List getBaseHistoryByEmployeeIdAndOperator(Long operator, Long employeeId) { + + + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); + List list = mapper.listByEmployeeIdAndOperator(operator, employeeId); + return list; + } finally { + sqlSession.close(); + } + } + public List buildAdjustHistoryColumns(long operateId) { List list = new ArrayList<>(); WeaTableColumn nameColumn = new WeaTableColumn("100px", "福利项名称", "welfareItemName"); diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java index e3c218d4d..259cc3e54 100644 --- a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseHistoryDTO.java @@ -70,6 +70,10 @@ public class InsuranceArchivesBaseHistoryDTO { private String adjustAfterBaseJson; + @TableTitle(title = "对象", dataIndex = "employeeName", key = "employeeName") + private String employeeName; + @TableTitle(title = "个税扣缴义务人", dataIndex = "paymentOrganizationName", key = "paymentOrganizationName") + private String paymentOrganizationName; @TableTitle(title = "福利项名称", dataIndex = "welfareItemName", key = "welfareItemName") private String welfareItemName; @TableTitle(title = "调整前方案", dataIndex = "adjustBeforeSchemeName", key = "adjustBeforeSchemeName") diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java index 1e6a78459..39ad81109 100644 --- a/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java @@ -20,7 +20,7 @@ public class SIArchiveBaseHistoryListParam { private WelfareTypeEnum welfareTypeEnum; private Long employeeId; - + private Long operator; private Long paymentOrganization; private int pageNum; diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java index d8e2e18e8..746831ccb 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java @@ -22,4 +22,8 @@ public interface InsuranceBaseAdjustHistoryMapper { */ List listByEmployeeIdAndPayOrg(@Param("paymentOrganization")Long paymentOrganization, @Param("employeeId")Long employeeId); + /** + * 根据操作人或操作对象获取基数调整记录 + */ + List listByEmployeeIdAndOperator(@Param("operator")Long operator, @Param("employeeId")Long employeeId); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml index e0a3730f8..c910cc17d 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -145,16 +145,55 @@ , ca.insurance_name as welfareItemName , sb.scheme_name as adjustBeforeSchemeName , sa.scheme_name as adjustAfterSchemeName - , e.lastname as operatorName + , eo.lastname as operatorName + , ee.lastname as employeeName + , p.name as paymentOrganizationName FROM hrsa_insurance_base_history t - LEFT JOIN hrmresource e on e.id = t.operator + LEFT JOIN hrmresource eo on eo.id = t.operator + LEFT JOIN hrmresource ee on ee.id = t.employee_id LEFT JOIN hrsa_social_security_scheme sb on sb.id = t.adjust_before_scheme_id LEFT JOIN hrsa_social_security_scheme sa on sa.id = t.adjust_after_scheme_id LEFT JOIN hrsa_insurance_category ca on ca.id = t.adjust_welfare_item_id + LEFT JOIN hrsa_tax_agent p on p.id = t.payment_organization WHERE t.delete_type = 0 AND t.employee_id = #{employeeId} AND t.payment_organization = #{paymentOrganization} ORDER BY t.operate_time DESC, t.adjust_welfare_item_id ASC + \ No newline at end of file diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index c6955dd75..3e98c15d3 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -109,4 +109,5 @@ public interface SIArchivesService { PageInfo getAdjustHistoryList(SIArchiveBaseHistoryListParam param); + PageInfo historyListByEmployeeIdAndOperator(SIArchiveBaseHistoryListParam param); } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 3f70932cc..4ad9d506e 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -1154,4 +1154,15 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService return listPage; } + @Override + public PageInfo historyListByEmployeeIdAndOperator(SIArchiveBaseHistoryListParam param) { + + List adjustHistoryDTOS = siArchivesBiz.getBaseHistoryByEmployeeIdAndOperator(param.getOperator(), param.getEmployeeId()); + + PageInfo listPage = SalaryPageUtil.buildPage(param.getPageNum(), param.getPageSize(), + adjustHistoryDTOS , InsuranceArchivesBaseHistoryDTO.class); + + return listPage; + } + } diff --git a/src/com/engine/salary/web/SIArchivesController.java b/src/com/engine/salary/web/SIArchivesController.java index 60bf79b36..ecc61b1b5 100644 --- a/src/com/engine/salary/web/SIArchivesController.java +++ b/src/com/engine/salary/web/SIArchivesController.java @@ -261,6 +261,6 @@ public class SIArchivesController { @Produces(MediaType.APPLICATION_JSON) public String getAdjustHistoryList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SIArchiveBaseHistoryListParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getService(user)::getAdjustHistoryList, param); + return new ResponseResult>(user).run(getService(user)::historyListByEmployeeIdAndOperator, param); } } From 1c0b00d163a6b0804ba2ae658b563d5c4def9dbc Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 23 Oct 2023 18:07:37 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siarchives/param/SIArchiveBaseHistoryListParam.java | 2 +- src/com/engine/salary/service/impl/SIArchivesServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java index 39ad81109..efa7b7bc1 100644 --- a/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java +++ b/src/com/engine/salary/entity/siarchives/param/SIArchiveBaseHistoryListParam.java @@ -23,6 +23,6 @@ public class SIArchiveBaseHistoryListParam { private Long operator; private Long paymentOrganization; - private int pageNum; + private int current; private int pageSize; } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 4ad9d506e..59b4d8e48 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -1148,7 +1148,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List targetHistory = adjustHistoryDTOS.stream() .filter(f -> f.getWelfareType().equals(param.getWelfareTypeEnum().getValue())).collect(Collectors.toList()); - PageInfo listPage = SalaryPageUtil.buildPage(param.getPageNum(), param.getPageSize(), + PageInfo listPage = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), targetHistory , InsuranceArchivesBaseHistoryDTO.class); return listPage; @@ -1159,7 +1159,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List adjustHistoryDTOS = siArchivesBiz.getBaseHistoryByEmployeeIdAndOperator(param.getOperator(), param.getEmployeeId()); - PageInfo listPage = SalaryPageUtil.buildPage(param.getPageNum(), param.getPageSize(), + PageInfo listPage = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), adjustHistoryDTOS , InsuranceArchivesBaseHistoryDTO.class); return listPage; From 0c77031e46a06c92718c69f7558ce5d52acc6827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 31 Oct 2023 17:08:28 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/bo/SalaryStatisticsReportBO.java | 69 +++++++++++++++++++ .../entity/po/SalaryStatisticsItemPO.java | 3 + .../salary/report/enums/UnitTypeEnum.java | 1 + .../SalaryStatisticsReportWrapper.java | 14 ++-- 4 files changed, 80 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 1a76e5883..2de8b2875 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -45,6 +45,7 @@ public class SalaryStatisticsReportBO { public static final String MAX = "max"; public static final String MIN = "min"; public static final String MEDIAN = "median"; + public static final String LATEST = "latest"; public static final String ZERO = "0"; public static final String ONE = "1"; @@ -172,6 +173,8 @@ public class SalaryStatisticsReportBO { calculate4Min(result, item, nowDetail, lastDetail, sameDetail); // 6.中位数规则数据处理 calculate4Median(result, item, nowDetail, lastDetail, sameDetail); + // 7.最近值 + calculate4Latest(result, item, nowDetail, lastDetail, sameDetail); }); return result; } @@ -479,6 +482,41 @@ public class SalaryStatisticsReportBO { } } + /** + * 最新的值 + * + * @param result + * @param item + * @param nowDetail + * @param lastDetail + * @param sameDetail + */ + private static void calculate4Latest(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { + SalaryStatisticsItemRuleDTO medianRule = JSON.parseObject(item.getMedianRule(), SalaryStatisticsItemRuleDTO.class); + if (medianRule == null || medianRule.getTotalValue() != 1) { + return; + } + String latestValue = ""; + // 本期 + if (medianRule.getTotalValue() == 1) { + List decimalList = Lists.newArrayList(); + if (StringUtils.isNotEmpty(item.getItemValue())) { + String[] itemValues = item.getItemValue().split(COMMA); + for (String itemId : itemValues) { + for (Map x : nowDetail) { + if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) { + decimalList.add(x.get(itemId)); + } + } + } + } + // 本期最近值 + latestValue = latest(decimalList); + nowAndRatio(result, item, medianRule, LATEST, latestValue); + } + } + + /** * 本期和占比赋值 * @@ -498,6 +536,25 @@ public class SalaryStatisticsReportBO { } } + /** + * 本期和占比赋值 + * + * @param result + * @param item + * @param rule + * @param ruleKey + * @param sumDecimal + */ + private static void nowAndRatio(Map result, SalaryStatisticsItemPO item, SalaryStatisticsItemRuleDTO rule, String ruleKey, String sumDecimal) { + String keyPrefix = item.getId().toString() + UD + ruleKey; + // 本期合计 + result.put(keyPrefix + K_NOW, sumDecimal); +// // 占比:和本期合计一样的值,便于计算 +// if (rule.getRatioValue() == 1) { +// result.put(keyPrefix + K_RATIO, result.get(keyPrefix + K_NOW)); +// } + } + /** * 环比赋值 * @@ -596,6 +653,18 @@ public class SalaryStatisticsReportBO { } } + /** + * 最新的值 + * @param list + * @return + */ + public static String latest(List list) { + if (CollectionUtils.isEmpty(list)) { + return ""; + } + return list.get(0); + } + public static List> po2map(List list, Map> salaryAcctResultValueMap) { if (CollectionUtils.isEmpty(list)) { return new ArrayList<>(); diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index 6acfff40d..76d110749 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -126,6 +126,9 @@ public class SalaryStatisticsItemPO implements Serializable { //中位数规则") private String medianRule; + + private String medianRule; + //顺序") private Integer indexValue; diff --git a/src/com/engine/salary/report/enums/UnitTypeEnum.java b/src/com/engine/salary/report/enums/UnitTypeEnum.java index 7b93dfca9..35b1fc49b 100644 --- a/src/com/engine/salary/report/enums/UnitTypeEnum.java +++ b/src/com/engine/salary/report/enums/UnitTypeEnum.java @@ -3,6 +3,7 @@ package com.engine.salary.report.enums; import com.engine.salary.enums.BaseEnum; public enum UnitTypeEnum implements BaseEnum { + empty(0, 152745, ""), REN(1, 157087, "人"), YUAN(2, 152739, "元"), QIAN(3, 157088, "千"), diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 895b09ba9..954df95fd 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -305,13 +305,13 @@ public class SalaryStatisticsReportWrapper extends Service { //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; - if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { - //报表中缓存的条件 - salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); - if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); - } - } +// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { +// //报表中缓存的条件 +// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); +// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { +// return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); +// } +// } // 列表data From 7fa3c31aac8849836e567298175252000eae8e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 1 Nov 2023 09:54:09 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/po/SalaryStatisticsItemPO.java | 2 +- .../wrapper/SalaryStatisticsItemWrapper.java | 252 ++++++++++++------ 2 files changed, 171 insertions(+), 83 deletions(-) diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index 76d110749..f3717168b 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -127,7 +127,7 @@ public class SalaryStatisticsItemPO implements Serializable { private String medianRule; - private String medianRule; +// private String medianRule; //顺序") private Integer indexValue; diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java index b424cc43e..8adc15055 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java @@ -5,6 +5,7 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.report.entity.dto.SalaryStatisticsItemFormDTO; import com.engine.salary.report.entity.param.SalaryStatisticsItemSaveParam; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; @@ -55,22 +56,24 @@ public class SalaryStatisticsItemWrapper extends Service { String itemValue = salaryStatisticsItem.getItemValue(); if (StringUtils.isNotBlank(itemValue)) { List salaryItems = getSalaryItemService(user).listAll(); - Map itemsMap = SalaryEntityUtil.convert2Map(salaryItems, k -> k.getId().toString(), SalaryItemPO::getName); + Map itemsMap = SalaryEntityUtil.convert2Map(salaryItems, k -> k.getId().toString()); List> welfareItems = new ArrayList<>(); Arrays.stream(itemValue.split(",")).forEach(value -> { Map welfareItem = new HashMap<>(); welfareItem.put("id", value); - welfareItem.put("name", itemsMap.get(value)); + welfareItem.put("name", itemsMap.get(value).getName()); + welfareItem.put("dataType", itemsMap.get(value).getDataType()); welfareItems.add(welfareItem); }); Map map = new HashMap(); - map.put("itemValue", welfareItems); + //版本变更,由多选变成单选 + map.put("itemValue", welfareItems.get(0)); map.put("itemName", salaryStatisticsItem.getItemName()); weaForm.put("data", map); - ruleData = buildRule(salaryStatisticsItem); + ruleData = buildRule(SalaryDataTypeEnum.parseByValue(welfareItems.get(0).get("dataType")), salaryStatisticsItem); } } else { - ruleData = buildRule(null); + ruleData = buildRule(null, null); } return SalaryStatisticsItemFormDTO.builder() @@ -80,89 +83,174 @@ public class SalaryStatisticsItemWrapper extends Service { .build(); } - public Map buildRule(SalaryStatisticsItemPO salaryStatisticsItem) { + public Map buildRule(SalaryDataTypeEnum dataType, SalaryStatisticsItemPO salaryStatisticsItem) { Map weaTable = new HashMap<>(); - List list = new ArrayList<>(); - WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); - WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); - WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); - WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); - WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); - WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); - list.add(ruleName); - list.add(ratio); - list.add(m2m); - list.add(m2mLimit); - list.add(y2y); - list.add(y2yLimit); - weaTable.put("columns", list); + if (dataType == null || dataType == SalaryDataTypeEnum.NUMBER) { + List list = new ArrayList<>(); + WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); + WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); + WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); + WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); + WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); + WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); + list.add(ruleName); + list.add(ratio); + list.add(m2m); + list.add(m2mLimit); + list.add(y2y); + list.add(y2yLimit); + weaTable.put("columns", list); - List> result = new ArrayList<>(); - List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); - List ruleNameList = Arrays.asList( - SalaryI18nUtil.getI18nLabel(157268, "计数"), - SalaryI18nUtil.getI18nLabel(157266, "求和"), - SalaryI18nUtil.getI18nLabel(100132, "平均值"), - SalaryI18nUtil.getI18nLabel(163001, "最大值"), - SalaryI18nUtil.getI18nLabel(163002, "最小值"), - SalaryI18nUtil.getI18nLabel(163003, "中位数")); - if (salaryStatisticsItem == null) { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", 0); - rule.put("ratioValue", 0); - rule.put("m2mValue", 0); - rule.put("m2mUpperLimit", ""); - rule.put("m2mLowerLimit", ""); - rule.put("y2yValue", 0); - rule.put("y2yUpperLimit", ""); - rule.put("y2yLowerLimit", ""); - result.add(rule); - } - } else { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - switch (ruleList.get(i)) { - case "count": - rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), new HashMap().getClass()); - break; - case "sum": - rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), new HashMap().getClass()); - break; - case "avg": - rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), new HashMap().getClass()); - break; - case "max": - rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), new HashMap().getClass()); - break; - case "min": - rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), new HashMap().getClass()); - break; - case "median": - rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), new HashMap().getClass()); - break; - default: - break; + List> result = new ArrayList<>(); + List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); + List ruleNameList = Arrays.asList( + SalaryI18nUtil.getI18nLabel(157268, "计数"), + SalaryI18nUtil.getI18nLabel(157266, "求和"), + SalaryI18nUtil.getI18nLabel(100132, "平均值"), + SalaryI18nUtil.getI18nLabel(163001, "最大值"), + SalaryI18nUtil.getI18nLabel(163002, "最小值"), + SalaryI18nUtil.getI18nLabel(163003, "中位数")); + if (salaryStatisticsItem == null) { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", 0); + rule.put("ratioValue", 0); + rule.put("m2mValue", 0); + rule.put("m2mUpperLimit", ""); + rule.put("m2mLowerLimit", ""); + rule.put("y2yValue", 0); + rule.put("y2yUpperLimit", ""); + rule.put("y2yLowerLimit", ""); + result.add(rule); } - if (rule == null) { - rule = new HashMap<>(); + } else { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + switch (ruleList.get(i)) { + case "count": + rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), new HashMap().getClass()); + break; + case "sum": + rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), new HashMap().getClass()); + break; + case "avg": + rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), new HashMap().getClass()); + break; + case "max": + rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), new HashMap().getClass()); + break; + case "min": + rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), new HashMap().getClass()); + break; + case "median": + rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), new HashMap().getClass()); + break; + default: + break; + } + if (rule == null) { + rule = new HashMap<>(); + } + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); + rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); + rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); + rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); + rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); + rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); + rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); + rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); + result.add(rule); } - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); - rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); - rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); - rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); - rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); - rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); - rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); - rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); - result.add(rule); } + weaTable.put("data", result); + }else { + List list = new ArrayList<>(); + WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); + WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); + WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); + WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); + WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); + WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); + list.add(ruleName); + list.add(ratio); + list.add(m2m); + list.add(m2mLimit); + list.add(y2y); + list.add(y2yLimit); + weaTable.put("columns", list); + + List> result = new ArrayList<>(); + List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); + List ruleNameList = Arrays.asList( + SalaryI18nUtil.getI18nLabel(157268, "计数"), + SalaryI18nUtil.getI18nLabel(157266, "求和"), + SalaryI18nUtil.getI18nLabel(100132, "平均值"), + SalaryI18nUtil.getI18nLabel(163001, "最大值"), + SalaryI18nUtil.getI18nLabel(163002, "最小值"), + SalaryI18nUtil.getI18nLabel(163003, "中位数")); + if (salaryStatisticsItem == null) { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", 0); + rule.put("ratioValue", 0); + rule.put("m2mValue", 0); + rule.put("m2mUpperLimit", ""); + rule.put("m2mLowerLimit", ""); + rule.put("y2yValue", 0); + rule.put("y2yUpperLimit", ""); + rule.put("y2yLowerLimit", ""); + result.add(rule); + } + } else { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + switch (ruleList.get(i)) { + case "count": + rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), new HashMap().getClass()); + break; + case "sum": + rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), new HashMap().getClass()); + break; + case "avg": + rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), new HashMap().getClass()); + break; + case "max": + rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), new HashMap().getClass()); + break; + case "min": + rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), new HashMap().getClass()); + break; + case "median": + rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), new HashMap().getClass()); + break; + default: + break; + } + if (rule == null) { + rule = new HashMap<>(); + } + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); + rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); + rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); + rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); + rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); + rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); + rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); + rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); + result.add(rule); + } + } + weaTable.put("data", result); } - weaTable.put("data", result); + return weaTable; } From 22a946d9ad5d6dfdf4d6612d64c5e44e24a34ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 1 Nov 2023 16:09:19 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/bo/SalaryStatisticsReportBO.java | 10 ++-- .../SalaryStatisticsItemStringRuleDTO.java | 23 ++++++++ .../param/SalaryStatisticsItemSaveParam.java | 25 ++++---- .../entity/po/SalaryStatisticsItemPO.java | 20 ++++++- .../wrapper/SalaryStatisticsItemWrapper.java | 58 ++----------------- 5 files changed, 66 insertions(+), 70 deletions(-) create mode 100644 src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 2de8b2875..2498a91cf 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -45,7 +45,7 @@ public class SalaryStatisticsReportBO { public static final String MAX = "max"; public static final String MIN = "min"; public static final String MEDIAN = "median"; - public static final String LATEST = "latest"; + public static final String LATEST = "last"; public static final String ZERO = "0"; public static final String ONE = "1"; @@ -496,7 +496,7 @@ public class SalaryStatisticsReportBO { if (medianRule == null || medianRule.getTotalValue() != 1) { return; } - String latestValue = ""; + String lastValue = ""; // 本期 if (medianRule.getTotalValue() == 1) { List decimalList = Lists.newArrayList(); @@ -511,8 +511,8 @@ public class SalaryStatisticsReportBO { } } // 本期最近值 - latestValue = latest(decimalList); - nowAndRatio(result, item, medianRule, LATEST, latestValue); + lastValue = last(decimalList); + nowAndRatio(result, item, medianRule, LATEST, lastValue); } } @@ -658,7 +658,7 @@ public class SalaryStatisticsReportBO { * @param list * @return */ - public static String latest(List list) { + public static String last(List list) { if (CollectionUtils.isEmpty(list)) { return ""; } diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java new file mode 100644 index 000000000..a5c2970d6 --- /dev/null +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java @@ -0,0 +1,23 @@ +package com.engine.salary.report.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪酬统计报表自定义统计字符项目规则 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsItemStringRuleDTO { + + + /** + * 是否显示 + */ + private Integer display; + +} diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java index 77803d374..cc856e07f 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java @@ -20,38 +20,39 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -//"薪酬统计报表自定义统计项目保存参数") public class SalaryStatisticsItemSaveParam { - //统计项目id") + //统计项目id private Long id; - // 报表id") + // 报表id private Long statReportId; - //统计项目") + //统计项目 private List itemValue; - //统计项名称") + //统计项名称 private String itemName; - //计数规则") + //计数规则 private SalaryStatisticsItemRuleDTO countRule; - //求和规则") + //求和规则 private SalaryStatisticsItemRuleDTO sumRule; - //平均值规则") + //平均值规则 private SalaryStatisticsItemRuleDTO avgRule; - //最大值规则") + //最大值规则 private SalaryStatisticsItemRuleDTO maxRule; - //最小值规则") + //最小值规则 private SalaryStatisticsItemRuleDTO minRule; - //中位数规则") + //中位数规则 private SalaryStatisticsItemRuleDTO medianRule; + + private SalaryStatisticsItemRuleDTO lastRule; - //统计单位") + //统计单位 private Integer unitType; } diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index f3717168b..21c1f3f27 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -127,7 +127,25 @@ public class SalaryStatisticsItemPO implements Serializable { private String medianRule; -// private String medianRule; + /** + * 最近值 + */ + private String lastRule; + + /** + * 最早值 + */ + private String oldRule; + + /** + * 出现最多 + */ + private String frequentRule; + + /** + * 按时间平铺 + */ + private String tileRule; //顺序") private Integer indexValue; diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java index 8adc15055..ee96e96db 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java @@ -167,67 +167,29 @@ public class SalaryStatisticsItemWrapper extends Service { } } weaTable.put("data", result); - }else { + } else { List list = new ArrayList<>(); - WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); - WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); - WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); - WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); - WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); - WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); + WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "字符取值规则"), "ruleName"); list.add(ruleName); - list.add(ratio); - list.add(m2m); - list.add(m2mLimit); - list.add(y2y); - list.add(y2yLimit); weaTable.put("columns", list); List> result = new ArrayList<>(); - List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); + List ruleList = Arrays.asList("count", "last"); List ruleNameList = Arrays.asList( - SalaryI18nUtil.getI18nLabel(157268, "计数"), - SalaryI18nUtil.getI18nLabel(157266, "求和"), - SalaryI18nUtil.getI18nLabel(100132, "平均值"), - SalaryI18nUtil.getI18nLabel(163001, "最大值"), - SalaryI18nUtil.getI18nLabel(163002, "最小值"), - SalaryI18nUtil.getI18nLabel(163003, "中位数")); + SalaryI18nUtil.getI18nLabel(157266, "最近值")); if (salaryStatisticsItem == null) { for (int i = 0; i < ruleList.size(); i++) { Map rule = new HashMap<>(); rule.put("id", ruleList.get(i)); rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", 0); - rule.put("ratioValue", 0); - rule.put("m2mValue", 0); - rule.put("m2mUpperLimit", ""); - rule.put("m2mLowerLimit", ""); - rule.put("y2yValue", 0); - rule.put("y2yUpperLimit", ""); - rule.put("y2yLowerLimit", ""); result.add(rule); } } else { for (int i = 0; i < ruleList.size(); i++) { Map rule = new HashMap<>(); switch (ruleList.get(i)) { - case "count": - rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), new HashMap().getClass()); - break; - case "sum": - rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), new HashMap().getClass()); - break; - case "avg": - rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), new HashMap().getClass()); - break; - case "max": - rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), new HashMap().getClass()); - break; - case "min": - rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), new HashMap().getClass()); - break; - case "median": - rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), new HashMap().getClass()); + case "last": + rule = JSON.parseObject(salaryStatisticsItem.getLatestRule(), new HashMap().getClass()); break; default: break; @@ -237,14 +199,6 @@ public class SalaryStatisticsItemWrapper extends Service { } rule.put("id", ruleList.get(i)); rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); - rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); - rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); - rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); - rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); - rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); - rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); - rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); result.add(rule); } } From 83f38d1d741dda86ee4192e61ac45566af4f39bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 2 Nov 2023 14:43:15 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsItemStringRuleDTO.java | 4 +- .../SalaryStatisticsItemGetFormParam.java | 26 ++ .../entity/po/SalaryStatisticsItemPO.java | 17 +- .../SalaryStatisticsItemStringRuleEnum.java | 52 ++++ .../web/SalaryStatisticsItemController.java | 20 +- .../wrapper/SalaryStatisticsItemWrapper.java | 282 ++++++++++-------- 6 files changed, 276 insertions(+), 125 deletions(-) create mode 100644 src/com/engine/salary/report/entity/param/SalaryStatisticsItemGetFormParam.java create mode 100644 src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java index a5c2970d6..d41c75db1 100644 --- a/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemStringRuleDTO.java @@ -16,8 +16,8 @@ public class SalaryStatisticsItemStringRuleDTO { /** - * 是否显示 + * 是否启用 */ - private Integer display; + private Integer ableValue; } diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsItemGetFormParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemGetFormParam.java new file mode 100644 index 000000000..47371c1bf --- /dev/null +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemGetFormParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.report.entity.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪酬统计报表自定义统计项目保存参数 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryStatisticsItemGetFormParam { + //统计项目id + private Long id; + + //统计项目 + private Long itemId; +} diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index 21c1f3f27..b7ac48bb1 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -129,21 +129,35 @@ public class SalaryStatisticsItemPO implements Serializable { /** * 最近值 + *

+ * "able":"1", 是否使用 */ private String lastRule; /** * 最早值 + *

+ * { + * "able":"1", 是否使用 + * } */ private String oldRule; /** * 出现最多 + *

+ * { + * "able":"1", 是否使用 + * } */ private String frequentRule; /** - * 按时间平铺 + * 平铺 + *

+ * { + * "able":"1", 是否使用 + * } */ private String tileRule; @@ -152,6 +166,7 @@ public class SalaryStatisticsItemPO implements Serializable { /** * 统计单位 + * * @see UnitTypeEnum */ //统计单位") diff --git a/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java new file mode 100644 index 000000000..1356b639f --- /dev/null +++ b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java @@ -0,0 +1,52 @@ +package com.engine.salary.report.enums; + +import com.engine.salary.enums.BaseEnum; + +import java.util.Objects; + +public enum SalaryStatisticsItemStringRuleEnum implements BaseEnum { + + + LAST("last", "最近值", 83993), + OLD("old", "最早值", 83994), + FREQUENT("frequent", "出现最多", 83994), + TILE("tile", "平铺", 83994), + ; + + private String value; + + private String defaultLabel; + + private int labelId; + + SalaryStatisticsItemStringRuleEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static SalaryStatisticsItemStringRuleEnum parseByValue(String value) { + for (SalaryStatisticsItemStringRuleEnum typeEnum : SalaryStatisticsItemStringRuleEnum.values()) { + if (Objects.equals(typeEnum.getValue(), value)) { + return typeEnum; + } + } + return null; + } + +} diff --git a/src/com/engine/salary/report/web/SalaryStatisticsItemController.java b/src/com/engine/salary/report/web/SalaryStatisticsItemController.java index 0c8b1ee95..c59c12b3b 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsItemController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsItemController.java @@ -31,6 +31,7 @@ public class SalaryStatisticsItemController { private SalaryStatisticsItemWrapper getSalaryStatisticsItemWrapper(User user) { return ServiceUtil.getService(SalaryStatisticsItemWrapper.class, user); } + /** * 获取自定义统计项目表单 * @@ -40,11 +41,26 @@ public class SalaryStatisticsItemController { @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) - public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id")Long id) { + public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryStatisticsItemWrapper(user)::getForm, id); } + /** + * 切换薪资项目 + * @param request + * @param response + * @param itemId + * @return + */ + @GET + @Path("/changeTab") + @Produces(MediaType.APPLICATION_JSON) + public String changeTab(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "itemId") Long itemId) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsItemWrapper(user)::changeTab, itemId); + } + /** * 自定义统计项目列表 @@ -55,7 +71,7 @@ public class SalaryStatisticsItemController { @GET @Path("/list") @Produces(MediaType.APPLICATION_JSON) - public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "statisticsReportId")Long statisticsReportId) { + public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "statisticsReportId") Long statisticsReportId) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>>(user).run(getSalaryStatisticsItemWrapper(user)::list, statisticsReportId); } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java index ee96e96db..9d3e66d2e 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsItemWrapper.java @@ -9,6 +9,7 @@ import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.report.entity.dto.SalaryStatisticsItemFormDTO; import com.engine.salary.report.entity.param.SalaryStatisticsItemSaveParam; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; +import com.engine.salary.report.enums.SalaryStatisticsItemStringRuleEnum; import com.engine.salary.report.enums.UnitTypeEnum; import com.engine.salary.report.service.SalaryStatisticsItemService; import com.engine.salary.report.service.impl.SalaryStatisticsItemServiceImpl; @@ -48,7 +49,7 @@ public class SalaryStatisticsItemWrapper extends Service { * @return */ public SalaryStatisticsItemFormDTO getForm(Long id) { - Map weaForm = new HashMap(); + Map weaForm = new HashMap<>(); Map ruleData = new HashMap<>(); if (Objects.nonNull(id)) { SalaryStatisticsItemPO salaryStatisticsItem = getSalaryStatisticsItemService(user).getById(id); @@ -65,7 +66,7 @@ public class SalaryStatisticsItemWrapper extends Service { welfareItem.put("dataType", itemsMap.get(value).getDataType()); welfareItems.add(welfareItem); }); - Map map = new HashMap(); + Map map = new HashMap<>(); //版本变更,由多选变成单选 map.put("itemValue", welfareItems.get(0)); map.put("itemName", salaryStatisticsItem.getItemName()); @@ -83,128 +84,168 @@ public class SalaryStatisticsItemWrapper extends Service { .build(); } - public Map buildRule(SalaryDataTypeEnum dataType, SalaryStatisticsItemPO salaryStatisticsItem) { - Map weaTable = new HashMap<>(); + public SalaryStatisticsItemFormDTO changeTab(Long itemId) { + SalaryItemPO po = getSalaryItemService(user).getById(itemId); + Map ruleData = buildRule(SalaryDataTypeEnum.parseByValue(po.getDataType()), null); + return SalaryStatisticsItemFormDTO.builder().ruleData(ruleData).build(); + + } + + public Map buildRule(SalaryDataTypeEnum dataType, SalaryStatisticsItemPO salaryStatisticsItem) { + Map weaTable; if (dataType == null || dataType == SalaryDataTypeEnum.NUMBER) { - List list = new ArrayList<>(); - WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); - WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); - WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); - WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); - WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); - WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); - list.add(ruleName); - list.add(ratio); - list.add(m2m); - list.add(m2mLimit); - list.add(y2y); - list.add(y2yLimit); - weaTable.put("columns", list); - - List> result = new ArrayList<>(); - List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); - List ruleNameList = Arrays.asList( - SalaryI18nUtil.getI18nLabel(157268, "计数"), - SalaryI18nUtil.getI18nLabel(157266, "求和"), - SalaryI18nUtil.getI18nLabel(100132, "平均值"), - SalaryI18nUtil.getI18nLabel(163001, "最大值"), - SalaryI18nUtil.getI18nLabel(163002, "最小值"), - SalaryI18nUtil.getI18nLabel(163003, "中位数")); - if (salaryStatisticsItem == null) { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", 0); - rule.put("ratioValue", 0); - rule.put("m2mValue", 0); - rule.put("m2mUpperLimit", ""); - rule.put("m2mLowerLimit", ""); - rule.put("y2yValue", 0); - rule.put("y2yUpperLimit", ""); - rule.put("y2yLowerLimit", ""); - result.add(rule); - } - } else { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - switch (ruleList.get(i)) { - case "count": - rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), new HashMap().getClass()); - break; - case "sum": - rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), new HashMap().getClass()); - break; - case "avg": - rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), new HashMap().getClass()); - break; - case "max": - rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), new HashMap().getClass()); - break; - case "min": - rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), new HashMap().getClass()); - break; - case "median": - rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), new HashMap().getClass()); - break; - default: - break; - } - if (rule == null) { - rule = new HashMap<>(); - } - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); - rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); - rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); - rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); - rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); - rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); - rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); - rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); - result.add(rule); - } - } - weaTable.put("data", result); + weaTable = buildNumberRule(salaryStatisticsItem); } else { - List list = new ArrayList<>(); - WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "字符取值规则"), "ruleName"); - list.add(ruleName); - weaTable.put("columns", list); - - List> result = new ArrayList<>(); - List ruleList = Arrays.asList("count", "last"); - List ruleNameList = Arrays.asList( - SalaryI18nUtil.getI18nLabel(157266, "最近值")); - if (salaryStatisticsItem == null) { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - result.add(rule); - } - } else { - for (int i = 0; i < ruleList.size(); i++) { - Map rule = new HashMap<>(); - switch (ruleList.get(i)) { - case "last": - rule = JSON.parseObject(salaryStatisticsItem.getLatestRule(), new HashMap().getClass()); - break; - default: - break; - } - if (rule == null) { - rule = new HashMap<>(); - } - rule.put("id", ruleList.get(i)); - rule.put("ruleName", ruleNameList.get(i)); - result.add(rule); - } - } - weaTable.put("data", result); + weaTable = buildStringRule(salaryStatisticsItem); } + return weaTable; + } + /** + * 字符取值规则 + * + * @param salaryStatisticsItem 统计项 + * @return + */ + private Map buildStringRule(SalaryStatisticsItemPO salaryStatisticsItem) { + Map weaTable = new HashMap<>(); + + List list = new ArrayList<>(); + WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "字符取值规则"), "ruleName"); + list.add(ruleName); + weaTable.put("columns", list); + + List> result = new ArrayList<>(); + if (salaryStatisticsItem == null) { + for (SalaryStatisticsItemStringRuleEnum ruleEnum : SalaryStatisticsItemStringRuleEnum.values()) { + Map rule = new HashMap<>(); + rule.put("id", ruleEnum.getValue()); + rule.put("ruleName", ruleEnum.getDefaultLabel()); + rule.put("totalValue", 0); + result.add(rule); + } + } else { + for (SalaryStatisticsItemStringRuleEnum ruleEnum : SalaryStatisticsItemStringRuleEnum.values()) { + Map rule = new HashMap<>(); + switch (ruleEnum) { + case LAST: + rule = JSON.parseObject(salaryStatisticsItem.getLastRule(), HashMap.class); + break; + case OLD: + rule = JSON.parseObject(salaryStatisticsItem.getOldRule(), HashMap.class); + break; + case FREQUENT: + rule = JSON.parseObject(salaryStatisticsItem.getFrequentRule(), HashMap.class); + break; + case TILE: + rule = JSON.parseObject(salaryStatisticsItem.getTileRule(), HashMap.class); + break; + default: + break; + } + if (rule == null) { + rule = new HashMap<>(); + } + rule.put("id", ruleEnum.getValue()); + rule.put("ruleName", ruleEnum.getDefaultLabel()); + rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); + result.add(rule); + } + } + weaTable.put("data", result); + + return weaTable; + } + + /** + * 数值取值规则 + * + * @param salaryStatisticsItem 统计项 + * @return + */ + private Map buildNumberRule(SalaryStatisticsItemPO salaryStatisticsItem) { + Map weaTable = new HashMap<>(); + List list = new ArrayList<>(); + WeaTableColumn ruleName = new WeaTableColumn("20%", SalaryI18nUtil.getI18nLabel(157532, "统计规则"), "ruleName"); + WeaTableColumn ratio = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162990, "占比"), "ratio"); + WeaTableColumn m2m = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(157533, "环比"), "m2m"); + WeaTableColumn m2mLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(157536, "环比增幅正常区间设置"), "m2mLimit"); + WeaTableColumn y2y = new WeaTableColumn("10%", SalaryI18nUtil.getI18nLabel(162991, "同比"), "y2y"); + WeaTableColumn y2yLimit = new WeaTableColumn("25%", SalaryI18nUtil.getI18nLabel(162992, "同比增幅正常区间设置"), "y2yLimit"); + list.add(ruleName); + list.add(ratio); + list.add(m2m); + list.add(m2mLimit); + list.add(y2y); + list.add(y2yLimit); + weaTable.put("columns", list); + + List> result = new ArrayList<>(); + List ruleList = Arrays.asList("count", "sum", "avg", "max", "min", "median"); + List ruleNameList = Arrays.asList( + SalaryI18nUtil.getI18nLabel(157268, "计数"), + SalaryI18nUtil.getI18nLabel(157266, "求和"), + SalaryI18nUtil.getI18nLabel(100132, "平均值"), + SalaryI18nUtil.getI18nLabel(163001, "最大值"), + SalaryI18nUtil.getI18nLabel(163002, "最小值"), + SalaryI18nUtil.getI18nLabel(163003, "中位数")); + if (salaryStatisticsItem == null) { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", 0); + rule.put("ratioValue", 0); + rule.put("m2mValue", 0); + rule.put("m2mUpperLimit", ""); + rule.put("m2mLowerLimit", ""); + rule.put("y2yValue", 0); + rule.put("y2yUpperLimit", ""); + rule.put("y2yLowerLimit", ""); + result.add(rule); + } + } else { + for (int i = 0; i < ruleList.size(); i++) { + Map rule = new HashMap<>(); + switch (ruleList.get(i)) { + case "count": + rule = JSON.parseObject(salaryStatisticsItem.getCountRule(), HashMap.class); + break; + case "sum": + rule = JSON.parseObject(salaryStatisticsItem.getSumRule(), HashMap.class); + break; + case "avg": + rule = JSON.parseObject(salaryStatisticsItem.getAvgRule(), HashMap.class); + break; + case "max": + rule = JSON.parseObject(salaryStatisticsItem.getMaxRule(), HashMap.class); + break; + case "min": + rule = JSON.parseObject(salaryStatisticsItem.getMinRule(), HashMap.class); + break; + case "median": + rule = JSON.parseObject(salaryStatisticsItem.getMedianRule(), HashMap.class); + break; + default: + break; + } + if (rule == null) { + rule = new HashMap<>(); + } + rule.put("id", ruleList.get(i)); + rule.put("ruleName", ruleNameList.get(i)); + rule.put("totalValue", Optional.ofNullable(rule.get("totalValue")).orElse(0)); + rule.put("ratioValue", Optional.ofNullable(rule.get("ratioValue")).orElse(0)); + rule.put("m2mValue", Optional.ofNullable(rule.get("m2mValue")).orElse(0)); + rule.put("m2mUpperLimit", Optional.ofNullable(rule.get("m2mUpperLimit")).orElse("")); + rule.put("m2mLowerLimit", Optional.ofNullable(rule.get("m2mLowerLimit")).orElse("")); + rule.put("y2yValue", Optional.ofNullable(rule.get("y2yValue")).orElse(0)); + rule.put("y2yUpperLimit", Optional.ofNullable(rule.get("y2yUpperLimit")).orElse("")); + rule.put("y2yLowerLimit", Optional.ofNullable(rule.get("y2yLowerLimit")).orElse("")); + result.add(rule); + } + } + weaTable.put("data", result); return weaTable; } @@ -255,4 +296,5 @@ public class SalaryStatisticsItemWrapper extends Service { public String save(SalaryStatisticsItemSaveParam saveParam) { return getSalaryStatisticsItemService(user).save(saveParam); } + } From f85f0af44ac29fe32bfb239b199fcce8d3a99199 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 2 Nov 2023 16:39:58 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=EF=BC=8C=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BB=8E=E7=BC=93=E5=AD=98=E6=8B=BF=E9=80=89=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 35f02da4a..a7c57a733 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -567,12 +567,27 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc @Override public XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param) { - ValidUtil.doValidator(param); - +// ValidUtil.doValidator(param); + // 从缓存中获取所选的薪资项目 + String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; + String cacheValue = (String)Util_DataCache.getObjVal(cacheKey); + List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); // 必须选择导入模板所需的薪资项目 - if (CollectionUtils.isEmpty(param.getSalaryItemIds())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99019, "参数错误,请选择导入模板所需的薪资项目")); + if (CollectionUtils.isEmpty(checkItems)) { + // 获取所有可以选择的薪资项目 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 查询薪资核算记录所用的薪资账套的薪资项目副本 + List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); + if (CollectionUtils.isEmpty(salaryItemIds)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "该核算记录不存在薪资项目")); + } + checkItems = salaryItemIds; } + param.setSalaryItemIds(checkItems); // 查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); if (Objects.isNull(salaryAcctRecordPO)) { From 0634a139b96a07c99d7f9b59fb8327d32db34549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 2 Nov 2023 18:41:58 +0800 Subject: [PATCH 12/23] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataCollectionEmployee.java | 7 ++++ .../hrm/param/EmployeeInfoExpandParam.java | 29 ++++++++++++++ .../salary/entity/hrm/param/FieldSetting.java | 33 ++++++++++++++++ .../salary/service/SalaryEmployeeService.java | 5 +++ .../impl/SalaryEmployeeServiceImpl.java | 39 +++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java create mode 100644 src/com/engine/salary/entity/hrm/param/FieldSetting.java diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index 1b0931ff3..d18c8759b 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -6,6 +6,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Map; + /** * 员工基本信息 *

Copyright: Copyright (c) 2022

@@ -108,5 +110,10 @@ public class DataCollectionEmployee { //是否外部人员 private boolean extEmp; + /** + * 扩展数据 + */ + private Map extendData; + } diff --git a/src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java b/src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java new file mode 100644 index 000000000..8ccd02459 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.hrm.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 人员扩展参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EmployeeInfoExpandParam { + private String primaryKey; + + private String sql; + + private List fieldSettings; + +} diff --git a/src/com/engine/salary/entity/hrm/param/FieldSetting.java b/src/com/engine/salary/entity/hrm/param/FieldSetting.java new file mode 100644 index 000000000..ab4c338ea --- /dev/null +++ b/src/com/engine/salary/entity/hrm/param/FieldSetting.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.hrm.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FieldSetting { + + /** + * 字段 + */ + private String field; + + /** + * 显示 + */ + private String name; + + /** + * 值 + */ + private String value; + + /** + * 排序 + */ + private Integer index; +} diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index 1832d4772..bc1e05cfd 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -4,6 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; +import com.engine.salary.entity.hrm.param.EmployeeInfoExpandParam; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; @@ -99,4 +100,8 @@ public interface SalaryEmployeeService { * @param formatDate */ Map getResignationMapByDate(String formatDate); + + + + List extendEmployeeInfo(List ids, EmployeeInfoExpandParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 6f0f8fb55..e6138fcc1 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -9,6 +9,8 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; +import com.engine.salary.entity.hrm.param.EmployeeInfoExpandParam; +import com.engine.salary.entity.hrm.param.FieldSetting; import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobRangePO; @@ -27,6 +29,7 @@ import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.conn.RecordSet; import weaver.hrm.User; import java.util.*; @@ -272,6 +275,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee /** * 根据离职日期获取离职信息 + * * @param dismissDate * @return */ @@ -283,4 +287,39 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee List employeeList = employBiz.listByDismissDate(dismissDate); return SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getDismissdate); } + + @Override + public List extendEmployeeInfo(List ids, EmployeeInfoExpandParam param) { + + List employees = getEmployeeByIdsAll(ids); + + EmployeeInfoExpandParam employeeInfoExpandParam = new EmployeeInfoExpandParam(); + employeeInfoExpandParam.setSql("select id,lastname from hrmresource where id =$人员id$ "); + employeeInfoExpandParam.setPrimaryKey("id"); + FieldSetting build = FieldSetting.builder().name("名称").field("lastname").build(); + List list = new ArrayList<>(); + list.add(build); + employeeInfoExpandParam.setFieldSettings(list); + + RecordSet rs = new RecordSet(); + + String sql = employeeInfoExpandParam.getSql().replace("=$人员id$", "in" + StringUtils.join(ids, ",")); + String primaryKey = employeeInfoExpandParam.getPrimaryKey(); + rs.executeQuery(sql); + while (rs.next()) { + Map extendData = new HashMap<>(); + list.forEach(setting -> { + String field = setting.getField(); + String value = rs.getString(field); + setting.setValue(value); + extendData.put(field,value); + }); + + rs.getString(primaryKey); + employees.stream() + .filter(e->primaryKey.equals(e.getEmployeeId().toString())) + .forEach(e->e.setExtendData(extendData)); + } + return employees; + } } From 74f7c71ffeaba10286e03d061a950b190a15da68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 6 Nov 2023 11:19:00 +0800 Subject: [PATCH 13/23] =?UTF-8?q?=E6=89=A9=E5=B1=95=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EmployeeInfoExpandDTO.java} | 25 +- .../hrm/{param => dto}/FieldSetting.java | 2 +- .../entity/hrm/po/ExpandFieldSettingsPO.java | 74 +++++ .../mapper/hrm/ExpandFieldSettingsMapper.java | 73 +++++ .../mapper/hrm/ExpandFieldSettingsMapper.xml | 259 ++++++++++++++++++ .../entity/bo/SalaryStatisticsReportBO.java | 21 +- .../SalaryStatisticsDimensionService.java | 16 ++ .../SalaryStatisticsDimensionServiceImpl.java | 17 ++ .../SalaryStatisticsReportServiceImpl.java | 39 ++- .../SalaryStatisticsDimensionController.java | 30 +- .../SalaryStatisticsDimensionWrapper.java | 41 ++- .../SalaryStatisticsReportWrapper.java | 14 +- .../salary/service/SalaryEmployeeService.java | 22 +- .../impl/SalaryEmployeeServiceImpl.java | 126 ++++++--- src/com/engine/salary/util/XssSQL.java | 25 ++ 15 files changed, 712 insertions(+), 72 deletions(-) rename src/com/engine/salary/entity/hrm/{param/EmployeeInfoExpandParam.java => dto/EmployeeInfoExpandDTO.java} (53%) rename src/com/engine/salary/entity/hrm/{param => dto}/FieldSetting.java (90%) create mode 100644 src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java create mode 100644 src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.java create mode 100644 src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml create mode 100644 src/com/engine/salary/util/XssSQL.java diff --git a/src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java similarity index 53% rename from src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java rename to src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java index 8ccd02459..4c3551731 100644 --- a/src/com/engine/salary/entity/hrm/param/EmployeeInfoExpandParam.java +++ b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java @@ -1,4 +1,4 @@ -package com.engine.salary.entity.hrm.param; +package com.engine.salary.entity.hrm.dto; import lombok.AllArgsConstructor; import lombok.Builder; @@ -19,11 +19,30 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class EmployeeInfoExpandParam { +public class EmployeeInfoExpandDTO { + + private Long id; + /** + * 功能模块 + */ + private String module; + /** + * 模块信息 + */ + private String moduleInfo; + /** + * 主键 + */ private String primaryKey; - private String sql; + /** + * sql + */ + private String expandSql; + /** + * 字段设置 + */ private List fieldSettings; } diff --git a/src/com/engine/salary/entity/hrm/param/FieldSetting.java b/src/com/engine/salary/entity/hrm/dto/FieldSetting.java similarity index 90% rename from src/com/engine/salary/entity/hrm/param/FieldSetting.java rename to src/com/engine/salary/entity/hrm/dto/FieldSetting.java index ab4c338ea..e63ce9ee7 100644 --- a/src/com/engine/salary/entity/hrm/param/FieldSetting.java +++ b/src/com/engine/salary/entity/hrm/dto/FieldSetting.java @@ -1,4 +1,4 @@ -package com.engine.salary.entity.hrm.param; +package com.engine.salary.entity.hrm.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java b/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java new file mode 100644 index 000000000..6af7c6a79 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java @@ -0,0 +1,74 @@ +package com.engine.salary.entity.hrm.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * 人员维度扩展表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExpandFieldSettingsPO { + private Long id; + + /** + * 功能模块 + */ + private String module; + + /** + * 模块信息 + */ + private String moduleInfo; + + /** + * 主键 + */ + private String primaryKey; + + /** + * sql + */ + private String expandSql; + + /** + * 字段设置 + */ + private String fieldSetting; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + private Integer deleteType; + + /** + * 租户ID + */ + private String tenantKey; + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.java b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.java new file mode 100644 index 000000000..9d1c9fab9 --- /dev/null +++ b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.hrm; + +import com.engine.salary.entity.hrm.po.ExpandFieldSettingsPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface ExpandFieldSettingsMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(ExpandFieldSettingsPO expandFieldSettings); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + ExpandFieldSettingsPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param expandFieldSettings 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(ExpandFieldSettingsPO expandFieldSettings); + + /** + * 修改,修改所有字段 + * + * @param expandFieldSettings 修改的记录 + * @return 返回影响行数 + */ + int update(ExpandFieldSettingsPO expandFieldSettings); + + /** + * 修改,忽略null字段 + * + * @param expandFieldSettings 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(ExpandFieldSettingsPO expandFieldSettings); + + /** + * 删除记录 + * + * @param expandFieldSettings 待删除的记录 + * @return 返回影响行数 + */ + int delete(ExpandFieldSettingsPO expandFieldSettings); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + + ExpandFieldSettingsPO getByModule(String module); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml new file mode 100644 index 000000000..b5eb824ad --- /dev/null +++ b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + t + . + id + , t.module + , t.module_info + , t.primaryKey + , t.expand_sql + , t.field_setting + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_expand_field_settings + + + id, + + + module, + + + module_info, + + + primaryKey, + + + expand_sql, + + + field_setting, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{module}, + + + #{moduleInfo}, + + + #{primaryKey}, + + + #{expandSql}, + + + #{fieldSetting}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + + + UPDATE hrsa_expand_field_settings + + module=#{module}, + module_info=#{moduleInfo}, + primaryKey=#{primaryKey}, + expand_sql=#{expandSql}, + field_setting=#{fieldSetting}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_expand_field_settings + + + module=#{module}, + + + module_info=#{moduleInfo}, + + + primaryKey=#{primaryKey}, + + + expand_sql=#{expandSql}, + + + field_setting=#{fieldSetting}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_expand_field_settings + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_expand_field_settings + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 1a76e5883..671ca4b0b 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -2,7 +2,10 @@ package com.engine.salary.report.entity.bo; import com.alibaba.fastjson.JSON; import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.common.util.ServiceUtil; import com.engine.salary.component.WeaTableColumnGroup; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; +import com.engine.salary.entity.hrm.dto.FieldSetting; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.report.common.constant.SalaryStatisticsDimensionConstant; import com.engine.salary.report.entity.dto.SalaryStatisticsItemRuleDTO; @@ -14,6 +17,8 @@ import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; import com.engine.salary.report.enums.UnitTypeEnum; +import com.engine.salary.report.service.SalaryStatisticsDimensionService; +import com.engine.salary.report.service.impl.SalaryStatisticsDimensionServiceImpl; import com.engine.salary.report.util.ReportDataUtil; import com.engine.salary.report.util.ReportTimeUtil; import com.engine.salary.util.SalaryDateUtil; @@ -27,6 +32,7 @@ import org.apache.commons.collections4.MapUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; +import weaver.hrm.User; import java.math.BigDecimal; import java.math.RoundingMode; @@ -80,6 +86,10 @@ public class SalaryStatisticsReportBO { public static final String G_YEAR = "year"; public static final String G_ITEM = "ITEM"; + private static SalaryStatisticsDimensionService getSalaryStatisticsDimensionService() { + return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, new User(1)); + } + /** * 参数转换 * @@ -832,11 +842,12 @@ public class SalaryStatisticsReportBO { result.add(new WeaTableColumnGroup("150", dimensionName.getDimName(), "dimension")); - //人员维度新增部门和工号 - if (SalaryStatisticsDimensionConstant.DM_EMPLOYEE.equals(dimensionName.getDimCode())) { - result.add(new WeaTableColumnGroup("150", "部门", "departmentName")); - result.add(new WeaTableColumnGroup("150", "工号", "workcode")); - } + //扩展维度属性 + EmployeeInfoExpandDTO expandFieldSettings = getSalaryStatisticsDimensionService().getExpandFieldSettings("dim_" + dimensionName.getDimCode()); + List fieldSettings = Optional.ofNullable(Optional.ofNullable(expandFieldSettings).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>()); + fieldSettings.stream().sorted(Comparator.comparing(FieldSetting::getIndex)).forEach(setting -> { + result.add(new WeaTableColumnGroup("150", setting.getName(), setting.getField())); + }); Map itemMap = salaryStatisticsItemList.stream().collect(Collectors.toMap(SalaryStatisticsItemPO::getId, Function.identity())); Map itemIdNameMap = salaryStatisticsItemList.stream().collect(LinkedHashMap::new, (map, item) -> map.put(item.getId(), item.getItemName()), LinkedHashMap::putAll); diff --git a/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java b/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java index 7f3dd8b38..e3a657209 100644 --- a/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java +++ b/src/com/engine/salary/report/service/SalaryStatisticsDimensionService.java @@ -1,5 +1,6 @@ package com.engine.salary.report.service; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.report.entity.param.SalaryStatisticsDimensionQueryParam; import com.engine.salary.report.entity.param.SalaryStatisticsDimensionSaveParam; import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; @@ -58,6 +59,20 @@ public interface SalaryStatisticsDimensionService { */ String save(SalaryStatisticsDimensionSaveParam saveParam); + /** + * 保存字段扩展 + * @param saveParam + * @return + */ + void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam); + + /** + * 查询薪酬统计维度扩展字段设置 + * @param module + * @return + */ + EmployeeInfoExpandDTO getExpandFieldSettings(String module); + /** * 删除薪酬统计维度 * @@ -72,4 +87,5 @@ public interface SalaryStatisticsDimensionService { * @return */ List listAllDefaultDimension(); + } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java index 865015758..c855e0037 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsDimensionServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.report.service.impl; import com.alibaba.fastjson.JSON; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.report.SalaryStatisticsDimensionMapper; import com.engine.salary.report.common.constant.SalaryStatisticsDimensionConstant; @@ -13,6 +14,8 @@ import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; import com.engine.salary.report.enums.SalaryStatisticsDimensionTypeEnum; import com.engine.salary.report.service.SalaryStatisticsDimensionService; import com.engine.salary.report.service.SalaryStatisticsReportService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; @@ -46,6 +49,10 @@ public class SalaryStatisticsDimensionServiceImpl extends Service implements Sal return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + /** * 初始化默认维度 */ @@ -197,6 +204,16 @@ public class SalaryStatisticsDimensionServiceImpl extends Service implements Sal return StringUtils.EMPTY; } + @Override + public void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam) { + getSalaryEmployeeService(user).saveEmployeeExpandFieldSettings(saveParam); + } + + @Override + public EmployeeInfoExpandDTO getExpandFieldSettings(String module) { + return getSalaryEmployeeService(user).getExpandFieldSettings(module); + } + @Override public Map delete(Collection ids) { if (CollectionUtils.isEmpty(ids)) { diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index ecadc58bf..553bc1227 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -6,6 +6,8 @@ import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; +import com.engine.salary.entity.hrm.dto.FieldSetting; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -22,6 +24,7 @@ import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; import com.engine.salary.report.enums.SalaryStatisticsDimensionTypeEnum; +import com.engine.salary.report.service.SalaryStatisticsDimensionService; import com.engine.salary.report.service.SalaryStatisticsItemService; import com.engine.salary.report.service.SalaryStatisticsReportService; import com.engine.salary.report.util.ReportTimeUtil; @@ -70,6 +73,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); } + private SalaryStatisticsDimensionService getSalaryStatisticsDimensionService(User user) { + return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, user); + } + private SalaryStatisticsItemService getSalaryStatisticsItemService(User user) { return ServiceUtil.getService(SalaryStatisticsItemServiceImpl.class, user); } @@ -392,8 +399,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map> resultMap = new HashMap<>(); List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - if( NumberUtils.isCreatable(dimension.getDimCode()) ){ - List salaryAcctResultValues = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIds,Collections.singleton(Long.valueOf(dimension.getDimCode()))); + if (NumberUtils.isCreatable(dimension.getDimCode())) { + List salaryAcctResultValues = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIds, Collections.singleton(Long.valueOf(dimension.getDimCode()))); List finalSalaryAcctEmpIds = getSalaryAcctResultService(user).listAcctEmpIdByAcctEmpId(salaryAcctEmployeeIds); Map> salaryAcctEmpResultMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId); salaryAcctEmpResultMap.forEach((k, v) -> { @@ -401,8 +408,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary resultMap.put(k, collect); }); salaryAcctEmployeeIds.stream().forEach(id -> { - if(!resultMap.containsKey(id) && finalSalaryAcctEmpIds.contains(id)) - resultMap.put(id,Collections.emptyMap()); + if (!resultMap.containsKey(id) && finalSalaryAcctEmpIds.contains(id)) + resultMap.put(id, Collections.emptyMap()); }); } @@ -464,7 +471,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } public List getReportCache() { - List report = new ArrayList<>(); + List report = new ArrayList<>(); //获取所有缓存报表的id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); @@ -473,13 +480,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary if (StringUtils.isNotBlank(id)) { //报表下条件id String salaryReportConditions = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id); - List c= new ArrayList<>(); + List c = new ArrayList<>(); if (StringUtils.isNotBlank(salaryReportConditions)) { Arrays.asList(salaryReportConditions.split(",")).forEach(paramMd5 -> { if (StringUtils.isNotBlank(paramMd5)) { Map data = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); - Map kv= new HashMap<>(); - kv.put(paramMd5,data); + Map kv = new HashMap<>(); + kv.put(paramMd5, data); c.add(kv); } } @@ -1014,7 +1021,14 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map> employeeListMap = accountDetailPOList.stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); Map> lastEmployeeListMap = data.getLastList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); Map> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId)); - Map employeeByIdMap = getSalaryEmployeeService(user).getEmployeeByIdsAll(accountDetailPOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList())).stream().collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o)); + + //人员维度扩展属性 + EmployeeInfoExpandDTO employeeInfoExpandDTO = getSalaryStatisticsDimensionService(user).getExpandFieldSettings("dim_employee"); + List fieldSettings = Optional.ofNullable(Optional.ofNullable(employeeInfoExpandDTO).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>()); + + Map employeeByIdMap = getSalaryEmployeeService(user).expandEmployeeInfo(accountDetailPOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), employeeInfoExpandDTO) + .stream() + .collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o)); // List extEmployees = extEmployeeService.listByIdsWithDeleted(accountDetailPOList.stream().filter(e -> EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(e.getEmployeeType())).map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), data.getTenantKey()); // Map employeeExtByIdMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId, ExtEmployeePO::getUsername); @@ -1025,8 +1039,11 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map temp = new HashMap<>(); // temp.put(DM, Objects.nonNull(employeeByIdMap.get(k)) ? employeeByIdMap.get(k) : employeeExtByIdMap.get(k)); temp.put(DM, employeeByIdMap.get(k).getUsername()); - temp.put("departmentName", employeeByIdMap.get(k).getDepartmentName()); - temp.put("workcode", employeeByIdMap.get(k).getWorkcode()); + fieldSettings.forEach( + fieldSetting -> { + temp.put(fieldSetting.getField(), employeeByIdMap.get(k).getExtendData().get(fieldSetting.getField())); + } + ); temp.putAll(SalaryStatisticsReportBO.calculateItem(v, lastEmployeeListMap.get(k), sameEmployeeListMap.get(k), salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, employeeByIdMap.get(k).getUsername())) { diff --git a/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java b/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java index e0f26bb8d..222bda7a5 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java @@ -1,6 +1,7 @@ package com.engine.salary.report.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.report.entity.dto.SalaryStatisticsDimensionFormDTO; import com.engine.salary.report.entity.dto.SalaryStatisticsDimensionListDTO; import com.engine.salary.report.entity.param.SalaryStatisticsDimensionQueryParam; @@ -58,7 +59,7 @@ public class SalaryStatisticsDimensionController { @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) - public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id")Long id) { + public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::getFrom, id); } @@ -78,6 +79,33 @@ public class SalaryStatisticsDimensionController { return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::save, saveParam); } + /** + * 保存薪酬统计维度扩展字段设置 + * + * @param saveParam + * @return + */ + @POST + @Path("/saveExpandFieldSettings") + @Produces(MediaType.APPLICATION_JSON) + public String saveExpandFieldSettings(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeInfoExpandDTO saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::saveExpandFieldSettings, saveParam); + } + + /** + * 查询薪酬统计维度扩展字段设置 + * + * @return + */ + @GET + @Path("/getExpandFieldSettings") + @Produces(MediaType.APPLICATION_JSON) + public String getExpandFieldSettings(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::getExpandFieldSettings); + } + /** * 删除薪酬统计维度 * diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java index 11619c545..63c0ac552 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java @@ -3,6 +3,7 @@ package com.engine.salary.report.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.WeaFormOption; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -22,6 +23,7 @@ import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.XssSQL; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; @@ -43,11 +45,11 @@ public class SalaryStatisticsDimensionWrapper extends Service { private SalaryStatisticsDimensionService salaryStatisticsDimensionService(User user) { - return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, user); + return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, user); } private SalaryItemService salaryItemService(User user) { - return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryStatisticsDimensionService getSalaryStatisticsDimensionService(User user) { @@ -67,7 +69,7 @@ public class SalaryStatisticsDimensionWrapper extends Service { public PageInfo list(SalaryStatisticsDimensionQueryParam queryParam) { PageInfo page = salaryStatisticsDimensionService(user).listPage(queryParam); List list = page.getList(); - List dtoList= new ArrayList<>(); + List dtoList = new ArrayList<>(); // 获取默认维度统计 List defaultSalaryStatisticsDimensions = getSalaryStatisticsDimensionService(user).listAllDefaultDimension(); @@ -87,11 +89,11 @@ public class SalaryStatisticsDimensionWrapper extends Service { .canEdit(true) .canDelete(true) .build(); - if (defaultDimensionIds.contains(dto.getId())){ + if (defaultDimensionIds.contains(dto.getId())) { // 默认维度不允许修改、删除 dto.setCanEdit(false); dto.setCanDelete(false); - }else if(haveUsedDimIds.contains(dto.getId().toString())){ + } else if (haveUsedDimIds.contains(dto.getId().toString())) { // 被薪资统计报表引用的不能删除 dto.setCanDelete(false); } @@ -99,7 +101,7 @@ public class SalaryStatisticsDimensionWrapper extends Service { }); } - PageInfo salaryStatisticsDimensionListDTOPageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); + PageInfo salaryStatisticsDimensionListDTOPageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); salaryStatisticsDimensionListDTOPageInfo.setList(dtoList); salaryStatisticsDimensionListDTOPageInfo.setTotal(page.getTotal()); return salaryStatisticsDimensionListDTOPageInfo; @@ -138,8 +140,8 @@ public class SalaryStatisticsDimensionWrapper extends Service { .map(item -> new WeaFormOption(item.getId().toString(), item.getName())).collect(Collectors.toList())); // 1.构建基础信息表单 Map baseForm = new HashMap<>(); - baseForm.put("statsDimOptions",statsDimOptions); - baseForm.put("groupDimOptions",groupDimOptions); + baseForm.put("statsDimOptions", statsDimOptions); + baseForm.put("groupDimOptions", groupDimOptions); // 2.分组设置 String groupSetting = "[]"; if (id != null) { @@ -187,6 +189,28 @@ public class SalaryStatisticsDimensionWrapper extends Service { return salaryStatisticsDimensionService(user).save(saveParam); } + /** + * 保存薪酬统计维度扩展设置 + * + * @param saveParam + * @return + */ + public void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam) { + saveParam.setExpandSql(XssSQL.handleXSSContent(saveParam.getExpandSql())); + saveParam.setModule("dim_employee"); + salaryStatisticsDimensionService(user).saveExpandFieldSettings(saveParam); + } + + + /** + * 查询薪酬统计维度扩展字段设置 + * + * @return + */ + public EmployeeInfoExpandDTO getExpandFieldSettings() { + return salaryStatisticsDimensionService(user).getExpandFieldSettings("dim_employee"); + } + /** * 删除薪酬统计维度 * @@ -211,4 +235,5 @@ public class SalaryStatisticsDimensionWrapper extends Service { return map; }).collect(Collectors.toList()); } + } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 895b09ba9..954df95fd 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -305,13 +305,13 @@ public class SalaryStatisticsReportWrapper extends Service { //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; - if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { - //报表中缓存的条件 - salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); - if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); - } - } +// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { +// //报表中缓存的条件 +// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); +// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { +// return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); +// } +// } // 列表data diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index bc1e05cfd..b8020f4d1 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -4,7 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; -import com.engine.salary.entity.hrm.param.EmployeeInfoExpandParam; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; @@ -101,7 +101,25 @@ public interface SalaryEmployeeService { */ Map getResignationMapByDate(String formatDate); + /** + * 扩展人员信息 + * @param ids + * @param param + * @return + */ + List expandEmployeeInfo(List ids, EmployeeInfoExpandDTO param); - List extendEmployeeInfo(List ids, EmployeeInfoExpandParam param); + /** + * 保存扩展信息 + * @param param + */ + void saveEmployeeExpandFieldSettings(EmployeeInfoExpandDTO param); + + /** + * 获取扩展信息 + * @param module + * @return + */ + EmployeeInfoExpandDTO getExpandFieldSettings(String module); } diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index e6138fcc1..d08da10a1 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -1,22 +1,25 @@ package com.engine.salary.service.impl; +import com.alibaba.fastjson.JSON; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.EmployBiz; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; -import com.engine.salary.entity.hrm.param.EmployeeInfoExpandParam; -import com.engine.salary.entity.hrm.param.FieldSetting; +import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; +import com.engine.salary.entity.hrm.dto.FieldSetting; +import com.engine.salary.entity.hrm.po.ExpandFieldSettingsPO; import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobRangePO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; -import com.engine.salary.mapper.datacollection.EmployMapper; +import com.engine.salary.mapper.hrm.ExpandFieldSettingsMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; @@ -24,8 +27,8 @@ import com.engine.salary.service.SalarySobExtRangeService; import com.engine.salary.service.SalarySobRangeService; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.db.MapperProxyFactory; import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; @@ -51,15 +54,16 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); } - private EmployMapper getEmployMapper() { - return MapperProxyFactory.getProxy(EmployMapper.class); - } - private SalarySysConfMapper getSalarySysConfMapper() { return SqlProxyHandle.getProxy(SalarySysConfMapper.class); } + private ExpandFieldSettingsMapper getExpandFieldSettingsMapper() { + return SqlProxyHandle.getProxy(ExpandFieldSettingsMapper.class); + } + + private ExtEmpService getExtEmpService(User user) { return ServiceUtil.getService(ExtEmpServiceImpl.class, user); } @@ -289,37 +293,91 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee } @Override - public List extendEmployeeInfo(List ids, EmployeeInfoExpandParam param) { + public List expandEmployeeInfo(List ids, EmployeeInfoExpandDTO param) { List employees = getEmployeeByIdsAll(ids); - EmployeeInfoExpandParam employeeInfoExpandParam = new EmployeeInfoExpandParam(); - employeeInfoExpandParam.setSql("select id,lastname from hrmresource where id =$人员id$ "); - employeeInfoExpandParam.setPrimaryKey("id"); - FieldSetting build = FieldSetting.builder().name("名称").field("lastname").build(); - List list = new ArrayList<>(); - list.add(build); - employeeInfoExpandParam.setFieldSettings(list); + if (param != null) { + RecordSet rs = new RecordSet(); + String sql = param.getExpandSql().replace("=$人员id$", "in (" + StringUtils.join(ids, ",") + ")") + .replace("in($人员id$)", "in (" + StringUtils.join(ids, ",") + ")"); + String primaryKey = param.getPrimaryKey(); + rs.executeQuery(sql); + while (rs.next()) { + Map extendData = new HashMap<>(); + param.getFieldSettings().forEach(setting -> { + String field = setting.getField(); + String value = rs.getString(field); + setting.setValue(value); + extendData.put(field, value); + }); - RecordSet rs = new RecordSet(); - - String sql = employeeInfoExpandParam.getSql().replace("=$人员id$", "in" + StringUtils.join(ids, ",")); - String primaryKey = employeeInfoExpandParam.getPrimaryKey(); - rs.executeQuery(sql); - while (rs.next()) { - Map extendData = new HashMap<>(); - list.forEach(setting -> { - String field = setting.getField(); - String value = rs.getString(field); - setting.setValue(value); - extendData.put(field,value); - }); - - rs.getString(primaryKey); - employees.stream() - .filter(e->primaryKey.equals(e.getEmployeeId().toString())) - .forEach(e->e.setExtendData(extendData)); + String id = rs.getString(primaryKey); + employees.stream() + .filter(e -> id.equals(e.getEmployeeId().toString())) + .forEach(e -> e.setExtendData(extendData)); + } } return employees; } + + @Override + public void saveEmployeeExpandFieldSettings(EmployeeInfoExpandDTO param) { + String settings = JSON.toJSONString(param.getFieldSettings()); + + Date now = new Date(); + + if (Objects.nonNull(param.getId())) { + ExpandFieldSettingsPO po = getExpandFieldSettingsMapper().getById(param.getId()); + if (po == null) { + throw new RuntimeException("配置不存在!"); + } + + po.setPrimaryKey(param.getPrimaryKey()); + po.setExpandSql(param.getExpandSql()); + po.setFieldSetting(settings); + po.setCreator((long) user.getUID()); + po.setUpdateTime(now); + getExpandFieldSettingsMapper().update(po); + + } else { + ExpandFieldSettingsPO po = ExpandFieldSettingsPO.builder() + .id(IdGenerator.generate()) + .module(param.getModule()) + .moduleInfo(param.getModuleInfo()) + .primaryKey(param.getPrimaryKey()) + .fieldSetting(settings) + .expandSql(param.getExpandSql()) + .deleteType(0) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getExpandFieldSettingsMapper().insertIgnoreNull(po); + } + + } + + + @Override + public EmployeeInfoExpandDTO getExpandFieldSettings(String module) { + + ExpandFieldSettingsPO po = getExpandFieldSettingsMapper().getByModule(module); + + if (po != null) { + List list = JSON.parseArray(po.getFieldSetting(), FieldSetting.class); + return EmployeeInfoExpandDTO.builder() + .id(po.getId()) + .module(po.getModule()) + .moduleInfo(po.getModuleInfo()) + .primaryKey(po.getPrimaryKey()) + .expandSql(po.getExpandSql()) + .fieldSettings(list) + .build(); + + } + + return null; + } } diff --git a/src/com/engine/salary/util/XssSQL.java b/src/com/engine/salary/util/XssSQL.java new file mode 100644 index 000000000..c6f4fab59 --- /dev/null +++ b/src/com/engine/salary/util/XssSQL.java @@ -0,0 +1,25 @@ +package com.engine.salary.util; + +public class XssSQL { + + public static String handleXSSContent(String xss) { + return xss.replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "like") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION"); + } +} From 43d627c23ac5933dab276357126c6ebb631e1434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 6 Nov 2023 11:32:25 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E6=89=A9=E5=B1=95=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/web/SalaryStatisticsDimensionController.java | 4 ++-- .../report/wrapper/SalaryStatisticsDimensionWrapper.java | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java b/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java index 222bda7a5..16c4a64d0 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsDimensionController.java @@ -101,9 +101,9 @@ public class SalaryStatisticsDimensionController { @GET @Path("/getExpandFieldSettings") @Produces(MediaType.APPLICATION_JSON) - public String getExpandFieldSettings(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public String getExpandFieldSettings(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "module") String module) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::getExpandFieldSettings); + return new ResponseResult(user).run(getSalaryStatisticsDimensionWrapper(user)::getExpandFieldSettings, module); } /** diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java index 63c0ac552..7a59d343b 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java @@ -197,7 +197,6 @@ public class SalaryStatisticsDimensionWrapper extends Service { */ public void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam) { saveParam.setExpandSql(XssSQL.handleXSSContent(saveParam.getExpandSql())); - saveParam.setModule("dim_employee"); salaryStatisticsDimensionService(user).saveExpandFieldSettings(saveParam); } @@ -207,8 +206,8 @@ public class SalaryStatisticsDimensionWrapper extends Service { * * @return */ - public EmployeeInfoExpandDTO getExpandFieldSettings() { - return salaryStatisticsDimensionService(user).getExpandFieldSettings("dim_employee"); + public EmployeeInfoExpandDTO getExpandFieldSettings(String module) { + return salaryStatisticsDimensionService(user).getExpandFieldSettings(module); } /** From 36a77a8e0f01061291c98c38cd5aeb3ff878e04d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 6 Nov 2023 18:46:49 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E7=BB=B4=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/SalaryStatisticsItemMapper.xml | 48 +++++ .../entity/bo/SalaryStatisticsReportBO.java | 193 +++++++++++++++++- .../dto/SalaryStatisticsItemRuleDTO.java | 17 +- .../param/SalaryStatisticsItemSaveParam.java | 13 +- .../entity/po/SalaryStatisticsItemPO.java | 8 +- .../SalaryStatisticsItemStringRuleEnum.java | 2 +- .../impl/SalaryStatisticsItemServiceImpl.java | 8 + 7 files changed, 263 insertions(+), 26 deletions(-) diff --git a/src/com/engine/salary/mapper/report/SalaryStatisticsItemMapper.xml b/src/com/engine/salary/mapper/report/SalaryStatisticsItemMapper.xml index 68d44970b..69abc9536 100644 --- a/src/com/engine/salary/mapper/report/SalaryStatisticsItemMapper.xml +++ b/src/com/engine/salary/mapper/report/SalaryStatisticsItemMapper.xml @@ -19,6 +19,10 @@ + + + + @@ -42,6 +46,10 @@ , t.tenant_key , t.unit_type , t.update_time + , t.last_rule + , t.old_rule + , t.frequent_rule + , t.tile_rule @@ -184,6 +192,18 @@ update_time, + + last_rule, + + + old_rule, + + + frequent_rule, + + + tile_rule, + @@ -237,6 +257,18 @@ #{updateTime}, + + #{lastRule}, + + + #{oldRule}, + + + #{frequentRule}, + + + #{tileRule}, +
@@ -260,6 +292,10 @@ tenant_key=#{tenantKey}, unit_type=#{unitType}, update_time=#{updateTime}, + last_rule=#{lastRule}, + old_rule=#{oldRule}, + frequent_rule=#{frequentRule}, + tile_rule=#{tileRule}, WHERE id = #{id} AND delete_type = 0 @@ -317,6 +353,18 @@ update_time=#{updateTime}, + + last_rule=#{lastRule}, + + + old_rule=#{oldRule}, + + + frequent_rule=#{frequentRule}, + + + tile_rule=#{tileRule}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 2498a91cf..df2420303 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -13,6 +13,7 @@ import com.engine.salary.report.entity.param.SalaryStatisticsReportDataQueryPara import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; import com.engine.salary.report.entity.po.SalaryStatisticsItemPO; import com.engine.salary.report.entity.po.SalaryStatisticsReportPO; +import com.engine.salary.report.enums.SalaryStatisticsItemStringRuleEnum; import com.engine.salary.report.enums.UnitTypeEnum; import com.engine.salary.report.util.ReportDataUtil; import com.engine.salary.report.util.ReportTimeUtil; @@ -20,6 +21,7 @@ import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; +import com.google.common.base.Joiner; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; @@ -45,7 +47,6 @@ public class SalaryStatisticsReportBO { public static final String MAX = "max"; public static final String MIN = "min"; public static final String MEDIAN = "median"; - public static final String LATEST = "last"; public static final String ZERO = "0"; public static final String ONE = "1"; @@ -174,7 +175,13 @@ public class SalaryStatisticsReportBO { // 6.中位数规则数据处理 calculate4Median(result, item, nowDetail, lastDetail, sameDetail); // 7.最近值 - calculate4Latest(result, item, nowDetail, lastDetail, sameDetail); + calculate4Last(result, item, nowDetail, lastDetail, sameDetail); + // 8.最久值 + calculate4Old(result, item, nowDetail, lastDetail, sameDetail); + // 9.最频繁 + calculate4Frequent(result, item, nowDetail, lastDetail, sameDetail); + // 10.平铺 + calculate4Tile(result, item, nowDetail, lastDetail, sameDetail); }); return result; } @@ -491,14 +498,14 @@ public class SalaryStatisticsReportBO { * @param lastDetail * @param sameDetail */ - private static void calculate4Latest(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { - SalaryStatisticsItemRuleDTO medianRule = JSON.parseObject(item.getMedianRule(), SalaryStatisticsItemRuleDTO.class); - if (medianRule == null || medianRule.getTotalValue() != 1) { + private static void calculate4Last(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { + SalaryStatisticsItemRuleDTO lastRule = JSON.parseObject(item.getLastRule(), SalaryStatisticsItemRuleDTO.class); + if (lastRule == null || lastRule.getTotalValue() != 1) { return; } String lastValue = ""; // 本期 - if (medianRule.getTotalValue() == 1) { + if (lastRule.getTotalValue() == 1) { List decimalList = Lists.newArrayList(); if (StringUtils.isNotEmpty(item.getItemValue())) { String[] itemValues = item.getItemValue().split(COMMA); @@ -512,7 +519,109 @@ public class SalaryStatisticsReportBO { } // 本期最近值 lastValue = last(decimalList); - nowAndRatio(result, item, medianRule, LATEST, lastValue); + nowAndRatio(result, item, lastRule, SalaryStatisticsItemStringRuleEnum.LAST.getValue(), lastValue); + } + } + + /** + * 最旧的值 + * + * @param result + * @param item + * @param nowDetail + * @param lastDetail + * @param sameDetail + */ + private static void calculate4Old(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { + SalaryStatisticsItemRuleDTO oldRule = JSON.parseObject(item.getOldRule(), SalaryStatisticsItemRuleDTO.class); + if (oldRule == null || oldRule.getTotalValue() != 1) { + return; + } + String value = ""; + // 本期 + if (oldRule.getTotalValue() == 1) { + List decimalList = Lists.newArrayList(); + if (StringUtils.isNotEmpty(item.getItemValue())) { + String[] itemValues = item.getItemValue().split(COMMA); + for (String itemId : itemValues) { + for (Map x : nowDetail) { + if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) { + decimalList.add(x.get(itemId)); + } + } + } + } + // 本期最近值 + value = old(decimalList); + nowAndRatio(result, item, oldRule, SalaryStatisticsItemStringRuleEnum.OLD.getValue(), value); + } + } + + /** + * 最频繁 + * + * @param result + * @param item + * @param nowDetail + * @param lastDetail + * @param sameDetail + */ + private static void calculate4Frequent(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { + SalaryStatisticsItemRuleDTO frequentRule = JSON.parseObject(item.getOldRule(), SalaryStatisticsItemRuleDTO.class); + if (frequentRule == null || frequentRule.getTotalValue() != 1) { + return; + } + String value = ""; + // 本期 + if (frequentRule.getTotalValue() == 1) { + List decimalList = Lists.newArrayList(); + if (StringUtils.isNotEmpty(item.getItemValue())) { + String[] itemValues = item.getItemValue().split(COMMA); + for (String itemId : itemValues) { + for (Map x : nowDetail) { + if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) { + decimalList.add(x.get(itemId)); + } + } + } + } + // 本期最近值 + value = frequent(decimalList); + nowAndRatio(result, item, frequentRule, SalaryStatisticsItemStringRuleEnum.FREQUENT.getValue(), value); + } + } + + /** + * 平铺 + * + * @param result + * @param item + * @param nowDetail + * @param lastDetail + * @param sameDetail + */ + private static void calculate4Tile(Map result, SalaryStatisticsItemPO item, List> nowDetail, List> lastDetail, List> sameDetail) { + SalaryStatisticsItemRuleDTO tileRule = JSON.parseObject(item.getOldRule(), SalaryStatisticsItemRuleDTO.class); + if (tileRule == null || tileRule.getTotalValue() != 1) { + return; + } + String value = ""; + // 本期 + if (tileRule.getTotalValue() == 1) { + List decimalList = Lists.newArrayList(); + if (StringUtils.isNotEmpty(item.getItemValue())) { + String[] itemValues = item.getItemValue().split(COMMA); + for (String itemId : itemValues) { + for (Map x : nowDetail) { + if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) { + decimalList.add(x.get(itemId)); + } + } + } + } + // 本期最近值 + value = tile(decimalList); + nowAndRatio(result, item, tileRule, SalaryStatisticsItemStringRuleEnum.TILE.getValue(), value); } } @@ -549,10 +658,6 @@ public class SalaryStatisticsReportBO { String keyPrefix = item.getId().toString() + UD + ruleKey; // 本期合计 result.put(keyPrefix + K_NOW, sumDecimal); -// // 占比:和本期合计一样的值,便于计算 -// if (rule.getRatioValue() == 1) { -// result.put(keyPrefix + K_RATIO, result.get(keyPrefix + K_NOW)); -// } } /** @@ -655,6 +760,7 @@ public class SalaryStatisticsReportBO { /** * 最新的值 + * * @param list * @return */ @@ -665,6 +771,51 @@ public class SalaryStatisticsReportBO { return list.get(0); } + /** + * 最旧的值 + * + * @param list + * @return + */ + public static String old(List list) { + if (CollectionUtils.isEmpty(list)) { + return ""; + } + return list.get(list.size() - 1); + } + + /** + * 最频繁 + * + * @param list + * @return + */ + public static String frequent(List list) { + if (CollectionUtils.isEmpty(list)) { + return ""; + } + return list.stream() + .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) + .entrySet() + .stream() + .max(Map.Entry.comparingByValue()) + .map(Map.Entry::getKey) + .orElse(""); + } + /** + * 平铺 + * + * @param list + * @return + */ + public static String tile(List list) { + if (CollectionUtils.isEmpty(list)) { + return ""; + } + return Joiner.on(",").join((Iterable) list); + } + + public static List> po2map(List list, Map> salaryAcctResultValueMap) { if (CollectionUtils.isEmpty(list)) { return new ArrayList<>(); @@ -1021,6 +1172,26 @@ public class SalaryStatisticsReportBO { children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174376, "中位数同比差值"), k + UD + MEDIAN + P_Y2Y_D_VALUE)); children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174377, "中位数同比增幅"), k + UD + MEDIAN + P_Y2Y_INCREASE)); } + // 7.最新值children + SalaryStatisticsItemRuleDTO lastRule = JSON.parseObject(itemPO.getLastRule(), SalaryStatisticsItemRuleDTO.class); + if (lastRule != null && 1 == lastRule.getTotalValue()) { + children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "最新值"), k + UD + SalaryStatisticsItemStringRuleEnum.LAST.getValue() + P_NOW)); + } + // 8.最旧值children + SalaryStatisticsItemRuleDTO oldRule = JSON.parseObject(itemPO.getOldRule(), SalaryStatisticsItemRuleDTO.class); + if (oldRule != null && 1 == oldRule.getTotalValue()) { + children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "最旧值"), k + UD + SalaryStatisticsItemStringRuleEnum.OLD.getValue() + P_NOW)); + } + // 9.最频繁children + SalaryStatisticsItemRuleDTO frequentRule = JSON.parseObject(itemPO.getFrequentRule(), SalaryStatisticsItemRuleDTO.class); + if (frequentRule != null && 1 == frequentRule.getTotalValue()) { + children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "频繁出现"), k + UD + SalaryStatisticsItemStringRuleEnum.FREQUENT.getValue() + P_NOW)); + } + // 10.平铺children + SalaryStatisticsItemRuleDTO tileRule = JSON.parseObject(itemPO.getTileRule(), SalaryStatisticsItemRuleDTO.class); + if (tileRule != null && 1 == tileRule.getTotalValue()) { + children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "平铺"), k + UD + SalaryStatisticsItemStringRuleEnum.TILE.getValue() + P_NOW)); + } weaTableColumn.setChildren(children); result.add(weaTableColumn); }); diff --git a/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemRuleDTO.java b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemRuleDTO.java index c64881c59..02cce6b8b 100644 --- a/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemRuleDTO.java +++ b/src/com/engine/salary/report/entity/dto/SalaryStatisticsItemRuleDTO.java @@ -14,30 +14,29 @@ import java.math.BigDecimal; @Builder @NoArgsConstructor @AllArgsConstructor -//"薪酬统计报表自定义统计项目规则") public class SalaryStatisticsItemRuleDTO { - //是否有合计列") + //是否有合计列。若是文本,代表是否显示 private Integer totalValue; - //是否有占比列") + //是否有占比列 private Integer ratioValue; - //是否有环比列") + //是否有环比列 private Integer m2mValue; - //合计环比上限") + //合计环比上限 private BigDecimal m2mUpperLimit; - //合计环比下限") + //合计环比下限 private BigDecimal m2mLowerLimit; - //是否有同比列") + //是否有同比列 private Integer y2yValue; - //合计同比上限") + //合计同比上限 private BigDecimal y2yUpperLimit; - //合计同比下限") + //合计同比下限 private BigDecimal y2yLowerLimit; } diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java index cc856e07f..933843736 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsItemSaveParam.java @@ -50,9 +50,20 @@ public class SalaryStatisticsItemSaveParam { //中位数规则 private SalaryStatisticsItemRuleDTO medianRule; - + + //最近值 private SalaryStatisticsItemRuleDTO lastRule; + //最旧值 + private SalaryStatisticsItemRuleDTO oldRule; + + //频繁出现 + private SalaryStatisticsItemRuleDTO frequentRule; + + //平铺 + private SalaryStatisticsItemRuleDTO tileRule; + + //统计单位 private Integer unitType; } diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index b7ac48bb1..bcf430d57 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -130,7 +130,7 @@ public class SalaryStatisticsItemPO implements Serializable { /** * 最近值 *

- * "able":"1", 是否使用 + * "totalValue":"1", 是否使用 */ private String lastRule; @@ -138,7 +138,7 @@ public class SalaryStatisticsItemPO implements Serializable { * 最早值 *

* { - * "able":"1", 是否使用 + * "totalValue":"1", 是否使用 * } */ private String oldRule; @@ -147,7 +147,7 @@ public class SalaryStatisticsItemPO implements Serializable { * 出现最多 *

* { - * "able":"1", 是否使用 + * "totalValue":"1", 是否使用 * } */ private String frequentRule; @@ -156,7 +156,7 @@ public class SalaryStatisticsItemPO implements Serializable { * 平铺 *

* { - * "able":"1", 是否使用 + * "totalValue":"1", 是否使用 * } */ private String tileRule; diff --git a/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java index 1356b639f..3ca0bdcff 100644 --- a/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java +++ b/src/com/engine/salary/report/enums/SalaryStatisticsItemStringRuleEnum.java @@ -9,7 +9,7 @@ public enum SalaryStatisticsItemStringRuleEnum implements BaseEnum { LAST("last", "最近值", 83993), OLD("old", "最早值", 83994), - FREQUENT("frequent", "出现最多", 83994), + FREQUENT("frequent", "最频繁", 83994), TILE("tile", "平铺", 83994), ; diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java index 8c56dc7ef..6468f3f4b 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java @@ -116,6 +116,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt .maxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule())) .minRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule())) .medianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) + .lastRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) + .oldRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) + .frequentRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) + .tileRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())) .indexValue(max + 1) .statReportId(saveParam.getStatReportId()) .unitType(saveParam.getUnitType() == null ? UnitTypeEnum.YUAN.getValue() : saveParam.getUnitType()) @@ -149,6 +153,10 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt itemPO.setMaxRule(SalaryEntityUtil.toJSONString(saveParam.getMaxRule())); itemPO.setMinRule(SalaryEntityUtil.toJSONString(saveParam.getMinRule())); itemPO.setMedianRule(SalaryEntityUtil.toJSONString(saveParam.getMedianRule())); + itemPO.setLastRule(SalaryEntityUtil.toJSONString(saveParam.getLastRule())); + itemPO.setOldRule(SalaryEntityUtil.toJSONString(saveParam.getOldRule())); + itemPO.setFrequentRule(SalaryEntityUtil.toJSONString(saveParam.getFrequentRule())); + itemPO.setTileRule(SalaryEntityUtil.toJSONString(saveParam.getTileRule())); } getSalaryStatisticsItemMapper().updateIgnoreNull(itemPO); From b9d119bcf04f0c16da6ce39ea444ce8f3745a2a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 10:00:51 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E8=A7=A3=E5=AF=86=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/encrypt/AESEncryptUtil.java | 3 +- .../impl/SalarySysConfServiceImpl.java | 115 ++++++++++-------- 2 files changed, 62 insertions(+), 56 deletions(-) diff --git a/src/com/engine/salary/encrypt/AESEncryptUtil.java b/src/com/engine/salary/encrypt/AESEncryptUtil.java index 76a12259a..ec1cc2aed 100644 --- a/src/com/engine/salary/encrypt/AESEncryptUtil.java +++ b/src/com/engine/salary/encrypt/AESEncryptUtil.java @@ -61,8 +61,7 @@ public class AESEncryptUtil { * @param encryptStr 加密字符串 * @return 解密字符串 */ - public static String closeEncryptSetting(String encryptStr) { - SalarySysConfPO sysConfPo = salarySysConfService.getOneByCode(SalarySysConstant.OPEN_APPLICATION_ENCRYPT); + public static String closeEncryptSetting(String encryptStr,SalarySysConfPO sysConfPo) { if (encryptStr == null) { return null; } else { diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 998790f7f..0a4b9f4b4 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -2,6 +2,7 @@ package com.engine.salary.sys.service.impl; 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.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; @@ -56,6 +57,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; import weaver.conn.mybatis.MyBatisFactory; import weaver.general.BaseBean; +import weaver.hrm.User; import java.util.*; import java.util.concurrent.ExecutorService; @@ -141,6 +143,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe return MapperProxyFactory.getProxy(SpecialAddDeductionMapper.class); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + /** * 操作是否需要申报功能 @@ -590,6 +596,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe Util_DataCache.setObjVal(ENCRYPT_IN_PROGRESS + progressId, "in_progress"); //多线程批量更新需要加密的表 try { + SalarySysConfPO sysConfPo = getSalarySysConfService(user).getOneByCode(SalarySysConstant.OPEN_APPLICATION_ENCRYPT); Future submit = fixedThreadPool.submit(() -> { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { @@ -597,8 +604,8 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(salaryAcctResultPos)) { salaryAcctResultPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setResultValue(AESEncryptUtil.closeEncryptSetting(po.getResultValue())); - po.setOriginResultValue(AESEncryptUtil.closeEncryptSetting(po.getOriginResultValue())); + po.setResultValue(AESEncryptUtil.closeEncryptSetting(po.getResultValue(), sysConfPo)); + po.setOriginResultValue(AESEncryptUtil.closeEncryptSetting(po.getOriginResultValue(), sysConfPo)); } else { po.setResultValue(AESEncryptUtil.encrypt(po.getResultValue())); po.setOriginResultValue(AESEncryptUtil.encrypt(po.getOriginResultValue())); @@ -626,7 +633,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(excelAcctResultPos)) { excelAcctResultPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setResultValue(AESEncryptUtil.closeEncryptSetting(po.getResultValue())); + po.setResultValue(AESEncryptUtil.closeEncryptSetting(po.getResultValue(), sysConfPo)); } else { po.setResultValue(AESEncryptUtil.encrypt(po.getResultValue())); } @@ -653,7 +660,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(taxDeclarationDetailPos)) { taxDeclarationDetailPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setFieldValue(AESEncryptUtil.closeEncryptSetting(po.getFieldValue())); + po.setFieldValue(AESEncryptUtil.closeEncryptSetting(po.getFieldValue(), sysConfPo)); } else { po.setFieldValue(AESEncryptUtil.encrypt(po.getFieldValue())); } @@ -680,9 +687,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPos)) { insuranceSchemeDetailPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setUpperLimit(AESEncryptUtil.closeEncryptSetting(po.getUpperLimit())); - po.setFixedCost(AESEncryptUtil.closeEncryptSetting(po.getFixedCost())); - po.setLowerLimit(AESEncryptUtil.closeEncryptSetting(po.getLowerLimit())); + po.setUpperLimit(AESEncryptUtil.closeEncryptSetting(po.getUpperLimit(), sysConfPo)); + po.setFixedCost(AESEncryptUtil.closeEncryptSetting(po.getFixedCost(), sysConfPo)); + po.setLowerLimit(AESEncryptUtil.closeEncryptSetting(po.getLowerLimit(), sysConfPo)); } else { po.setUpperLimit(AESEncryptUtil.encrypt(po.getUpperLimit())); po.setFixedCost(AESEncryptUtil.encrypt(po.getFixedCost())); @@ -711,7 +718,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceArchivesSocialSchemePos)) { insuranceArchivesSocialSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString())); + po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo)); } else { po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString())); } @@ -738,7 +745,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceArchivesFundSchemePos)) { insuranceArchivesFundSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString())); + po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo)); } else { po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString())); } @@ -765,7 +772,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceArchivesOtherSchemePos)) { insuranceArchivesOtherSchemePos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString())); + po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo)); } else { po.setOtherPaymentBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentBaseString())); } @@ -792,9 +799,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceAccountBatchPos)) { insuranceAccountBatchPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setOtherPay(AESEncryptUtil.closeEncryptSetting(po.getOtherPay())); - po.setSocialPay(AESEncryptUtil.closeEncryptSetting(po.getSocialPay())); - po.setFundPay(AESEncryptUtil.closeEncryptSetting(po.getFundPay())); + po.setOtherPay(AESEncryptUtil.closeEncryptSetting(po.getOtherPay(), sysConfPo)); + po.setSocialPay(AESEncryptUtil.closeEncryptSetting(po.getSocialPay(), sysConfPo)); + po.setFundPay(AESEncryptUtil.closeEncryptSetting(po.getFundPay(), sysConfPo)); } else { po.setOtherPay(AESEncryptUtil.encrypt(po.getOtherPay())); po.setSocialPay(AESEncryptUtil.encrypt(po.getSocialPay())); @@ -823,23 +830,23 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(insuranceAccountDetailPos)) { insuranceAccountDetailPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString())); - po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString())); - po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString())); - po.setSocialPerJson(AESEncryptUtil.closeEncryptSetting(po.getSocialPerJson())); - po.setSocialPerSum(AESEncryptUtil.closeEncryptSetting(po.getSocialPerSum())); - po.setFundPerJson(AESEncryptUtil.closeEncryptSetting(po.getFundPerJson())); - po.setFundPerSum(AESEncryptUtil.closeEncryptSetting(po.getFundPerSum())); - po.setOtherPerJson(AESEncryptUtil.closeEncryptSetting(po.getOtherPerJson())); - po.setOtherPerSum(AESEncryptUtil.closeEncryptSetting(po.getOtherPerSum())); - po.setPerSum(AESEncryptUtil.closeEncryptSetting(po.getPerSum())); - po.setSocialComJson(AESEncryptUtil.closeEncryptSetting(po.getSocialComJson())); - po.setSocialComSum(AESEncryptUtil.closeEncryptSetting(po.getSocialComSum())); - po.setComSum(AESEncryptUtil.closeEncryptSetting(po.getComSum())); - po.setSocialSum(AESEncryptUtil.closeEncryptSetting(po.getSocialSum())); - po.setFundSum(AESEncryptUtil.closeEncryptSetting(po.getFundSum())); - po.setOtherSum(AESEncryptUtil.closeEncryptSetting(po.getOtherSum())); - po.setTotal(AESEncryptUtil.closeEncryptSetting(po.getTotal())); + po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo)); + po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo)); + po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo)); + po.setSocialPerJson(AESEncryptUtil.closeEncryptSetting(po.getSocialPerJson(), sysConfPo)); + po.setSocialPerSum(AESEncryptUtil.closeEncryptSetting(po.getSocialPerSum(), sysConfPo)); + po.setFundPerJson(AESEncryptUtil.closeEncryptSetting(po.getFundPerJson(), sysConfPo)); + po.setFundPerSum(AESEncryptUtil.closeEncryptSetting(po.getFundPerSum(), sysConfPo)); + po.setOtherPerJson(AESEncryptUtil.closeEncryptSetting(po.getOtherPerJson(), sysConfPo)); + po.setOtherPerSum(AESEncryptUtil.closeEncryptSetting(po.getOtherPerSum(), sysConfPo)); + po.setPerSum(AESEncryptUtil.closeEncryptSetting(po.getPerSum(), sysConfPo)); + po.setSocialComJson(AESEncryptUtil.closeEncryptSetting(po.getSocialComJson(), sysConfPo)); + po.setSocialComSum(AESEncryptUtil.closeEncryptSetting(po.getSocialComSum(), sysConfPo)); + po.setComSum(AESEncryptUtil.closeEncryptSetting(po.getComSum(), sysConfPo)); + po.setSocialSum(AESEncryptUtil.closeEncryptSetting(po.getSocialSum(), sysConfPo)); + po.setFundSum(AESEncryptUtil.closeEncryptSetting(po.getFundSum(), sysConfPo)); + po.setOtherSum(AESEncryptUtil.closeEncryptSetting(po.getOtherSum(), sysConfPo)); + po.setTotal(AESEncryptUtil.closeEncryptSetting(po.getTotal(), sysConfPo)); } else { po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString())); po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString())); @@ -882,7 +889,7 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(salaryArchiveItemPos)) { salaryArchiveItemPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setItemValue(AESEncryptUtil.closeEncryptSetting(po.getItemValue())); + po.setItemValue(AESEncryptUtil.closeEncryptSetting(po.getItemValue(), sysConfPo)); } else { po.setItemValue(AESEncryptUtil.encrypt(po.getItemValue())); } @@ -936,11 +943,11 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(otherDeductionPos)) { otherDeductionPos.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setBusinessHealthyInsurance(AESEncryptUtil.closeEncryptSetting(po.getBusinessHealthyInsurance())); - po.setTaxDelayEndowmentInsurance(AESEncryptUtil.closeEncryptSetting(po.getTaxDelayEndowmentInsurance())); - po.setOtherDeduction(AESEncryptUtil.closeEncryptSetting(po.getOtherDeduction())); - po.setDeductionAllowedDonation(AESEncryptUtil.closeEncryptSetting(po.getDeductionAllowedDonation())); - po.setPrivatePension(AESEncryptUtil.closeEncryptSetting(po.getPrivatePension())); + po.setBusinessHealthyInsurance(AESEncryptUtil.closeEncryptSetting(po.getBusinessHealthyInsurance(), sysConfPo)); + po.setTaxDelayEndowmentInsurance(AESEncryptUtil.closeEncryptSetting(po.getTaxDelayEndowmentInsurance(), sysConfPo)); + po.setOtherDeduction(AESEncryptUtil.closeEncryptSetting(po.getOtherDeduction(), sysConfPo)); + po.setDeductionAllowedDonation(AESEncryptUtil.closeEncryptSetting(po.getDeductionAllowedDonation(), sysConfPo)); + po.setPrivatePension(AESEncryptUtil.closeEncryptSetting(po.getPrivatePension(), sysConfPo)); } else { po.setBusinessHealthyInsurance(AESEncryptUtil.encrypt(po.getBusinessHealthyInsurance())); po.setTaxDelayEndowmentInsurance(AESEncryptUtil.encrypt(po.getTaxDelayEndowmentInsurance())); @@ -971,24 +978,24 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe if (CollectionUtils.isNotEmpty(addUpSituations)) { addUpSituations.forEach(po -> { if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { - po.setAddUpIncome(AESEncryptUtil.closeEncryptSetting(po.getAddUpIncome())); - po.setAddUpSubtraction(AESEncryptUtil.closeEncryptSetting(po.getAddUpSubtraction())); - po.setAddUpSocialSecurityTotal(AESEncryptUtil.closeEncryptSetting(po.getAddUpSocialSecurityTotal())); - po.setAddUpAccumulationFundTotal(AESEncryptUtil.closeEncryptSetting(po.getAddUpAccumulationFundTotal())); - po.setAddUpChildEducation(AESEncryptUtil.closeEncryptSetting(po.getAddUpChildEducation())); - po.setAddUpContinuingEducation(AESEncryptUtil.closeEncryptSetting(po.getAddUpContinuingEducation())); - po.setAddUpHousingLoanInterest(AESEncryptUtil.closeEncryptSetting(po.getAddUpHousingLoanInterest())); - po.setAddUpHousingRent(AESEncryptUtil.closeEncryptSetting(po.getAddUpHousingRent())); - po.setAddUpSupportElderly(AESEncryptUtil.closeEncryptSetting(po.getAddUpSupportElderly())); - po.setAddUpEnterpriseAndOther(AESEncryptUtil.closeEncryptSetting(po.getAddUpEnterpriseAndOther())); - po.setAddUpOtherDeduction(AESEncryptUtil.closeEncryptSetting(po.getAddUpOtherDeduction())); - po.setAddUpTaxExemptIncome(AESEncryptUtil.closeEncryptSetting(po.getAddUpTaxExemptIncome())); - po.setAddUpAllowedDonation(AESEncryptUtil.closeEncryptSetting(po.getAddUpAllowedDonation())); - po.setAddUpAdvanceTax(AESEncryptUtil.closeEncryptSetting(po.getAddUpAdvanceTax())); - po.setAddUpIllnessMedical(AESEncryptUtil.closeEncryptSetting(po.getAddUpIllnessMedical())); - po.setAddUpTaxSavings(AESEncryptUtil.closeEncryptSetting(po.getAddUpTaxSavings())); - po.setAddUpInfantCare(AESEncryptUtil.closeEncryptSetting(po.getAddUpInfantCare())); - po.setAddUpPrivatePension(AESEncryptUtil.closeEncryptSetting(po.getAddUpPrivatePension())); + po.setAddUpIncome(AESEncryptUtil.closeEncryptSetting(po.getAddUpIncome(), sysConfPo)); + po.setAddUpSubtraction(AESEncryptUtil.closeEncryptSetting(po.getAddUpSubtraction(), sysConfPo)); + po.setAddUpSocialSecurityTotal(AESEncryptUtil.closeEncryptSetting(po.getAddUpSocialSecurityTotal(), sysConfPo)); + po.setAddUpAccumulationFundTotal(AESEncryptUtil.closeEncryptSetting(po.getAddUpAccumulationFundTotal(), sysConfPo)); + po.setAddUpChildEducation(AESEncryptUtil.closeEncryptSetting(po.getAddUpChildEducation(), sysConfPo)); + po.setAddUpContinuingEducation(AESEncryptUtil.closeEncryptSetting(po.getAddUpContinuingEducation(), sysConfPo)); + po.setAddUpHousingLoanInterest(AESEncryptUtil.closeEncryptSetting(po.getAddUpHousingLoanInterest(), sysConfPo)); + po.setAddUpHousingRent(AESEncryptUtil.closeEncryptSetting(po.getAddUpHousingRent(), sysConfPo)); + po.setAddUpSupportElderly(AESEncryptUtil.closeEncryptSetting(po.getAddUpSupportElderly(), sysConfPo)); + po.setAddUpEnterpriseAndOther(AESEncryptUtil.closeEncryptSetting(po.getAddUpEnterpriseAndOther(), sysConfPo)); + po.setAddUpOtherDeduction(AESEncryptUtil.closeEncryptSetting(po.getAddUpOtherDeduction(), sysConfPo)); + po.setAddUpTaxExemptIncome(AESEncryptUtil.closeEncryptSetting(po.getAddUpTaxExemptIncome(), sysConfPo)); + po.setAddUpAllowedDonation(AESEncryptUtil.closeEncryptSetting(po.getAddUpAllowedDonation(), sysConfPo)); + po.setAddUpAdvanceTax(AESEncryptUtil.closeEncryptSetting(po.getAddUpAdvanceTax(), sysConfPo)); + po.setAddUpIllnessMedical(AESEncryptUtil.closeEncryptSetting(po.getAddUpIllnessMedical(), sysConfPo)); + po.setAddUpTaxSavings(AESEncryptUtil.closeEncryptSetting(po.getAddUpTaxSavings(), sysConfPo)); + po.setAddUpInfantCare(AESEncryptUtil.closeEncryptSetting(po.getAddUpInfantCare(), sysConfPo)); + po.setAddUpPrivatePension(AESEncryptUtil.closeEncryptSetting(po.getAddUpPrivatePension(), sysConfPo)); } else { po.setAddUpIncome(AESEncryptUtil.encrypt(po.getAddUpIncome())); po.setAddUpSubtraction(AESEncryptUtil.encrypt(po.getAddUpSubtraction())); From 68bc79ab0bd38068079c2a5839702f15eeebb783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 11:00:00 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/hrm/dto/EmployeeInfoExpandDTO.java | 2 +- .../entity/hrm/po/ExpandFieldSettingsPO.java | 2 +- .../mapper/hrm/ExpandFieldSettingsMapper.xml | 22 +++++++++---------- .../impl/SalaryEmployeeServiceImpl.java | 8 +++---- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java index 4c3551731..3bccd4a71 100644 --- a/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java +++ b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java @@ -33,7 +33,7 @@ public class EmployeeInfoExpandDTO { /** * 主键 */ - private String primaryKey; + private String pk; /** * sql diff --git a/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java b/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java index 6af7c6a79..8908ab69f 100644 --- a/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java +++ b/src/com/engine/salary/entity/hrm/po/ExpandFieldSettingsPO.java @@ -31,7 +31,7 @@ public class ExpandFieldSettingsPO { /** * 主键 */ - private String primaryKey; + private String pk; /** * sql diff --git a/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml index b5eb824ad..47a24568e 100644 --- a/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml +++ b/src/com/engine/salary/mapper/hrm/ExpandFieldSettingsMapper.xml @@ -5,7 +5,7 @@ - + @@ -22,7 +22,7 @@ id , t.module , t.module_info - , t.primaryKey + , t.pk , t.expand_sql , t.field_setting , t.create_time @@ -61,8 +61,8 @@ AND module_info = #{moduleInfo} - - AND primaryKey = #{primaryKey} + + AND pk = #{pk} AND expand_sql = #{expandSql} @@ -108,8 +108,8 @@ module_info, - - primaryKey, + + pk, expand_sql, @@ -143,8 +143,8 @@ #{moduleInfo}, - - #{primaryKey}, + + #{pk}, #{expandSql}, @@ -178,7 +178,7 @@ module=#{module}, module_info=#{moduleInfo}, - primaryKey=#{primaryKey}, + pk=#{pk}, expand_sql=#{expandSql}, field_setting=#{fieldSetting}, create_time=#{createTime}, @@ -201,8 +201,8 @@ module_info=#{moduleInfo}, - - primaryKey=#{primaryKey}, + + pk=#{pk}, expand_sql=#{expandSql}, diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index d08da10a1..20b0d0a77 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -301,7 +301,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee RecordSet rs = new RecordSet(); String sql = param.getExpandSql().replace("=$人员id$", "in (" + StringUtils.join(ids, ",") + ")") .replace("in($人员id$)", "in (" + StringUtils.join(ids, ",") + ")"); - String primaryKey = param.getPrimaryKey(); + String primaryKey = param.getPk(); rs.executeQuery(sql); while (rs.next()) { Map extendData = new HashMap<>(); @@ -333,7 +333,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee throw new RuntimeException("配置不存在!"); } - po.setPrimaryKey(param.getPrimaryKey()); + po.setPk(param.getPk()); po.setExpandSql(param.getExpandSql()); po.setFieldSetting(settings); po.setCreator((long) user.getUID()); @@ -345,7 +345,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee .id(IdGenerator.generate()) .module(param.getModule()) .moduleInfo(param.getModuleInfo()) - .primaryKey(param.getPrimaryKey()) + .pk(param.getPk()) .fieldSetting(settings) .expandSql(param.getExpandSql()) .deleteType(0) @@ -371,7 +371,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee .id(po.getId()) .module(po.getModule()) .moduleInfo(po.getModuleInfo()) - .primaryKey(po.getPrimaryKey()) + .pk(po.getPk()) .expandSql(po.getExpandSql()) .fieldSettings(list) .build(); From 27255932deac420250ffd0f99bfd76a32d5c9c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 15:12:10 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202311070403.sql | 27 +++++++++++++++++++ resource/sqlupgrade/GS/sql202311070403.sql | 27 +++++++++++++++++++ resource/sqlupgrade/JC/sql202311070403.sql | 27 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202311070403.sql | 21 +++++++++++++++ .../sqlupgrade/Oracle/sql202311070403.sql | 23 ++++++++++++++++ resource/sqlupgrade/PG/sql202311070403.sql | 20 ++++++++++++++ .../sqlupgrade/SQLServer/sql202311070403.sql | 27 +++++++++++++++++++ resource/sqlupgrade/ST/sql202311070403.sql | 27 +++++++++++++++++++ 8 files changed, 199 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202311070403.sql create mode 100644 resource/sqlupgrade/GS/sql202311070403.sql create mode 100644 resource/sqlupgrade/JC/sql202311070403.sql create mode 100644 resource/sqlupgrade/Mysql/sql202311070403.sql create mode 100644 resource/sqlupgrade/Oracle/sql202311070403.sql create mode 100644 resource/sqlupgrade/PG/sql202311070403.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202311070403.sql create mode 100644 resource/sqlupgrade/ST/sql202311070403.sql diff --git a/resource/sqlupgrade/DM/sql202311070403.sql b/resource/sqlupgrade/DM/sql202311070403.sql new file mode 100644 index 000000000..9de83415e --- /dev/null +++ b/resource/sqlupgrade/DM/sql202311070403.sql @@ -0,0 +1,27 @@ +CREATE TABLE hrsa_expand_field_settings ( + id NUMBER(38,0) primary key NOT NULL, + module varchar2(100) NOT NULL , + module_info varchar2(1000) , + pk varchar2(100) NOT NULL, + expand_sql varchar2(4000) NOT NULL , + field_setting varchar2(4000) NOT NULL, + create_time date DEFAULT sysdate, + update_time date DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL , + delete_type number NOT NULL , + tenant_key varchar2(10) NOT NULL +); +/ + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD old_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202311070403.sql b/resource/sqlupgrade/GS/sql202311070403.sql new file mode 100644 index 000000000..9de83415e --- /dev/null +++ b/resource/sqlupgrade/GS/sql202311070403.sql @@ -0,0 +1,27 @@ +CREATE TABLE hrsa_expand_field_settings ( + id NUMBER(38,0) primary key NOT NULL, + module varchar2(100) NOT NULL , + module_info varchar2(1000) , + pk varchar2(100) NOT NULL, + expand_sql varchar2(4000) NOT NULL , + field_setting varchar2(4000) NOT NULL, + create_time date DEFAULT sysdate, + update_time date DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL , + delete_type number NOT NULL , + tenant_key varchar2(10) NOT NULL +); +/ + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD old_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202311070403.sql b/resource/sqlupgrade/JC/sql202311070403.sql new file mode 100644 index 000000000..9de83415e --- /dev/null +++ b/resource/sqlupgrade/JC/sql202311070403.sql @@ -0,0 +1,27 @@ +CREATE TABLE hrsa_expand_field_settings ( + id NUMBER(38,0) primary key NOT NULL, + module varchar2(100) NOT NULL , + module_info varchar2(1000) , + pk varchar2(100) NOT NULL, + expand_sql varchar2(4000) NOT NULL , + field_setting varchar2(4000) NOT NULL, + create_time date DEFAULT sysdate, + update_time date DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL , + delete_type number NOT NULL , + tenant_key varchar2(10) NOT NULL +); +/ + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD old_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule VARCHAR2(500) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202311070403.sql b/resource/sqlupgrade/Mysql/sql202311070403.sql new file mode 100644 index 000000000..73e04bef8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202311070403.sql @@ -0,0 +1,21 @@ +CREATE TABLE hrsa_expand_field_settings ( + id bigint(0) NOT NULL, + module varchar(100) NOT NULL , + module_info varchar(1000) , + pk varchar(100) NOT NULL, + expand_sql varchar(4000) NOT NULL , + field_setting varchar(4000) NOT NULL, + create_time datetime(0) NOT NULL , + update_time datetime(0) NOT NULL , + creator bigint(0) NOT NULL , + delete_type int(0) NOT NULL , + tenant_key varchar(10) NOT NULL , + PRIMARY KEY (id) USING BTREE +) ; + + +ALTER TABLE hrsa_salary_statistics_item +ADD COLUMN last_rule varchar(500) , +ADD COLUMN old_rule varchar(500) , +ADD COLUMN frequent_rule varchar(500) , +ADD COLUMN tile_rule varchar(500) ; diff --git a/resource/sqlupgrade/Oracle/sql202311070403.sql b/resource/sqlupgrade/Oracle/sql202311070403.sql new file mode 100644 index 000000000..6f101c9eb --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202311070403.sql @@ -0,0 +1,23 @@ +CREATE TABLE hrsa_expand_field_settings ( + id NUMBER(38,0) primary key NOT NULL, + module varchar2(100) NOT NULL , + module_info varchar2(1000) , + pk varchar2(100) NOT NULL, + expand_sql varchar2(4000) NOT NULL , + field_setting varchar2(4000) NOT NULL, + create_time date DEFAULT sysdate, + update_time date DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL , + delete_type number NOT NULL , + tenant_key varchar2(10) NOT NULL +) +/ + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule VARCHAR2(500) NULL +/ +ALTER TABLE hrsa_salary_statistics_item ADD old_rule VARCHAR2(500) NULL +/ +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule VARCHAR2(500) NULL +/ +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule VARCHAR2(500) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202311070403.sql b/resource/sqlupgrade/PG/sql202311070403.sql new file mode 100644 index 000000000..2382b2f76 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202311070403.sql @@ -0,0 +1,20 @@ +create table hrsa_expand_field_settings +( + id bigserial not null , + module varchar(100) NOT NULL , + module_info varchar(1000) , + pk varchar(100) NOT NULL, + expand_sql varchar(4000) NOT NULL , + field_setting varchar(4000) NOT NULL, + create_time timestamp, + update_time timestamp, + creator bigint NOT NULL , + delete_type int NOT NULL , + tenant_key varchar(10) NOT NULL , + PRIMARY KEY ( id ) +); + +ALTER TABLE hrsa_salary_statistics_item ADD COLUMN last_rule varchar(500) NULL ; +ALTER TABLE hrsa_salary_statistics_item ADD COLUMN old_rule varchar(500) NULL ; +ALTER TABLE hrsa_salary_statistics_item ADD COLUMN frequent_rule varchar(500) NULL ; +ALTER TABLE hrsa_salary_statistics_item ADD COLUMN tile_rule varchar(500) NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202311070403.sql b/resource/sqlupgrade/SQLServer/sql202311070403.sql new file mode 100644 index 000000000..360da08cd --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202311070403.sql @@ -0,0 +1,27 @@ +CREATE TABLE hrsa_expand_field_settings ( + id bigint NOT NULL, + module varchar(100) NOT NULL , + module_info varchar(1000) NOT NULL , + pk varchar(100) NULL DEFAULT NULL , + expand_sql varchar(4000) NOT NULL , + field_setting varchar(4000) NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL , + creator bigint NOT NULL , + delete_type int NOT NULL , + tenant_key varchar(10) NOT NULL , + PRIMARY KEY (id) +) +GO + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule varchar(500) NULL +GO + +ALTER TABLE hrsa_salary_statistics_item ADD old_rule varchar(500) NULL +GO + +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule varchar(500) NULL +GO + +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule varchar(500) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202311070403.sql b/resource/sqlupgrade/ST/sql202311070403.sql new file mode 100644 index 000000000..9de83415e --- /dev/null +++ b/resource/sqlupgrade/ST/sql202311070403.sql @@ -0,0 +1,27 @@ +CREATE TABLE hrsa_expand_field_settings ( + id NUMBER(38,0) primary key NOT NULL, + module varchar2(100) NOT NULL , + module_info varchar2(1000) , + pk varchar2(100) NOT NULL, + expand_sql varchar2(4000) NOT NULL , + field_setting varchar2(4000) NOT NULL, + create_time date DEFAULT sysdate, + update_time date DEFAULT sysdate, + creator NUMBER(38,0) NOT NULL , + delete_type number NOT NULL , + tenant_key varchar2(10) NOT NULL +); +/ + +ALTER TABLE hrsa_salary_statistics_item ADD last_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD old_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD frequent_rule VARCHAR2(500) NULL; +/ + +ALTER TABLE hrsa_salary_statistics_item ADD tile_rule VARCHAR2(500) NULL; +/ + From 5f371a8e58eb5a0a1dff58e16d2d02264f52ba94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 15:55:03 +0800 Subject: [PATCH 19/23] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportService.java | 8 +++++- .../SalaryStatisticsReportServiceImpl.java | 28 +++++++++++++++++++ .../web/SalaryStatisticsReportController.java | 14 ++++++++++ .../SalaryStatisticsReportWrapper.java | 13 ++++++++- 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java index 4355552cb..069793ecf 100644 --- a/src/com/engine/salary/report/service/SalaryStatisticsReportService.java +++ b/src/com/engine/salary/report/service/SalaryStatisticsReportService.java @@ -70,6 +70,13 @@ public interface SalaryStatisticsReportService { */ Map delete(Collection ids ); + /** + * 复制 + * @param id + */ + void duplicate(Long id); + + /** * 保存统计范围 * @@ -106,5 +113,4 @@ public interface SalaryStatisticsReportService { */ void removeReportCache(); - } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index 553bc1227..14e342ca3 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -338,6 +338,34 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary return resultMap; } + @Override + public void duplicate(Long id) { + long uid = user.getUID(); + Date now = new Date(); + + SalaryStatisticsReportPO po = getById(id); + SalaryAssert.notNull(po, SalaryI18nUtil.getI18nLabel(152563, "报表不存在")); + + po.setId(IdGenerator.generate()); + po.setCreator(uid); + po.setCreateTime(now); + po.setUpdateTime(now); + po.setReportName(po.getReportName()+"_copy"); + + getSalaryStatisticsReportMapper().insertIgnoreNull(po); + + List itemPOS = getSalaryStatisticsItemService(user).listByStatisticsReportId(id); + List itemList = itemPOS.stream().map(item -> { + item.setId(IdGenerator.generate()); + item.setStatReportId(po.getId()); + item.setCreator(uid); + item.setCreateTime(now); + item.setUpdateTime(now); + return item; + }).collect(Collectors.toList()); + getSalaryStatisticsItemService(user).saveOrUpdateBatch(itemList); + } + @Override public PageInfo> buildReportRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataQueryParam param, List salaryStatisticsItemList) { Map checkMap = SalaryStatisticsReportBO.checkLoad(salaryStatisticsItemList); diff --git a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java index 010547fab..4ab48ee54 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java @@ -95,6 +95,20 @@ public class SalaryStatisticsReportController { return new ResponseResult, Map>(user).run(getSalaryStatisticsReportWrapper(user)::delete, ids); } + /** + * 复制薪酬统计报表 + * + * @param id + * @return + */ + @GET + @Path("/duplicate") + @Produces(MediaType.APPLICATION_JSON) + public String duplicate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryStatisticsReportWrapper(user)::duplicate, id); + } + /** * 获取薪酬统计报表查询条件 * diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 954df95fd..67ac15781 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -212,6 +212,16 @@ public class SalaryStatisticsReportWrapper extends Service { return getSalaryStatisticsReportService(user).delete(ids); } + /** + * 复制薪资账套 + * @param id + */ + public void duplicate(Long id) { + if (id == null) { + throw new SalaryRunTimeException("id为空"); + } + getSalaryStatisticsReportService(user).duplicate(id); + } /** * 获取统计条件 @@ -470,8 +480,9 @@ public class SalaryStatisticsReportWrapper extends Service { /** * 权限校验 + * * @param isShared 是否是被分享的报表 - * @param po 报表po + * @param po 报表po */ private void sharedReportCheck(boolean isShared, SalaryStatisticsReportPO po) { if (isShared) { From bcee3c5e5a3714a324d080996e03107b94aec7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 19:06:43 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/hrm/dto/EmployeeInfoExpandDTO.java | 5 ++ .../salary/entity/hrm/dto/FieldSetting.java | 2 + .../param/SalaryFormulaSaveParam.java | 3 + .../SalaryStatisticsDimensionWrapper.java | 5 +- .../impl/SalaryFormulaServiceImpl.java | 19 +----- src/com/engine/salary/util/XssSQL.java | 25 ------- src/com/engine/salary/util/valid/Modify.java | 15 ++++ .../salary/util/valid/ModifyTypeEnum.java | 13 ++++ .../engine/salary/util/valid/ValidUtil.java | 68 +++++++++++++++++++ .../salary/util/valid/ValueTypeEnum.java | 13 ++++ 10 files changed, 123 insertions(+), 45 deletions(-) delete mode 100644 src/com/engine/salary/util/XssSQL.java create mode 100644 src/com/engine/salary/util/valid/Modify.java create mode 100644 src/com/engine/salary/util/valid/ModifyTypeEnum.java create mode 100644 src/com/engine/salary/util/valid/ValueTypeEnum.java diff --git a/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java index 3bccd4a71..f24cbffc6 100644 --- a/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java +++ b/src/com/engine/salary/entity/hrm/dto/EmployeeInfoExpandDTO.java @@ -1,5 +1,8 @@ package com.engine.salary.entity.hrm.dto; +import com.engine.salary.util.valid.Modify; +import com.engine.salary.util.valid.ModifyTypeEnum; +import com.engine.salary.util.valid.ValueTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -38,11 +41,13 @@ public class EmployeeInfoExpandDTO { /** * sql */ + @Modify(modifyType = ModifyTypeEnum.RESTORE_SQL) private String expandSql; /** * 字段设置 */ + @Modify(valueType = ValueTypeEnum.ARRAY) private List fieldSettings; } diff --git a/src/com/engine/salary/entity/hrm/dto/FieldSetting.java b/src/com/engine/salary/entity/hrm/dto/FieldSetting.java index e63ce9ee7..1174b59ae 100644 --- a/src/com/engine/salary/entity/hrm/dto/FieldSetting.java +++ b/src/com/engine/salary/entity/hrm/dto/FieldSetting.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.hrm.dto; +import com.engine.salary.util.valid.Modify; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -14,6 +15,7 @@ public class FieldSetting { /** * 字段 */ + @Modify() private String field; /** diff --git a/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java index 41a7cdfeb..705e09268 100644 --- a/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java +++ b/src/com/engine/salary/entity/salaryformula/param/SalaryFormulaSaveParam.java @@ -2,6 +2,8 @@ package com.engine.salary.entity.salaryformula.param; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.Modify; +import com.engine.salary.util.valid.ModifyTypeEnum; import com.engine.salary.util.valid.RuntimeTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -61,6 +63,7 @@ public class SalaryFormulaSaveParam { * 公式内容 */ @DataCheck(require = true,message = "公式内容为空") + @Modify(modifyType = ModifyTypeEnum.RESTORE_SQL) private String formula; diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java index 7a59d343b..7e8c8a374 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWrapper.java @@ -23,9 +23,9 @@ import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryI18nUtil; -import com.engine.salary.util.XssSQL; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; @@ -196,7 +196,8 @@ public class SalaryStatisticsDimensionWrapper extends Service { * @return */ public void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam) { - saveParam.setExpandSql(XssSQL.handleXSSContent(saveParam.getExpandSql())); + ValidUtil.modify(saveParam); +// Optional.ofNullable(saveParam.getFieldSettings()).orElse(new ArrayList<>()).forEach(fieldSetting -> fieldSetting.setField(fieldSetting.getField().trim())); salaryStatisticsDimensionService(user).saveExpandFieldSettings(saveParam); } diff --git a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java index 3e34a2715..e15006e2b 100644 --- a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java @@ -119,24 +119,7 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe } //将select因XSS过滤造成的异常字符转换回来 - param.setFormula(param.getFormula().replaceAll("select", "select")); - param.setFormula(param.getFormula().replaceAll("SELECT", "SELECT")); - param.setFormula(param.getFormula().replaceAll("join", "join")); - param.setFormula(param.getFormula().replaceAll("JOIN", "JOIN")); - param.setFormula(param.getFormula().replaceAll("and", "and")); - param.setFormula(param.getFormula().replaceAll("AND", "AND")); - param.setFormula(param.getFormula().replaceAll("or", "or")); - param.setFormula(param.getFormula().replaceAll("OR", "OR")); - param.setFormula(param.getFormula().replaceAll("in", "in")); - param.setFormula(param.getFormula().replaceAll("IN", "IN")); - param.setFormula(param.getFormula().replaceAll("like", "like")); - param.setFormula(param.getFormula().replaceAll("LIKE", "like")); - param.setFormula(param.getFormula().replaceAll("exists", "exists")); - param.setFormula(param.getFormula().replaceAll("EXISTS", "EXISTS")); - param.setFormula(param.getFormula().replaceAll("between", "between")); - param.setFormula(param.getFormula().replaceAll("BETWEEN", "BETWEEN")); - param.setFormula(param.getFormula().replaceAll("union", "union")); - param.setFormula(param.getFormula().replaceAll("UNION", "UNION")); + ValidUtil.modify(param); // 解析公式中的参数 if (ReferenceTypeEnum.parseByValue(param.getReferenceType()) == ReferenceTypeEnum.FORMULA) { diff --git a/src/com/engine/salary/util/XssSQL.java b/src/com/engine/salary/util/XssSQL.java deleted file mode 100644 index c6f4fab59..000000000 --- a/src/com/engine/salary/util/XssSQL.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.engine.salary.util; - -public class XssSQL { - - public static String handleXSSContent(String xss) { - return xss.replace("select", "select") - .replace("SELECT", "SELECT") - .replace("join", "join") - .replace("JOIN", "JOIN") - .replace("and", "and") - .replace("AND", "AND") - .replace("or", "or") - .replace("OR", "OR") - .replace("in", "in") - .replace("IN", "IN") - .replace("like", "like") - .replace("LIKE", "like") - .replace("exists", "exists") - .replace("EXISTS", "EXISTS") - .replace("between", "between") - .replace("BETWEEN", "BETWEEN") - .replace("union", "union") - .replace("UNION", "UNION"); - } -} diff --git a/src/com/engine/salary/util/valid/Modify.java b/src/com/engine/salary/util/valid/Modify.java new file mode 100644 index 000000000..bf61ec974 --- /dev/null +++ b/src/com/engine/salary/util/valid/Modify.java @@ -0,0 +1,15 @@ +package com.engine.salary.util.valid; + +import java.lang.annotation.*; + +/** + * 数据参数合法性注解 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Modify { + ModifyTypeEnum[] modifyType() default ModifyTypeEnum.TRIM; + + ValueTypeEnum valueType() default ValueTypeEnum.STRING; +} \ No newline at end of file diff --git a/src/com/engine/salary/util/valid/ModifyTypeEnum.java b/src/com/engine/salary/util/valid/ModifyTypeEnum.java new file mode 100644 index 000000000..e40ea143d --- /dev/null +++ b/src/com/engine/salary/util/valid/ModifyTypeEnum.java @@ -0,0 +1,13 @@ +package com.engine.salary.util.valid; + +/** + * 修改参数值 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum ModifyTypeEnum { + TRIM, RESTORE_SQL +} diff --git a/src/com/engine/salary/util/valid/ValidUtil.java b/src/com/engine/salary/util/valid/ValidUtil.java index 6b1964c45..8c0d0932d 100644 --- a/src/com/engine/salary/util/valid/ValidUtil.java +++ b/src/com/engine/salary/util/valid/ValidUtil.java @@ -139,6 +139,21 @@ public class ValidUtil { return value; } + private static void setValue(T t, String fieldName, Object value) { + try { + BeanInfo beanInfo = Introspector.getBeanInfo(t.getClass()); + PropertyDescriptor[] props = beanInfo.getPropertyDescriptors(); + for (PropertyDescriptor property : props) { + if (fieldName.equals(property.getName())) { + Method method = property.getWriteMethod(); + method.invoke(t, value); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + private static boolean notNull(Object value) { if (null == value) { return false; @@ -184,4 +199,57 @@ public class ValidUtil { return convertSuccess; } + public static void modify(T t) { + Class clazz = t.getClass(); + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + Modify rule = field.getDeclaredAnnotation(Modify.class); + + if (null == rule) { + continue; + } + + ModifyTypeEnum[] modifyTypeEnums = rule.modifyType(); + ValueTypeEnum valueTypeEnum = rule.valueType(); + for (int i = 0; i < modifyTypeEnums.length; i++) { + Object value = getValue(t, field.getName()); + if (valueTypeEnum == ValueTypeEnum.STRING) { + String result = value.toString(); + + if (modifyTypeEnums[i] == ModifyTypeEnum.TRIM) { + result = result.trim(); + } + + if (modifyTypeEnums[i] == ModifyTypeEnum.RESTORE_SQL) { + result = result.replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "like") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION"); + } + setValue(t, field.getName(), result); + } else if (valueTypeEnum == ValueTypeEnum.OBJECT) { + modify(value); + } else if (valueTypeEnum == ValueTypeEnum.ARRAY) { + Collection list = (Collection) value; + list.forEach(l -> modify(l)); + } + } + } + } + + } diff --git a/src/com/engine/salary/util/valid/ValueTypeEnum.java b/src/com/engine/salary/util/valid/ValueTypeEnum.java new file mode 100644 index 000000000..f2227d689 --- /dev/null +++ b/src/com/engine/salary/util/valid/ValueTypeEnum.java @@ -0,0 +1,13 @@ +package com.engine.salary.util.valid; + +/** + * 值类型 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum ValueTypeEnum { + STRING, OBJECT,ARRAY +} From fbd19ecf75898a9bbd2c92c1ce4a437e9d908138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 19:11:16 +0800 Subject: [PATCH 21/23] =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wrapper/SalaryStatisticsReportWrapper.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 67ac15781..330a1550a 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -315,13 +315,13 @@ public class SalaryStatisticsReportWrapper extends Service { //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; -// if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { -// //报表中缓存的条件 -// salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); -// if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { -// return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); -// } -// } + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //报表中缓存的条件 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5); + } + } // 列表data From 61d0e0f6599de866f52dd24342b6e6eabdaac1f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 7 Nov 2023 20:14:23 +0800 Subject: [PATCH 22/23] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/encrypt/AESEncryptUtil.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/com/engine/salary/encrypt/AESEncryptUtil.java b/src/com/engine/salary/encrypt/AESEncryptUtil.java index ec1cc2aed..e54ebea02 100644 --- a/src/com/engine/salary/encrypt/AESEncryptUtil.java +++ b/src/com/engine/salary/encrypt/AESEncryptUtil.java @@ -3,7 +3,6 @@ package com.engine.salary.encrypt; import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.enums.OpenEnum; -import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import org.apache.commons.lang3.StringUtils; import weaver.general.AES; import weaver.general.BaseBean; @@ -20,7 +19,6 @@ public class AESEncryptUtil { static BaseBean bb = new BaseBean(); static String aesEncryptScrect = bb.getPropValue("hrmSalary", "AESEncryptScrect"); - static SalarySysConfServiceImpl salarySysConfService = new SalarySysConfServiceImpl(); /** * AES加密 From d2ac1aec233de604010a12d12f24a9d3a2cb891e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 8 Nov 2023 09:38:24 +0800 Subject: [PATCH 23/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/report/entity/bo/SalaryStatisticsReportBO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 2d06a5d8e..7088ee9d6 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -1196,7 +1196,7 @@ public class SalaryStatisticsReportBO { // 9.最频繁children SalaryStatisticsItemRuleDTO frequentRule = JSON.parseObject(itemPO.getFrequentRule(), SalaryStatisticsItemRuleDTO.class); if (frequentRule != null && 1 == frequentRule.getTotalValue()) { - children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "频繁出现"), k + UD + SalaryStatisticsItemStringRuleEnum.FREQUENT.getValue() + P_NOW)); + children.add(new WeaTableColumnGroup(COL_WIDTH, SalaryI18nUtil.getI18nLabel(174246, "最频繁"), k + UD + SalaryStatisticsItemStringRuleEnum.FREQUENT.getValue() + P_NOW)); } // 10.平铺children SalaryStatisticsItemRuleDTO tileRule = JSON.parseObject(itemPO.getTileRule(), SalaryStatisticsItemRuleDTO.class);