diff --git a/resource/sql/删除档案.txt b/resource/sql/删除档案.txt new file mode 100644 index 000000000..2c4fa7372 --- /dev/null +++ b/resource/sql/删除档案.txt @@ -0,0 +1,26 @@ +一、删除指定扣缴义务人下的档案 +操作前做好数据备份 + +删除扣缴义务人下的档案(注意删除后,再添加进扣缴义务人,不会自动生成档案) + +1、查询hrsa_tax_agent表对应扣缴义务人id +select id from hrsa_tax_agent + +2、删除社保福利档案 +update hrsa_insurance_base_info set delete_type=3 where payment_organization = 扣缴义务人id +update hrsa_social_archives set delete_type=3 where payment_organization = 扣缴义务人id +update hrsa_fund_archives set delete_type=3 where payment_organization = 扣缴义务人id +update hrsa_other_archives set delete_type=3 where payment_organization = 扣缴义务人id + + +3、删除薪资档案 +update hrsa_salary_archive set delete_type=3 where tax_agent_id=扣缴义务人id + + +二、删除停薪员工档案 +update hrsa_salary_archive set delete_type=3 where run_status in ('STOP_FROM_PENDING','STOP_FROM_SUSPEND') + + + + +.\wkhtmltopdf.exe http://127.0.0.1:8080/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=1694053661638&recipient=92&type=phone C:\baidu.pdf \ No newline at end of file diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index d32a556b2..4ba839d57 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -2400,23 +2400,6 @@ public class SIAccountBiz extends Service { dto.setSocialPaySum(socialPaySum.toPlainString()); } - private List encryptSchemeDetail(List source) { - source.forEach(item -> { - item.setUpperLimit(AESEncryptUtil.encrypt(item.getUpperLimit())); - item.setFixedCost(AESEncryptUtil.encrypt(item.getFixedCost())); - item.setLowerLimit(AESEncryptUtil.encrypt(item.getLowerLimit())); - }); - return source; - } - - private List decryptSchemeDetail(List encryptList) { - encryptList.forEach(item -> { - item.setUpperLimit(AESEncryptUtil.decrypt(item.getUpperLimit())); - item.setFixedCost(AESEncryptUtil.decrypt(item.getFixedCost())); - item.setLowerLimit(AESEncryptUtil.decrypt(item.getLowerLimit())); - }); - return encryptList; - } /** * 查询台账id是否已经薪资核算核算过 diff --git a/src/com/engine/salary/biz/SISchemeBiz.java b/src/com/engine/salary/biz/SISchemeBiz.java index 74dba143c..cb8374169 100644 --- a/src/com/engine/salary/biz/SISchemeBiz.java +++ b/src/com/engine/salary/biz/SISchemeBiz.java @@ -462,15 +462,6 @@ public class SISchemeBiz { } - private List encryptSchemeDetailList(List source) { - source.forEach(item -> { - item.setUpperLimit(AESEncryptUtil.encrypt(item.getUpperLimit())); - item.setFixedCost(AESEncryptUtil.encrypt(item.getFixedCost())); - item.setLowerLimit(AESEncryptUtil.encrypt(item.getLowerLimit())); - }); - return source; - } - private List decryptSchemeDetailList(List encryptList) { encryptList.forEach(item -> { item.setUpperLimit(AESEncryptUtil.decrypt(item.getUpperLimit())); @@ -480,20 +471,6 @@ public class SISchemeBiz { return encryptList; } - private InsuranceSchemeDetailPO encryptSchemeDetail(InsuranceSchemeDetailPO item) { - item.setUpperLimit(AESEncryptUtil.encrypt(item.getUpperLimit())); - item.setFixedCost(AESEncryptUtil.encrypt(item.getFixedCost())); - item.setLowerLimit(AESEncryptUtil.encrypt(item.getLowerLimit())); - return item; - } - - private InsuranceSchemeDetailPO decryptSchemeDetail(InsuranceSchemeDetailPO item) { - item.setUpperLimit(AESEncryptUtil.decrypt(item.getUpperLimit())); - item.setFixedCost(AESEncryptUtil.decrypt(item.getFixedCost())); - item.setLowerLimit(AESEncryptUtil.decrypt(item.getLowerLimit())); - return item; - } - public int checkBeforeDeleteSocialscheme(Map params) { return getSIAccountUtilMapper().checkBeforeDeleteSocialscheme((Collection) params.get("ids")).get(0).getNum(); } diff --git a/src/com/engine/salary/encrypt/AESEncryptUtil.java b/src/com/engine/salary/encrypt/AESEncryptUtil.java index bcf5d0dba..76a12259a 100644 --- a/src/com/engine/salary/encrypt/AESEncryptUtil.java +++ b/src/com/engine/salary/encrypt/AESEncryptUtil.java @@ -4,7 +4,6 @@ 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 com.wbi.util.StringUtil; import org.apache.commons.lang3.StringUtils; import weaver.general.AES; import weaver.general.BaseBean; @@ -30,26 +29,13 @@ public class AESEncryptUtil { * @return 加密数据 */ public static String encrypt(String source) { - String isEncrypt = getSalarySysConfigValue(); //防止初始化老数据时二次加密 - if (StringUtils.isNotBlank(source) && OpenEnum.OPEN.getValue().equals(isEncrypt) && !source.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { + if (StringUtils.isNotBlank(source) && !source.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { return SalarySysConstant.PRE_SIGN_ENCRYPT + AES.encrypt(source, aesEncryptScrect); } return source; } - /** - * 应用设置是否开启加密 - * - * @return - */ - private static String getSalarySysConfigValue() { - SalarySysConfPO sysConfPO = salarySysConfService.getOneByCode(SalarySysConstant.OPEN_APPLICATION_ENCRYPT); - if (sysConfPO == null) { - return "1"; - } - return sysConfPO.getConfValue(); - } /** * AES解密 @@ -58,15 +44,11 @@ public class AESEncryptUtil { * @return 解密字符串 */ public static String decrypt(String encryptStr) { - SalarySysConfPO sysConfPo = salarySysConfService.getOneByCode(SalarySysConstant.OPEN_APPLICATION_ENCRYPT); if (StringUtils.isNotBlank(encryptStr)) { if (encryptStr.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { encryptStr = encryptStr.substring(4, encryptStr.length()); return AES.decrypt(encryptStr, aesEncryptScrect); - } - //第一版没有加AES_前缀为加密标识,所以初始解密时,需要根据是否有配置判断是否需要解密 - //未配置加密设置时,需要解密 - if (sysConfPo == null) { + } else { return AES.decrypt(encryptStr, aesEncryptScrect); } } @@ -81,13 +63,6 @@ public class AESEncryptUtil { */ public static String closeEncryptSetting(String encryptStr) { SalarySysConfPO sysConfPo = salarySysConfService.getOneByCode(SalarySysConstant.OPEN_APPLICATION_ENCRYPT); -// if (StringUtils.isNotBlank(encryptStr) && encryptStr.startsWith(SalarySysConstant.PRE_SIGN_ENCRYPT)) { -// encryptStr = encryptStr.substring(4, encryptStr.length()); -// return AES.decrypt(encryptStr, aesEncryptScrect); -// } else if (sysConfPo == null && StringUtils.isNotBlank(encryptStr)) { -// return AES.decrypt(encryptStr, aesEncryptScrect); -// } -// return encryptStr; if (encryptStr == null) { return null; } else { diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 4b57789e5..4f91464d3 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -32,7 +32,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -435,7 +434,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService ValidUtil.doValidator(param); // 获取薪资项目信息 SalaryItemPO salaryItemPO = salaryItemBiz.getById(param.getSalaryItemId()); - if (ObjectUtils.isEmpty(salaryItemPO)) { + if (salaryItemPO == null) { throw new SalaryRunTimeException("薪资项目不存在或已被删除"); } // 获取薪资账套中薪资项目信息 diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 32ad87e0f..def2cd40c 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -26,8 +26,8 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; import dm.jdbc.util.IdGenerator; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; @@ -45,6 +45,7 @@ import java.util.stream.Collectors; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalarySobItemServiceImpl extends Service implements SalarySobItemService { private SalarySobItemBiz salarySobItemMapper = new SalarySobItemBiz(); @@ -650,7 +651,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe private SalaryItemPO checkItemExists(Long salaryItemId, Map salaryItemsMap) { SalaryItemPO salaryItemPO = salaryItemsMap.get(salaryItemId); - if (ObjectUtils.isEmpty(salaryItemPO)){ + if (salaryItemPO == null) { + log.error("薪资项目:{}不存在", salaryItemId); throw new SalaryRunTimeException("保存失败!存在薪资项目不存在或已被删除"); } return salaryItemPO; @@ -741,7 +743,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO(); salarySobItemFormDTO.setCanEdit(1); // 默认可以编辑 - if (ObjectUtils.isNotEmpty(param.getSalarySobId()) && ObjectUtils.isNotEmpty(param.getSalaryItemId())) { + if (param.getSalarySobId() != null && param.getSalaryItemId() != null) { // 查询薪资账套 SalarySobPO salarySobPO = salarySobBiz.getById(param.getSalarySobId()); if (Objects.isNull(salarySobPO)) { @@ -749,19 +751,19 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } // 查询薪资项目 List salarySobItemPOS = getSalarySobItemMapper().listSome(SalarySobItemPO.builder().salarySobId(param.getSalarySobId()).salaryItemId(param.getSalaryItemId()).build()); - if (CollectionUtils.isEmpty(salarySobItemPOS)){ + if (CollectionUtils.isEmpty(salarySobItemPOS)) { throw new SalaryRunTimeException("账套中薪资项目不存在"); } SalarySobItemPO salarySobItemPO = salarySobItemPOS.get(0); SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(salarySobItemPO.getSalaryItemId()); - if (ObjectUtils.isEmpty(salaryItemPO)){ + if (salaryItemPO == null) { throw new SalaryRunTimeException("薪资项目不存在或已被删除"); } //获取系统值 List salarySobDefaultItemPOS = getSalarySobDefaultItemMapper().listAll(); salarySobDefaultItemPOS = salarySobDefaultItemPOS.stream().filter(po -> po.getSysSalaryItemId() != 0).collect(Collectors.toList()); Map longIntegerMap = SalaryEntityUtil.convert2Map(salarySobDefaultItemPOS, SalarySobDefaultItemPO::getSysSalaryItemId, SalarySobDefaultItemPO::getCanDelete); - if (salaryItemPO.getSysSalaryItemId() != null){ + if (salaryItemPO.getSysSalaryItemId() != null) { salarySobItemPO.setCanDelete(longIntegerMap.getOrDefault(salaryItemPO.getSysSalaryItemId(), 1)); } // 获取薪资项目公式 @@ -777,14 +779,14 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .build()); String formulaContent = CollectionUtils.isEmpty(expressFormulas) ? "" : expressFormulas.get(0).getFormula(); - Integer valueType = ObjectUtils.isEmpty(salarySobItemPO.getValueType()) ? salaryItemPO.getValueType() : salarySobItemPO.getValueType(); + Integer valueType = salarySobItemPO.getValueType() == null ? salaryItemPO.getValueType() : salarySobItemPO.getValueType(); salarySobItemFormDTO .setId(salarySobItemPO.getId()) .setName(salaryItemPO.getName()) .setItemHide(hideItemIds.contains(salaryItemPO.getId()) ? 1 : 0) .setDataType(salaryItemPO.getDataType()) - .setRoundingMode(ObjectUtils.isEmpty(salarySobItemPO.getRoundingMode()) ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()) - .setPattern(ObjectUtils.isEmpty(salarySobItemPO.getPattern()) ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()) + .setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()) + .setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()) .setValueType(valueType) .setFormulaId(salarySobItemPO.getFormulaId()) .setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "") diff --git a/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java b/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java new file mode 100644 index 000000000..78baf3e7d --- /dev/null +++ b/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java @@ -0,0 +1,81 @@ +package com.engine.salary.timer; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.param.AttendQuoteCheckOperationParam; +import com.engine.salary.entity.datacollection.param.AttendQuoteDataSyncParam; +import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.service.SalarySobService; +import com.engine.salary.service.impl.SalarySobServiceImpl; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.wrapper.AttendQuoteDataWrapper; +import com.engine.salary.wrapper.AttendQuoteWrapper; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.BaseBean; +import weaver.hrm.User; +import weaver.interfaces.schedule.BaseCronJob; + +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName AutoSyncAttendQuoteData + * @date 2023/08/11 9:53 + * @description 自动同步所有薪资账套的考勤引用 + */ +public class AutoSyncAttendQuoteJob extends BaseCronJob { + + private String preMonth; + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private AttendQuoteWrapper getAttendQuoteWrapper(User user) { + return ServiceUtil.getService(AttendQuoteWrapper.class, user); + } + private AttendQuoteDataWrapper getAttendQuoteDataWrapper(User user) { + return ServiceUtil.getService(AttendQuoteDataWrapper.class, user); + } + + @Override + public void execute() { + User tempUser = new User(); + tempUser.setUid(1); + tempUser.setLoginid("sysadmin"); + // 获取所有的薪资账套 + List salarySobList = getSalarySobService(tempUser).listAll(); + LocalDate localDate = SalaryDateUtil.dateToLocalDate(new Date()); + + int preMonthValue = -1; + if (preMonth != null && NumberUtils.isCreatable(preMonth)) { + preMonthValue = -1 * Integer.valueOf(preMonth); + } + localDate = localDate.plusMonths(preMonthValue); + + String dateStr = SalaryDateUtil.getFormatYearMonth(localDate); + BaseBean baseBean = new BaseBean(); + // 循环所有的账套 + salarySobList.stream().forEach(sob -> { + // 校验是否可以操作 + Boolean canSync = getAttendQuoteWrapper(tempUser).checkOperation(AttendQuoteCheckOperationParam.builder() + .salarySobId(sob.getId()) + .salaryYearMonthStr(dateStr) + .build()); + if (canSync) { + // 同步数据 + try { + baseBean.writeLog("自动同步考勤数据开始:"+ sob.getId()+","+dateStr); + getAttendQuoteDataWrapper(tempUser).syncAttendQuoteData(AttendQuoteDataSyncParam.builder() + .salarySobId(sob.getId()) + .salaryYearMonth(dateStr) + .build()); + baseBean.writeLog("自动同步考勤数据结束:"+ sob.getId()+","+dateStr); + } catch (Exception e) { + baseBean.writeLog("自动同步考勤数据出错:"+ e); + } + } + }); + } +}