Commit 81165eef authored by hongguangwu's avatar hongguangwu

1.5.6-salaryBack-EKP退表,异步、记录异常

parent ec862349
......@@ -43,7 +43,10 @@ import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpFundUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSalaryUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSocialUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.*;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpPushFundParam;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpPushSocialParam;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryParam;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryParamVo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.*;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.*;
......@@ -52,7 +55,6 @@ import com.yifu.cloud.plus.v1.yifu.salary.util.SalaryConstants;
import com.yifu.cloud.plus.v1.yifu.salary.vo.AccountByEkpDiffVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardExportVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardSearchVo;
import com.yifu.cloud.plus.v1.yifu.social.entity.TIncome;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSendEkpError;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
......@@ -392,7 +394,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
List<EkpSalaryParamVo> ekpList = salaryAccountService.getEkpSalaryParamList(id);
YifuUser user = SecurityUtils.getUser();
if (user != null) {
if (ekpList != null && !ekpList.isEmpty()){
if (ekpList != null && !ekpList.isEmpty()) {
boolean sendStatus = true;
String sendBack;
List<TSalaryAccount> accountList = new ArrayList<>();
......@@ -412,7 +414,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
// 社保
if ((Common.isNotNull(sendParam.getFd_3bcd41d857b764())
&& !CommonConstants.ZERO_STRING.equals(sendParam.getFd_3bcd41d857b764()))
||(Common.isNotNull(sendParam.getFd_3b16ce48a9735c())
|| (Common.isNotNull(sendParam.getFd_3b16ce48a9735c())
&& !CommonConstants.ZERO_STRING.equals(sendParam.getFd_3b16ce48a9735c()))) {
doSendForecastSocialToEkp(sendParam, s);
}
......@@ -460,8 +462,8 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
EmpStatusVo empStatusVo = new EmpStatusVo();
empStatusVo.setEmpInfo(voList);
HttpDaprUtil.invokeMethodPost(archivesProperties.getAppUrl(), archivesProperties.getAppId()
,"/temployeeproject/inner/updateEmployeeSalaryStatus"
, JSON.toJSONString(empStatusVo) , Boolean.class, SecurityConstants.FROM_IN);
, "/temployeeproject/inner/updateEmployeeSalaryStatus"
, JSON.toJSONString(empStatusVo), Boolean.class, SecurityConstants.FROM_IN);
}
if (sendStatus) {
......@@ -500,7 +502,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
this.saveRecordLog(s, user, CommonConstants.ONE_STRING, "发送数字化平台-失败");
return R.ok("发送失败!");
}
}else {
} else {
return R.ok("无数据可发送!");
}
} else {
......@@ -536,8 +538,8 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
sendMap.put("fd_3b3bf2c58d2b46", s.getId());
sendMap.put("fd_3b3cbe1d05f0d6", "");
sendMap.put("fd_3b3d3ec95b68fc", String.valueOf(s.getSettlementAmount()));
sendMap.put("fd_3b3d3ec85bfeb0", s.getSalaryMonth().substring(0,4)
+ CommonConstants.CENTER_SPLIT_LINE_STRING + s.getSalaryMonth().substring(4,6));
sendMap.put("fd_3b3d3ec85bfeb0", s.getSalaryMonth().substring(0, 4)
+ CommonConstants.CENTER_SPLIT_LINE_STRING + s.getSalaryMonth().substring(4, 6));
sendMap.put("fd_3b73e18ad34090", "否");
if (Common.isNotNull(s.getIssueStatus()) && s.getIssueStatus() == 1) {
......@@ -721,7 +723,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
// 是否为BPO业务
socialParam.setFd_3b178dfcf9e3e6(s.getBpoFlag());
// 薪酬申请编号
socialParam.setFd_3b3cab77923f44(s.getApplyNo()==null?"":s.getApplyNo());
socialParam.setFd_3b3cab77923f44(s.getApplyNo() == null ? "" : s.getApplyNo());
String sendBack = ekpSocialUtil.sendToEKP(socialParam);
if (Common.isEmpty(sendBack) || sendBack.length() != 32) {
sendBack = ekpSocialUtil.sendToEKP(socialParam);
......@@ -737,7 +739,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
error.setNums(CommonConstants.ONE_INT);
HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tsendekperror/inner/saveError", error, Boolean.class, SecurityConstants.FROM_IN);
log.error("薪资预估推送:"+JSON.toJSON(socialParam));
log.error("薪资预估推送:" + JSON.toJSON(socialParam));
}
}
......@@ -810,7 +812,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
// 是否为BPO业务
socialParam.setFd_3b178ea361cabe(s.getBpoFlag());
// 薪酬申请编号
socialParam.setFd_3b3cabde83d1d0(s.getApplyNo()==null?"":s.getApplyNo());
socialParam.setFd_3b3cabde83d1d0(s.getApplyNo() == null ? "" : s.getApplyNo());
String sendBack = ekpFundUtil.sendToEKP(socialParam);
if (Common.isEmpty(sendBack) || sendBack.length() != 32) {
sendBack = ekpFundUtil.sendToEKP(socialParam);
......@@ -837,64 +839,19 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<String> backSalaryByApplyNo(String applyNo) {
List<TSalaryStandard> salaryList = this.list(Wrappers.<TSalaryStandard>query().lambda().eq(TSalaryStandard::getApplyNo,applyNo));
if (Common.isNotNull(applyNo)) {
List<TSalaryStandard> salaryList = this.list(Wrappers.<TSalaryStandard>query().lambda().eq(TSalaryStandard::getApplyNo, applyNo));
if (salaryList != null && !salaryList.isEmpty()) {
TSalaryStandard ss = salaryList.get(0);
if (ss.getStatus() != SalaryConstants.STATUS[6]) {
// 通知EKP
EkpSalaryBackParam param = new EkpSalaryBackParam();
param.setFd_3b3c293745e7b4(ss.getDeptName());
param.setFd_3b3c2935c13056(ss.getDeptNo());
param.setFd_3b3c293811c0ee(ss.getApplyNo());
YifuUser user = SecurityUtils.getUser();
if (user != null) {
param.setFd_3b422d73d73e02(user.getUsername());
} else {
param.setFd_3b422d73d73e02("");
}
String sendBack = ekpSalaryUtil.backStandardToEKP(param);
if (Common.isEmpty(sendBack) || sendBack.length() != 32) {
sendBack = ekpSalaryUtil.backStandardToEKP(param);
}
if (Common.isNotNull(sendBack) && sendBack.length() == 32) {
// 更新薪资为确认不通过
ss.setStatus(SalaryConstants.STATUS[6]);
ss.setSendMonth(null);
ss.setSendTime(null);
ss.setBackTime(new Date());
ss.setBackEkpId(sendBack);
this.updateById(ss);
// 更新报账表
salaryAccountService.backSalaryBySalaryId(ss.getId());
TIncome income = new TIncome();
income.setApplyNo(applyNo);
// 删除收入对应编号的明细
HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tincome/inner/deleteIncomeAndDetailByApplyNo", income
, Object.class, SecurityConstants.FROM_IN);
// 添加流程进展明细
if (user != null) {
ss.setRemark(" ");
this.saveRecordLog(ss, user, CommonConstants.ZERO_STRING, "从EKP退表");
}
// 异步-收入相关
doSalaryAsync.doBackSalary(applyNo, ss);
return R.ok();
} else {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.SEVEN_STRING);
error.setCreateUserName(ss.getCreateName());
error.setLinkId(ss.getId());
error.setTitle(sendBack == null ? SalaryConstants.EKP_NO_RETURN : sendBack);
error.setNums(CommonConstants.ONE_INT);
HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tsendekperror/inner/saveError", error, Boolean.class, SecurityConstants.FROM_IN);
return R.failed("连续两次请求EKP,均未接收到EKP删除成功的返回信息,不予退回");
}
} else {
return R.failed("工资表已退回,请不要重复操作");
}
}
}
return R.failed("未找到工资表");
}
......
......@@ -3,17 +3,22 @@ package com.yifu.cloud.plus.v1.yifu.salary.util;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.BigDecimalUtils;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprSocialProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.HttpDaprUtil;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSalaryUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryBackParam;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TApprovalRecord;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandard;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TApprovalRecordService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAccountService;
import com.yifu.cloud.plus.v1.yifu.social.entity.TIncome;
import com.yifu.cloud.plus.v1.yifu.social.entity.TIncomeDetail;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSendEkpError;
import com.yifu.cloud.plus.v1.yifu.social.vo.TIncomeDetailReturnVo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -37,8 +42,12 @@ public class DoJointSalaryAsyncTask {
private final DaprSocialProperties socialProperties;
private final TSalaryStandardMapper salaryStandardMapper;
private final TSalaryAccountService tSalaryAccountService;
private final RedisUtil redisUtil;
private final TApprovalRecordService auditLogService;
private final EkpSalaryUtil ekpSalaryUtil;
/**
* @Description: 收入
* @Author: hgw
......@@ -64,8 +73,7 @@ public class DoJointSalaryAsyncTask {
} else {
// 含有薪资,则计算收入
// 管理费
if (Common.isNotNull(dept.getManageServerItem()) && dept.getManageServerItem().contains(CommonConstants.FOUR_STRING)
&& CommonConstants.ZERO_STRING.equals(dept.getManagementTag())) {
if (Common.isNotNull(dept.getManageServerItem()) && dept.getManageServerItem().contains(CommonConstants.FOUR_STRING) && CommonConstants.ZERO_STRING.equals(dept.getManagementTag())) {
// 金额-人数
if (CommonConstants.TWO_STRING.equals(dept.getManagementType())) {
// 保存明细
......@@ -76,8 +84,7 @@ public class DoJointSalaryAsyncTask {
}
}
// 风险金
if (isTrue && Common.isNotNull(dept.getRiskServerItem()) && dept.getRiskServerItem().contains(CommonConstants.FOUR_STRING)
&& CommonConstants.ZERO_STRING.equals(dept.getRiskFundTag())) {
if (isTrue && Common.isNotNull(dept.getRiskServerItem()) && dept.getRiskServerItem().contains(CommonConstants.FOUR_STRING) && CommonConstants.ZERO_STRING.equals(dept.getRiskFundTag())) {
// 金额-人数
if (CommonConstants.TWO_STRING.equals(dept.getRiskFundType())) {
// 保存明细
......@@ -92,9 +99,7 @@ public class DoJointSalaryAsyncTask {
isTrue = false;
log.error(e.getMessage());
}
if (s != null
&& (s.getStatus() == CommonConstants.dingleDigitIntArray[11]
|| s.getStatus() == CommonConstants.dingleDigitIntArray[12])) {
if (s != null && (s.getStatus() == CommonConstants.dingleDigitIntArray[11] || s.getStatus() == CommonConstants.dingleDigitIntArray[12])) {
s.setIncomeEndTime(new Date());
if (isTrue) {
s.setStatus(CommonConstants.TWO_INT);
......@@ -121,18 +126,14 @@ public class DoJointSalaryAsyncTask {
detail.setPayMonth(tSalaryStandard.getIncomeMonth());
detail.setIdCardList(idCardList);
detail.setDeptId(dept.getId());
R<TIncomeDetailReturnVo> detailR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tincomedetail/inner/getTIncomeDetailList", detail
, TIncomeDetailReturnVo.class, SecurityConstants.FROM_IN);
R<TIncomeDetailReturnVo> detailR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId(), "/tincomedetail/inner/getTIncomeDetailList", detail, TIncomeDetailReturnVo.class, SecurityConstants.FROM_IN);
Integer value;
if (detailR != null) {
if (detailR.getData() != null && detailR.getData().getDetailList() != null && !detailR.getData().getDetailList().isEmpty()) {
TIncomeDetailReturnVo vo = detailR.getData();
List<TIncomeDetail> detailList = vo.getDetailList();
for (TIncomeDetail incomeDetail : detailList) {
value = detailMap.get(incomeDetail.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING
+ incomeDetail.getDeptId() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getFeeType()
+ CommonConstants.DOWN_LINE_STRING + incomeDetail.getSourceType());
value = detailMap.get(incomeDetail.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getDeptId() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getFeeType() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getSourceType());
if (Common.isEmpty(value)) {
value = CommonConstants.ZERO_INT;
}
......@@ -141,10 +142,7 @@ public class DoJointSalaryAsyncTask {
} else {
value--;
}
detailMap.put(incomeDetail.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING
+ incomeDetail.getDeptId() + CommonConstants.DOWN_LINE_STRING
+ incomeDetail.getFeeType() + CommonConstants.DOWN_LINE_STRING
+ incomeDetail.getSourceType(), value);
detailMap.put(incomeDetail.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getDeptId() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getFeeType() + CommonConstants.DOWN_LINE_STRING + incomeDetail.getSourceType(), value);
}
}
} else {
......@@ -161,17 +159,13 @@ public class DoJointSalaryAsyncTask {
* @Date: 2022/9/2 17:25
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
private boolean saveIncomeDetail(List<TSalaryAccount> salaryAccountList, TSalaryStandard tSalaryStandard
, TSettleDomainSelectVo dept, Map<String, Integer> detailMap, String feeType, String isManage) {
private boolean saveIncomeDetail(List<TSalaryAccount> salaryAccountList, TSalaryStandard tSalaryStandard, TSettleDomainSelectVo dept, Map<String, Integer> detailMap, String feeType, String isManage) {
TIncomeDetail detail;
Integer value;
BigDecimal money;
String redisKey = String.valueOf(UUID.randomUUID()).replaceAll("-", "") + "_incomePush";
for (TSalaryAccount account : salaryAccountList) {
value = detailMap.get(account.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING
+ account.getDeptId() + CommonConstants.DOWN_LINE_STRING + isManage
+ CommonConstants.DOWN_LINE_STRING
+ CommonConstants.FOUR_STRING);
value = detailMap.get(account.getEmpIdcard() + CommonConstants.DOWN_LINE_STRING + account.getDeptId() + CommonConstants.DOWN_LINE_STRING + isManage + CommonConstants.DOWN_LINE_STRING + CommonConstants.FOUR_STRING);
if (Common.isEmpty(value) || value == 0) {
detail = new TIncomeDetail();
detail.setRedisKey(redisKey);
......@@ -203,8 +197,7 @@ public class DoJointSalaryAsyncTask {
detail.setSourceId(account.getId());
detail.setSourceType(CommonConstants.FOUR_STRING);
detail.setApplyNo(tSalaryStandard.getApplyNo());
R<Boolean> saveR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tincome/inner/saveSalaryDetail", detail, Boolean.class, SecurityConstants.FROM_IN);
R<Boolean> saveR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId(), "/tincome/inner/saveSalaryDetail", detail, Boolean.class, SecurityConstants.FROM_IN);
if (saveR == null || saveR.getCode() == CommonConstants.ONE_INT || Boolean.FALSE.equals(saveR.getData())) {
return false;
}
......@@ -213,9 +206,8 @@ public class DoJointSalaryAsyncTask {
//推送失败的数据重新推送
if (Common.isNotNull(redisUtil.get(redisKey))) {
List<TIncome> list = (List<TIncome>) redisUtil.get(redisKey);
for (TIncome income:list) {
R<Boolean> saveR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId()
, "/tincome/inner/saveSalaryPushIncome", income, Boolean.class, SecurityConstants.FROM_IN);
for (TIncome income : list) {
R<Boolean> saveR = HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId(), "/tincome/inner/saveSalaryPushIncome", income, Boolean.class, SecurityConstants.FROM_IN);
if (saveR == null || saveR.getCode() == CommonConstants.ONE_INT || Boolean.FALSE.equals(saveR.getData())) {
return false;
}
......@@ -225,4 +217,82 @@ public class DoJointSalaryAsyncTask {
return true;
}
/**
* @param applyNo
* @param ss
* @Description: 异步-薪资退表
* @Author: hgw
* @Date: 2023/8/2 16:56
* @return: void
**/
@Async
public void doBackSalary(String applyNo, TSalaryStandard ss) {
EkpSalaryBackParam param = new EkpSalaryBackParam();
param.setFd_3b3c293745e7b4(ss.getDeptName());
param.setFd_3b3c2935c13056(ss.getDeptNo());
param.setFd_3b3c293811c0ee(ss.getApplyNo());
YifuUser user = SecurityUtils.getUser();
if (user != null) {
param.setFd_3b422d73d73e02(user.getUsername());
} else {
param.setFd_3b422d73d73e02("");
}
String sendBack = ekpSalaryUtil.backStandardToEKP(param);
if (Common.isEmpty(sendBack) || sendBack.length() != 32) {
sendBack = ekpSalaryUtil.backStandardToEKP(param);
}
if (Common.isNotNull(sendBack) && sendBack.length() == 32) {
// 更新薪资为确认不通过
ss.setStatus(SalaryConstants.STATUS[6]);
ss.setSendMonth(null);
ss.setSendTime(null);
ss.setBackTime(new Date());
ss.setBackEkpId(sendBack);
salaryStandardMapper.updateById(ss);
// 更新报账表
tSalaryAccountService.backSalaryBySalaryId(ss.getId());
TIncome income = new TIncome();
income.setApplyNo(applyNo);
// 删除收入对应编号的明细
HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId(), "/tincome/inner/deleteIncomeAndDetailByApplyNo", income, Object.class, SecurityConstants.FROM_IN);
// 添加流程进展明细
if (user != null) {
ss.setRemark(" ");
this.saveRecordLog(ss, user, CommonConstants.ZERO_STRING, "从EKP退表");
}
} else {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.SEVEN_STRING);
error.setCreateUserName(ss.getCreateName());
error.setLinkId(ss.getId());
error.setTitle(sendBack == null ? ss.getId() + ":" + SalaryConstants.EKP_NO_RETURN : ss.getId() + ":" + sendBack);
error.setNums(CommonConstants.ONE_INT);
HttpDaprUtil.invokeMethodPost(socialProperties.getAppUrl(), socialProperties.getAppId(), "/tsendekperror/inner/saveError", error, Boolean.class, SecurityConstants.FROM_IN);
}
}
/**
* @param tSalaryStandard
* @param user
* @param status
* @param nodeId
* @Description: 流程进展明细
* @Author: hgw
* @Date: 2023/8/2 16:48
* @return: void
**/
public void saveRecordLog(TSalaryStandard tSalaryStandard, YifuUser user, String status, String nodeId) {
TApprovalRecord tApprovalRecord = new TApprovalRecord();
tApprovalRecord.setApprovalResult(status);
tApprovalRecord.setApprovalOpinion(tSalaryStandard.getRemark());
tApprovalRecord.setSalaryId(tSalaryStandard.getId());
tApprovalRecord.setNodeId(nodeId);
tApprovalRecord.setApprovalMan(user.getId());
tApprovalRecord.setApprovalManName(user.getNickname());
tApprovalRecord.setApprovalTime(DateUtil.getCurrentDateTime());
auditLogService.save(tApprovalRecord);
}
}
......@@ -54,7 +54,7 @@
</logger>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="INFO">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment