|
@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
import com.qs.serve.common.framework.manager.AsyncFactory; |
|
|
import com.qs.serve.common.framework.manager.AsyncFactory; |
|
|
import com.qs.serve.common.framework.manager.AsyncManager; |
|
|
import com.qs.serve.common.framework.manager.AsyncManager; |
|
|
import com.qs.serve.common.model.dto.R; |
|
|
import com.qs.serve.common.model.dto.R; |
|
|
import com.qs.serve.common.util.AuthContextUtils; |
|
|
import com.qs.serve.common.util.*; |
|
|
import com.qs.serve.common.util.CollectionUtil; |
|
|
|
|
|
import com.qs.serve.common.util.CopierUtil; |
|
|
|
|
|
import com.qs.serve.common.util.SpringUtils; |
|
|
|
|
|
import com.qs.serve.modules.data.entity.DataAffairCommit; |
|
|
import com.qs.serve.modules.data.entity.DataAffairCommit; |
|
|
import com.qs.serve.modules.data.mapper.DataAffairCommitMapper; |
|
|
import com.qs.serve.modules.data.mapper.DataAffairCommitMapper; |
|
|
import com.qs.serve.modules.seeyon.entity.CtpAffair; |
|
|
import com.qs.serve.modules.seeyon.entity.CtpAffair; |
|
@ -29,10 +26,7 @@ import com.qs.serve.modules.tbs.service.TbsActivityPayConditionService; |
|
|
import com.qs.serve.modules.tbs.service.TbsActivityService; |
|
|
import com.qs.serve.modules.tbs.service.TbsActivityService; |
|
|
import com.qs.serve.modules.tbs.service.TbsCostApplyService; |
|
|
import com.qs.serve.modules.tbs.service.TbsCostApplyService; |
|
|
import com.qs.serve.modules.vtb.common.VtbVerificationState; |
|
|
import com.qs.serve.modules.vtb.common.VtbVerificationState; |
|
|
import com.qs.serve.modules.vtb.entity.VtbVerification; |
|
|
import com.qs.serve.modules.vtb.entity.*; |
|
|
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject; |
|
|
|
|
|
import com.qs.serve.modules.vtb.entity.VtbVerificationYard; |
|
|
|
|
|
import com.qs.serve.modules.vtb.entity.VtbVerificationYardItem; |
|
|
|
|
|
import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; |
|
|
import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; |
|
|
import com.qs.serve.task.TbsTask; |
|
|
import com.qs.serve.task.TbsTask; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.AllArgsConstructor; |
|
@ -63,6 +57,7 @@ public class VtbVerificationApplication { |
|
|
|
|
|
|
|
|
private VtbVerificationService vtbVerificationService; |
|
|
private VtbVerificationService vtbVerificationService; |
|
|
private VtbVerificationSubjectService vtbVerificationSubjectService; |
|
|
private VtbVerificationSubjectService vtbVerificationSubjectService; |
|
|
|
|
|
private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; |
|
|
private VtbVerificationYardService yardService; |
|
|
private VtbVerificationYardService yardService; |
|
|
private VtbVerificationYardItemService yardItemService; |
|
|
private VtbVerificationYardItemService yardItemService; |
|
|
private final TbsActivityPayConditionService activityPayConditionService; |
|
|
private final TbsActivityPayConditionService activityPayConditionService; |
|
@ -76,24 +71,12 @@ public class VtbVerificationApplication { |
|
|
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ |
|
|
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ |
|
|
VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId()); |
|
|
VtbVerification verification = vtbVerificationService.getById(affairCommit.getCostApplyId()); |
|
|
if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){ |
|
|
if(!verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){ |
|
|
return R.error("费用申请处于未非审批状态!"); |
|
|
Assert.throwEx("费用申请处于未非审批状态!"); |
|
|
} |
|
|
} |
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ |
|
|
List<VtbVerificationSubjectCenter> verificationSubjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(verification.getId()); |
|
|
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); |
|
|
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); |
|
|
for (VtbVerificationSubject verificationSubject : verificationSubjects) { |
|
|
//检测参数的金额
|
|
|
for (TbsAffairCommitBo.AffairSubjectLine subjectLine : affairCommit.getAffairSubjectLines()) { |
|
|
this.checkParamAmount(affairCommit, verificationSubjectCenterList, verificationSubjects); |
|
|
if(subjectLine.getSubjectId()==null||subjectLine.getAmount()==null){ |
|
|
|
|
|
return R.error("AffairSubjectLines参数错误"); |
|
|
|
|
|
} |
|
|
|
|
|
if(subjectLine.getSubjectId().equals(verificationSubject.getSubjectId())){ |
|
|
|
|
|
if(subjectLine.getAmount().compareTo(verificationSubject.getUsedAmountRecord())>0){ |
|
|
|
|
|
return R.error("科目["+verificationSubject.getSubjectName()+"]额度不足"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
boolean isBackCommit = affairCommit.getState()==2; |
|
|
boolean isBackCommit = affairCommit.getState()==2; |
|
|
R<String> result = seeYonService.commonCommit(affairCommit, TbsSeeYonConst.CostCheckConf.Code(),verification.getSyFormId()); |
|
|
R<String> result = seeYonService.commonCommit(affairCommit, TbsSeeYonConst.CostCheckConf.Code(),verification.getSyFormId()); |
|
|
if(result.getStatus()==200){ |
|
|
if(result.getStatus()==200){ |
|
@ -124,6 +107,61 @@ public class VtbVerificationApplication { |
|
|
return R.error("远程调用失败"); |
|
|
return R.error("远程调用失败"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 检查参数的金额 |
|
|
|
|
|
* @param affairCommit |
|
|
|
|
|
* @param verificationSubjectCenterList |
|
|
|
|
|
* @param verificationSubjects |
|
|
|
|
|
*/ |
|
|
|
|
|
private void checkParamAmount(TbsAffairCommitBo affairCommit, List<VtbVerificationSubjectCenter> verificationSubjectCenterList, List<VtbVerificationSubject> verificationSubjects) { |
|
|
|
|
|
boolean isChangeCommit = verificationSubjectCenterList.size()>0; |
|
|
|
|
|
boolean isAutoCommit = verificationSubjects.size()>0; |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ |
|
|
|
|
|
if(isChangeCommit){ |
|
|
|
|
|
Assert.throwEx("当前核销不支持科目维度修改金额"); |
|
|
|
|
|
} |
|
|
|
|
|
for (VtbVerificationSubject verificationSubject : verificationSubjects) { |
|
|
|
|
|
for (TbsAffairCommitBo.AffairSubjectLine subjectLine : affairCommit.getAffairSubjectLines()) { |
|
|
|
|
|
if(subjectLine.getSubjectId()==null||subjectLine.getAmount()==null){ |
|
|
|
|
|
Assert.throwEx("AffairSubjectLines参数错误"); |
|
|
|
|
|
} |
|
|
|
|
|
if(subjectLine.getSubjectId().equals(verificationSubject.getSubjectId())){ |
|
|
|
|
|
if(subjectLine.getAmount().compareTo(verificationSubject.getUsedAmountRecord())>0){ |
|
|
|
|
|
Assert.throwEx("科目["+verificationSubject.getSubjectName()+"]额度不足"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectCenterLines())){ |
|
|
|
|
|
if(isAutoCommit){ |
|
|
|
|
|
Assert.throwEx("当前核销不支持成本中心维度修改金额"); |
|
|
|
|
|
} |
|
|
|
|
|
for (TbsAffairCommitBo.AffairSubjectCenterLine subjectCenterLine : affairCommit.getAffairSubjectCenterLines()) { |
|
|
|
|
|
VtbVerificationSubjectCenter currSubjectCenter = null; |
|
|
|
|
|
BigDecimal changeAmt = null; |
|
|
|
|
|
for (VtbVerificationSubjectCenter subjectCenter : verificationSubjectCenterList) { |
|
|
|
|
|
if(subjectCenterLine.getSubjectId().equals(subjectCenter.getSubjectId())){ |
|
|
|
|
|
currSubjectCenter = subjectCenter; |
|
|
|
|
|
for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : subjectCenterLine.getCenterItemLines()) { |
|
|
|
|
|
if(subjectCenter.getActivityCenterId().equals(itemLine.getActivityCenterId())){ |
|
|
|
|
|
changeAmt = itemLine.getCenterAmount(); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(currSubjectCenter==null){ |
|
|
|
|
|
Assert.throwEx("当前核销不支持成本中心维度修改金额"); |
|
|
|
|
|
} |
|
|
|
|
|
if(changeAmt!=null && changeAmt.compareTo(currSubjectCenter.getUsedAmountRecord())>0){ |
|
|
|
|
|
Assert.throwEx("["+currSubjectCenter.getSubjectName()+"-"+currSubjectCenter.getCenterName()+"]额度不足"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@NotNull |
|
|
@NotNull |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public R commitAffairSuccess(TbsAffairCommitBo affairCommit, VtbVerification verification, boolean isBackCommit, String flag) { |
|
|
public R commitAffairSuccess(TbsAffairCommitBo affairCommit, VtbVerification verification, boolean isBackCommit, String flag) { |
|
@ -182,6 +220,9 @@ public class VtbVerificationApplication { |
|
|
//非终止或者驳回,保存审批线金额明细
|
|
|
//非终止或者驳回,保存审批线金额明细
|
|
|
BigDecimal totalAmount = BigDecimal.ZERO; |
|
|
BigDecimal totalAmount = BigDecimal.ZERO; |
|
|
if(!isStop){ |
|
|
if(!isStop){ |
|
|
|
|
|
List<VtbVerificationSubjectCenter> subjectCenters = vtbVerificationSubjectCenterService.listByVerificationId(verification.getId()); |
|
|
|
|
|
//isCenterCommit 代表自定义成本中心维度递交
|
|
|
|
|
|
boolean isCenterCommit = subjectCenters.size()>0; |
|
|
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); |
|
|
List<VtbVerificationSubject> verificationSubjects = vtbVerificationSubjectService.listByVerificationId(verification.getId()); |
|
|
List<VtbVerificationYardItem> yardItemList = new ArrayList<>(); |
|
|
List<VtbVerificationYardItem> yardItemList = new ArrayList<>(); |
|
|
List<VtbVerificationSubject> verSubject4Update = new ArrayList<>(); |
|
|
List<VtbVerificationSubject> verSubject4Update = new ArrayList<>(); |
|
@ -189,13 +230,29 @@ public class VtbVerificationApplication { |
|
|
BigDecimal changeAmount = null; |
|
|
BigDecimal changeAmount = null; |
|
|
Integer countSession = null; |
|
|
Integer countSession = null; |
|
|
Integer countPerson = null; |
|
|
Integer countPerson = null; |
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ |
|
|
if(isCenterCommit){ |
|
|
for (TbsAffairCommitBo.AffairSubjectLine affairSubjectLine : affairCommit.getAffairSubjectLines()) { |
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectCenterLines())){ |
|
|
if(currVs.getSubjectId().equals(affairSubjectLine.getSubjectId())){ |
|
|
for (TbsAffairCommitBo.AffairSubjectCenterLine centerLine : affairCommit.getAffairSubjectCenterLines()) { |
|
|
changeAmount = affairSubjectLine.getAmount(); |
|
|
if(currVs.getSubjectId().equals(centerLine.getSubjectId())){ |
|
|
countSession = affairSubjectLine.getCountSession(); |
|
|
changeAmount = BigDecimal.ZERO; |
|
|
countPerson = affairSubjectLine.getCountPerson(); |
|
|
for (TbsAffairCommitBo.AffairSubjectCenterItemLine itemLine : centerLine.getCenterItemLines()) { |
|
|
break; |
|
|
changeAmount = changeAmount.add(itemLine.getCenterAmount()); |
|
|
|
|
|
} |
|
|
|
|
|
countSession = centerLine.getCountSession(); |
|
|
|
|
|
countPerson = centerLine.getCountPerson(); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else { |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ |
|
|
|
|
|
for (TbsAffairCommitBo.AffairSubjectLine affairSubjectLine : affairCommit.getAffairSubjectLines()) { |
|
|
|
|
|
if(currVs.getSubjectId().equals(affairSubjectLine.getSubjectId())){ |
|
|
|
|
|
changeAmount = affairSubjectLine.getAmount(); |
|
|
|
|
|
countSession = affairSubjectLine.getCountSession(); |
|
|
|
|
|
countPerson = affairSubjectLine.getCountPerson(); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|