|
@@ -1,6 +1,8 @@
|
|
|
package org.springblade.control.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -24,10 +26,13 @@ import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.redis.cache.BladeRedis;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.DateUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+import org.springblade.system.entity.Dept;
|
|
|
+import org.springblade.system.feign.ISysClient;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -49,6 +54,7 @@ import java.util.stream.Collectors;
|
|
|
public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, TaskProcessInfo> implements TaskProcessService {
|
|
|
|
|
|
private final IUserClient iUserClient;
|
|
|
+ private final ISysClient iSysClient;
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
private final BladeRedis bladeRedis;
|
|
|
private final ProjectCostBudgetServiceImpl projectCostBudgetService;
|
|
@@ -144,6 +150,7 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
String userName = userMap.get(taskProcessInfo.getReportUserId());
|
|
|
basicsVO.setReportUser(StringUtils.isNotEmpty(userName) ? userName : "");
|
|
|
basicsVO.setReportDate(taskProcessInfo.getReportDate());
|
|
|
+ basicsVO.setPayStatus(ObjectUtil.isNotEmpty(taskProcessInfo.getPayStatus()) ? taskProcessInfo.getPayStatus() : null);
|
|
|
vo.setBasicsInfo(basicsVO);
|
|
|
|
|
|
//查询审批任务与业务数据关系,构造其他信息
|
|
@@ -287,7 +294,7 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean taskSubmit(String id) {
|
|
|
+ public boolean taskSubmit(String id, String payStatus) {
|
|
|
if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
|
|
|
throw new ServiceException("未获取到当前用户信息,请联系管理员");
|
|
|
}
|
|
@@ -326,13 +333,23 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
auditUserIdCompleteList.add(SecureUtil.getUserId() + "");
|
|
|
}
|
|
|
|
|
|
+ LambdaUpdateWrapper<TaskProcessInfo> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ //获取当前用户是否为财务人员,财务人员修改是否支付状态
|
|
|
+ R<Dept> dept = iSysClient.getDept(Long.parseLong(SecureUtil.getDeptId()));
|
|
|
+ if (dept != null && dept.getData() != null && ObjectUtil.isNotEmpty(payStatus)) {
|
|
|
+ Dept deptObj = dept.getData();
|
|
|
+ if (deptObj != null && (deptObj.getDeptName().contains("财务") || deptObj.getDeptName().contains("人事"))) {
|
|
|
+ updateWrapper.set(TaskProcessInfo::getPayStatus, payStatus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//修改待审批人ids、完成审批人ids
|
|
|
- this.update(Wrappers.<TaskProcessInfo>lambdaUpdate()
|
|
|
- .set(TaskProcessInfo::getAuditUserIds, ObjectUtil.isNotEmpty(auditUserIdList) ? StringUtils.join(auditUserIdList, ",") : null)
|
|
|
- .set(TaskProcessInfo::getAuditUserIdsComplete, ObjectUtil.isNotEmpty(auditUserIdCompleteList) ? StringUtils.join(auditUserIdCompleteList, ",") : null)
|
|
|
- .eq(TaskProcessInfo::getId, id));
|
|
|
+ updateWrapper.set(TaskProcessInfo::getAuditUserIds, ObjectUtil.isNotEmpty(auditUserIdList) ? StringUtils.join(auditUserIdList, ",") : null);
|
|
|
+ updateWrapper.set(TaskProcessInfo::getAuditUserIdsComplete, ObjectUtil.isNotEmpty(auditUserIdCompleteList) ? StringUtils.join(auditUserIdCompleteList, ",") : null);
|
|
|
+ updateWrapper.eq(TaskProcessInfo::getId, id);
|
|
|
+ this.update(updateWrapper);
|
|
|
|
|
|
- //如果待审批人已全部审批完毕,那么修改任务状态
|
|
|
+ //如果待审批人已全部审批完毕,那么修改任务状态,闭环
|
|
|
if (auditUserIdList.size() == 0) {
|
|
|
|
|
|
//审批任务状态 =2 已审批
|
|
@@ -478,8 +495,8 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
this.save(taskProcessInfo);
|
|
|
|
|
|
//新增计划任务更改状态记录信息
|
|
|
- jdbcTemplate.execute("insert into c_task_plan_update_status_info(id,approve_task_id,plan_task_id,update_type,completion_time,transfer_object,transfer_reason) " +
|
|
|
- "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1,'" + completionTimeStr + "',null,null)");
|
|
|
+ jdbcTemplate.execute("insert into c_task_plan_update_status_info(id,approve_task_id,plan_task_id,update_type,completion_time,start_transfer_object,transfer_object,transfer_reason) " +
|
|
|
+ "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1,'" + completionTimeStr + "',null,null,null)");
|
|
|
|
|
|
//新增审批任务关联信息
|
|
|
jdbcTemplate.execute("insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
|
|
@@ -508,8 +525,8 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
this.save(taskProcessInfo);
|
|
|
|
|
|
//新增计划任务更改状态记录信息
|
|
|
- jdbcTemplate.execute("insert into c_task_plan_update_status_info(id,approve_task_id,plan_task_id,update_type,completion_time,transfer_object,transfer_reason) " +
|
|
|
- "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",2,'" + completionTimeStr + "'," + dto.getTransferObject() + "," + dto.getTransferReason() + ")");
|
|
|
+ jdbcTemplate.execute("insert into c_task_plan_update_status_info(id,approve_task_id,plan_task_id,update_type,completion_time,start_transfer_object,transfer_object,transfer_reason) " +
|
|
|
+ "values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",2,'" + completionTimeStr + "'," + SecureUtil.getUserId() + "," + dto.getTransferObject() + "," + dto.getTransferReason() + ")");
|
|
|
|
|
|
//新增审批任务关联信息
|
|
|
jdbcTemplate.execute("insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + planTaskInfo.getId() + ",1)");
|
|
@@ -567,7 +584,6 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 处理审批闭环后的业务数据
|
|
|
*
|
|
@@ -587,35 +603,31 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
case 2: //财务
|
|
|
EMFinancialReimbursementInfo emFinancialReimbursementInfo = jdbcTemplate.query("select * from c_expense_financial_reimbursement_info where id = " + dataId, new BeanPropertyRowMapper<>(EMFinancialReimbursementInfo.class)).stream().findAny().orElse(null);
|
|
|
if (emFinancialReimbursementInfo != null && emFinancialReimbursementInfo.getStatus().equals(2)) {
|
|
|
- //已审批财务报销进行金额统计
|
|
|
+ //TODO 已审批财务报销进行金额统计
|
|
|
|
|
|
//处理借款抵扣金额(如果存在借款抵扣,那么扣除相应借款金额)
|
|
|
if (ObjectUtil.isNotEmpty(emFinancialReimbursementInfo.getFrMoney()) && emFinancialReimbursementInfo.getIsDeductLoan() == 1 && ObjectUtil.isNotEmpty(emFinancialReimbursementInfo.getDeductLoanId())) {
|
|
|
//获取借款金额(已审批、提交的借款金额数据)
|
|
|
EMLoanInfo emLoanInfo = jdbcTemplate.query("select id,loan_money from c_expense_loan_info where is_deleted = 0 and status = 2 and is_temp = 1 and id = " + emFinancialReimbursementInfo.getDeductLoanId(), new BeanPropertyRowMapper<>(EMLoanInfo.class)).stream().findAny().orElse(null);
|
|
|
if (emLoanInfo != null && ObjectUtil.isNotEmpty(emLoanInfo.getLoanMoney())) {
|
|
|
- BigDecimal frMoney = emFinancialReimbursementInfo.getFrMoney(); //当前报销金额
|
|
|
- BigDecimal loanMoney = emLoanInfo.getLoanMoney(); //当前借款金额
|
|
|
+ BigDecimal frMoney = emFinancialReimbursementInfo.getFrMoney();
|
|
|
+ BigDecimal loanMoney = emLoanInfo.getLoanMoney();
|
|
|
int result = frMoney.compareTo(loanMoney);
|
|
|
if (result < 0) { //如果借款金额大于报销金额,那么抵扣借款,无实际放款
|
|
|
- BigDecimal difference = frMoney.subtract(loanMoney).abs(); //剩余借款金额
|
|
|
+ BigDecimal difference = frMoney.subtract(loanMoney).abs();
|
|
|
if (ObjectUtil.isNotEmpty(difference)) {
|
|
|
- //借款
|
|
|
- jdbcTemplate.execute("update from c_expense_loan_info set loan_money = " + difference + " where id = " + emLoanInfo.getId());
|
|
|
- //实际报销金额
|
|
|
+ //部分还完frMoney
|
|
|
+ jdbcTemplate.execute("update from c_expense_loan_info set return_money = " + frMoney + " where id = " + emLoanInfo.getId());
|
|
|
jdbcTemplate.execute("update from c_expense_financial_reimbursement_info set fr_money_actual = 0 where id = " + emFinancialReimbursementInfo.getId());
|
|
|
}
|
|
|
} else if (result == 0) { //相同,抵扣完成
|
|
|
- //借款
|
|
|
- jdbcTemplate.execute("update from c_expense_loan_info set loan_money = 0 where id = " + emLoanInfo.getId());
|
|
|
- //实际报销金额
|
|
|
+ jdbcTemplate.execute("update from c_expense_loan_info set return_money = " + frMoney + " where id = " + emLoanInfo.getId());
|
|
|
jdbcTemplate.execute("update from c_expense_financial_reimbursement_info set fr_money_actual = 0 where id = " + emFinancialReimbursementInfo.getId());
|
|
|
} else { //如果借款金额小于报销金额,那么抵扣完借款,还要实际放款
|
|
|
- BigDecimal difference = frMoney.subtract(loanMoney).abs(); //实际放款金额
|
|
|
+ BigDecimal difference = frMoney.subtract(loanMoney).abs();
|
|
|
if (ObjectUtil.isNotEmpty(difference)) {
|
|
|
- //借款
|
|
|
- jdbcTemplate.execute("update from c_expense_loan_info set loan_money = 0 where id = " + emLoanInfo.getId());
|
|
|
- //实际报销金额
|
|
|
+ //全部还完loanMoney
|
|
|
+ jdbcTemplate.execute("update from c_expense_loan_info set return_money = " + loanMoney + " where id = " + emLoanInfo.getId());
|
|
|
jdbcTemplate.execute("update from c_expense_financial_reimbursement_info set fr_money_actual = " + difference + " where id = " + emFinancialReimbursementInfo.getId());
|
|
|
}
|
|
|
}
|
|
@@ -630,13 +642,6 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
|
|
|
//已审批支付审批进行金额统计
|
|
|
}
|
|
|
|
|
|
- break;
|
|
|
- case 4: //借款 TODO 借款与财务报销的抵消关联
|
|
|
- EMLoanInfo emLoanInfo = jdbcTemplate.query("select * from c_expense_loan_info where id = " + dataId, new BeanPropertyRowMapper<>(EMLoanInfo.class)).stream().findAny().orElse(null);
|
|
|
- if (emLoanInfo != null && emLoanInfo.getStatus().equals(2)) {
|
|
|
- //已审批借款审批进行金额统计
|
|
|
- }
|
|
|
-
|
|
|
break;
|
|
|
case 5: //采购 TODO 采购与经营预算关联
|
|
|
EMPurchaseInfo emPurchaseInfo = jdbcTemplate.query("select * from c_expense_purchase_info where id = " + dataId, new BeanPropertyRowMapper<>(EMPurchaseInfo.class)).stream().findAny().orElse(null);
|