Merge branch 'release/2.9.6.2310.01' into release/个税版本
This commit is contained in:
commit
59f24d3a14
|
|
@ -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
|
||||
|
|
@ -2400,23 +2400,6 @@ public class SIAccountBiz extends Service {
|
|||
dto.setSocialPaySum(socialPaySum.toPlainString());
|
||||
}
|
||||
|
||||
private List<InsuranceSchemeDetailPO> encryptSchemeDetail(List<InsuranceSchemeDetailPO> 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<InsuranceSchemeDetailPO> decryptSchemeDetail(List<InsuranceSchemeDetailPO> 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是否已经薪资核算核算过
|
||||
|
|
|
|||
|
|
@ -462,15 +462,6 @@ public class SISchemeBiz {
|
|||
}
|
||||
|
||||
|
||||
private List<InsuranceSchemeDetailPO> encryptSchemeDetailList(List<InsuranceSchemeDetailPO> 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<InsuranceSchemeDetailPO> decryptSchemeDetailList(List<InsuranceSchemeDetailPO> 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<String, Object> params) {
|
||||
return getSIAccountUtilMapper().checkBeforeDeleteSocialscheme((Collection<Long>) params.get("ids")).get(0).getNum();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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("薪资项目不存在或已被删除");
|
||||
}
|
||||
// 获取薪资账套中薪资项目信息
|
||||
|
|
|
|||
|
|
@ -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<Long, SalaryItemPO> 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<SalarySobItemPO> 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<SalarySobDefaultItemPO> salarySobDefaultItemPOS = getSalarySobDefaultItemMapper().listAll();
|
||||
salarySobDefaultItemPOS = salarySobDefaultItemPOS.stream().filter(po -> po.getSysSalaryItemId() != 0).collect(Collectors.toList());
|
||||
Map<Long, Integer> 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 : "")
|
||||
|
|
|
|||
|
|
@ -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<SalarySobPO> 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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue