Browse Source

审批金额修改记录表

v1.0
Yen 2 years ago
parent
commit
0e6e39d1ea
  1. 3
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  2. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  3. 48
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java
  4. 105
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  5. 3
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

3
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -38,9 +38,6 @@ public class AsyncFactory {
return new TimerTask() { return new TimerTask() {
@Override @Override
public void run() { public void run() {
if(DevEnvironmentConfig.isDev()){
System.out.println(JsonUtil.objectToJson(operationLog));
}
SpringUtils.getBean(SysOperationLogMapper.class).saveLog(operationLog); SpringUtils.getBean(SysOperationLogMapper.class).saveLog(operationLog);
} }
}; };

2
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -80,7 +80,7 @@ public class TbsCostApplyController {
* @param param * @param param
* @return * @return
*/ */
//@PostMapping("/testChangeAmt") @PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){ public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class); TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class);
impl.doFinished(param); impl.doFinished(param);

48
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java

@ -19,7 +19,7 @@ import javax.validation.constraints.NotBlank;
/** /**
* 活动科目审批线 实体类 * 活动科目审批线 实体类
* @author YenHex * @author YenHex
* @since 2023-08-03 * @since 2023-08-04
*/ */
@Data @Data
@TableName("tbs_activity_subject_yarn") @TableName("tbs_activity_subject_yarn")
@ -31,7 +31,9 @@ public class TbsActivitySubjectYarn implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 审批id */ /** OA的审批ID */
@NotBlank(message = "OA的审批ID不能为空")
@Length(max = 64,message = "OA的审批ID长度不能超过64字")
private String checkId; private String checkId;
/** 审批人id */ /** 审批人id */
@ -49,14 +51,38 @@ public class TbsActivitySubjectYarn implements Serializable {
@Length(max = 255,message = "审批人长度不能超过255字") @Length(max = 255,message = "审批人长度不能超过255字")
private String userName; private String userName;
/** OA岗位 */
@Length(max = 255,message = "OA岗位长度不能超过255字")
private String userHrInfo;
/** 费用申请id */ /** 费用申请id */
@NotNull(message = "费用申请id不能为空") @NotNull(message = "费用申请id不能为空")
private Long costApplyId; private Long costApplyId;
/** 费用申请编码 */
@NotBlank(message = "费用申请编码不能为空")
@Length(max = 255,message = "费用申请编码长度不能超过255字")
private String costApplyCode;
/** 费用申请编码 */
@NotBlank(message = "费用申请编码不能为空")
@Length(max = 255,message = "费用申请编码长度不能超过255字")
private String costApplyTitle;
/** 活动id */ /** 活动id */
@NotNull(message = "活动id不能为空") @NotNull(message = "活动id不能为空")
private Long activityId; private Long activityId;
/** 活动编码 */
@NotBlank(message = "活动编码不能为空")
@Length(max = 255,message = "活动编码长度不能超过255字")
private String activityCode;
/** 活动标题 */
@NotBlank(message = "活动标题不能为空")
@Length(max = 255,message = "活动标题长度不能超过255字")
private String activityTitle;
/** 科目id */ /** 科目id */
@NotNull(message = "科目id不能为空") @NotNull(message = "科目id不能为空")
private Long subjectId; private Long subjectId;
@ -74,6 +100,12 @@ public class TbsActivitySubjectYarn implements Serializable {
/** 原费用额度 */ /** 原费用额度 */
private BigDecimal orgAmount; private BigDecimal orgAmount;
/** 原场次 */
private Integer orgCountSession;
/** 原人数 */
private Integer orgCountPerson;
/** 费用额度 */ /** 费用额度 */
@NotNull(message = "费用额度不能为空") @NotNull(message = "费用额度不能为空")
private BigDecimal amount; private BigDecimal amount;
@ -86,6 +118,10 @@ public class TbsActivitySubjectYarn implements Serializable {
@NotNull(message = "人数不能为空") @NotNull(message = "人数不能为空")
private Integer countPerson; private Integer countPerson;
/** 原因 */
@Length(max = 255,message = "备注长度不能超过255字")
private String reason;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;
@ -124,15 +160,23 @@ public class TbsActivitySubjectYarn implements Serializable {
public static TbsActivitySubjectYarn toNewObject(TbsActivitySubjectYarn source){ public static TbsActivitySubjectYarn toNewObject(TbsActivitySubjectYarn source){
TbsActivitySubjectYarn activitySubjectYarn = new TbsActivitySubjectYarn(); TbsActivitySubjectYarn activitySubjectYarn = new TbsActivitySubjectYarn();
activitySubjectYarn.setId(source.getId()); activitySubjectYarn.setId(source.getId());
activitySubjectYarn.setCheckId(source.getCheckId());
activitySubjectYarn.setUserId(source.getUserId()); activitySubjectYarn.setUserId(source.getUserId());
activitySubjectYarn.setUserCode(source.getUserCode()); activitySubjectYarn.setUserCode(source.getUserCode());
activitySubjectYarn.setUserName(source.getUserName()); activitySubjectYarn.setUserName(source.getUserName());
activitySubjectYarn.setUserHrInfo(source.getUserHrInfo());
activitySubjectYarn.setCostApplyId(source.getCostApplyId()); activitySubjectYarn.setCostApplyId(source.getCostApplyId());
activitySubjectYarn.setCostApplyCode(source.getCostApplyCode());
activitySubjectYarn.setCostApplyTitle(source.getCostApplyTitle());
activitySubjectYarn.setActivityId(source.getActivityId()); activitySubjectYarn.setActivityId(source.getActivityId());
activitySubjectYarn.setActivityCode(source.getActivityCode());
activitySubjectYarn.setActivityTitle(source.getActivityTitle());
activitySubjectYarn.setSubjectId(source.getSubjectId()); activitySubjectYarn.setSubjectId(source.getSubjectId());
activitySubjectYarn.setSubjectCode(source.getSubjectCode()); activitySubjectYarn.setSubjectCode(source.getSubjectCode());
activitySubjectYarn.setSubjectName(source.getSubjectName()); activitySubjectYarn.setSubjectName(source.getSubjectName());
activitySubjectYarn.setOrgAmount(source.getOrgAmount()); activitySubjectYarn.setOrgAmount(source.getOrgAmount());
activitySubjectYarn.setOrgCountSession(source.getOrgCountSession());
activitySubjectYarn.setOrgCountPerson(source.getOrgCountPerson());
activitySubjectYarn.setAmount(source.getAmount()); activitySubjectYarn.setAmount(source.getAmount());
activitySubjectYarn.setCountSession(source.getCountSession()); activitySubjectYarn.setCountSession(source.getCountSession());
activitySubjectYarn.setCountPerson(source.getCountPerson()); activitySubjectYarn.setCountPerson(source.getCountPerson());

105
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -54,6 +54,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
private final TbsCostApplyService costApplyService; private final TbsCostApplyService costApplyService;
private final TbsActivityMapper tbsActivityMapper; private final TbsActivityMapper tbsActivityMapper;
private final TbsActivitySubjectYarnMapper tbsActivitySubjectYarnMapper;
private final SysUserMapper userMapper; private final SysUserMapper userMapper;
private final TbsActivitySlottingFeeMapper activitySlottingFeeMapper; private final TbsActivitySlottingFeeMapper activitySlottingFeeMapper;
private final TbsBudgetLogMapper tbsBudgetLogMapper; private final TbsBudgetLogMapper tbsBudgetLogMapper;
@ -227,12 +228,12 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
Long targetId = Long.parseLong(this.getTargetId(param)); Long targetId = Long.parseLong(this.getTargetId(param));
// 更新金额 // 更新金额
TbsCostApply apply = new TbsCostApply(); TbsCostApply apply = new TbsCostApply();
//BigDecimal totalApply = checkToChangeAmount(param); BigDecimal totalApply = checkToChangeAmount(param);
apply.setId(targetId); apply.setId(targetId);
// if(totalApply!=null){ if(totalApply!=null){
// apply.setTotalActivityAmount(totalApply); apply.setTotalActivityAmount(totalApply);
// apply.setEditAmountFlag(1); apply.setEditAmountFlag(1);
// } }
apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode());
costApplyService.updateById(apply); costApplyService.updateById(apply);
TbsCostApply costApply = costApplyService.getById(targetId); TbsCostApply costApply = costApplyService.getById(targetId);
@ -254,14 +255,17 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or()
.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); .eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode());
}); });
//设置为回滚完成,防止出现多次查询
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw); List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw);
budgetLogList.forEach(bl->{
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2);
});
tbsBudgetLogService.updateBatchById(budgetLogList);
//移除旧预算占用,即添预算 //移除旧预算占用,即添预算
budgetLogList.forEach(bl->{ budgetLogList.forEach(bl->{
bl.setId(null); bl.setId(null);
bl.setOptType(BudgetLogOptFlag.State_5.getCode()); bl.setOptType(BudgetLogOptFlag.State_5.getCode());
bl.setAmount(bl.getAmount().negate()); bl.setAmount(bl.getAmount().negate());
//标记已完成
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2);
bl.setCreateBy(null); bl.setCreateBy(null);
bl.setCreateTime(null); bl.setCreateTime(null);
bl.setUpdateTime(null); bl.setUpdateTime(null);
@ -321,8 +325,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
} }
TbsBudgetLog budgetLog = budgetCostItem.toBudgetLog( TbsBudgetLog budgetLog = budgetCostItem.toBudgetLog(
costApply, costApply,
//BudgetLogOptFlag.State_6, BudgetLogOptFlag.State_6,
BudgetLogOptFlag.State_7, //BudgetLogOptFlag.State_7,
currentCenterGoods.getCenterGoodsAmount(), currentCenterGoods.getCenterGoodsAmount(),
sysUser, sysUser,
budgetCode budgetCode
@ -333,11 +337,11 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
} }
public BigDecimal checkToChangeAmount(TbsAffairCommitBo param) { public BigDecimal checkToChangeAmount(TbsAffairCommitBo param) {
SysUser sysUser = sysUserService.getById( AuthContextUtils.getSysUserId());
Long targetId = Long.parseLong(this.getTargetId(param)); Long targetId = Long.parseLong(this.getTargetId(param));
TbsCostApply costApply = costApplyService.getById(targetId); TbsCostApply costApply = costApplyService.getById(targetId);
boolean noChanged = costApply.getEditAmountFlag().equals(0); boolean noChanged = costApply.getEditAmountFlag().equals(0);
if(CollectionUtil.isNotEmpty(param.getAffairSubjectLines())){ if(CollectionUtil.isNotEmpty(param.getAffairSubjectLines())){
BigDecimal n100 = new BigDecimal("100");
QueryWrapper comm_qw = new QueryWrapper(); QueryWrapper comm_qw = new QueryWrapper();
comm_qw.eq("cost_apply_id", targetId); comm_qw.eq("cost_apply_id", targetId);
List<TbsActivity> activityList = tbsActivityMapper.selectList(comm_qw); List<TbsActivity> activityList = tbsActivityMapper.selectList(comm_qw);
@ -357,30 +361,88 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
//初始化重新计算 //初始化重新计算
activityList.forEach(a->a.setTotalAmount(BigDecimal.ZERO)); activityList.forEach(a->a.setTotalAmount(BigDecimal.ZERO));
//先计算科目的费用 //先计算科目的费用
List<TbsActivitySubjectYarn> subjectYarnList = new ArrayList<>();
for (TbsActivitySubject subject : activitySubjectList) { for (TbsActivitySubject subject : activitySubjectList) {
for (TbsAffairCommitBo.AffairSubjectLine subjectLine : param.getAffairSubjectLines()) { for (TbsAffairCommitBo.AffairSubjectLine subjectLine : param.getAffairSubjectLines()) {
if(subjectLine.getAmount().compareTo(BigDecimal.ZERO)<=0){
continue;
}
if(subjectLine.getSubjectId().equals(subject.getId())){ if(subjectLine.getSubjectId().equals(subject.getId())){
BigDecimal subjectAmount = subjectLine.getAmount(); BigDecimal subjectAmount = subjectLine.getAmount();
//重新计算活动金额 //重新计算活动金额
TbsActivity currActivity = new TbsActivity();
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
if(subject.getActivityId().equals(activity.getId())){ if(subject.getActivityId().equals(activity.getId())){
activity.setTotalAmount(activity.getTotalAmount().add(subjectAmount)); activity.setTotalAmount(activity.getTotalAmount().add(subjectAmount));
currActivity = activity;
} }
} }
//保持流程记录
TbsActivitySubjectYarn subjectYarn = this.createActivitySubjectYarn(param, sysUser, costApply, subject, subjectLine, currActivity);
tbsActivitySubjectYarnMapper.insert(subjectYarn);
if(noChanged){ if(noChanged){
//只对第一次赋值 //只对第一次赋值
subject.setOrgAmount(subject.getAmount()); subject.setOrgAmount(subject.getAmount());
} }
subject.setAmount(subjectAmount); subject.setAmount(subjectAmount);
subject.setCountPerson(subjectLine.getCountPerson()); subject.setCountPerson(subjectLine.getCountPerson());
subject.setCountSession(subjectLine.getCountSession()); subject.setCountSession(subjectLine.getCountSession());
//更新科目 //更新科目
activitySubjectMapper.updateById(subject); activitySubjectMapper.updateById(subject);
//计算科目下的成本中心 //计算科目下的成本中心
this.changeActivityCenterGoodsAmt(noChanged, activityCenterList, activityCenterGoodsList, subject, subjectAmount);
break;
}
}
}
//更新活动
BigDecimal total = BigDecimal.ZERO;
for (TbsActivity activity : activityList) {
tbsActivityMapper.updateById(activity);
total = total.add(activity.getTotalAmount());
}
//更新活动的商品
tbsActivityCenterGoodsService.updateBatchById(activityCenterGoodsList);
return total;
}
return null;
}
@NotNull
private TbsActivitySubjectYarn createActivitySubjectYarn(TbsAffairCommitBo param, SysUser sysUser, TbsCostApply costApply, TbsActivitySubject subject, TbsAffairCommitBo.AffairSubjectLine subjectLine, TbsActivity currActivity) {
TbsActivitySubjectYarn subjectYarn = new TbsActivitySubjectYarn();
subjectYarn.setCheckId(param.getAffairId());
subjectYarn.setUserId(sysUser.getId());
subjectYarn.setUserCode(sysUser.getCode());
subjectYarn.setUserName(sysUser.getName());
subjectYarn.setUserHrInfo(sysUser.getHrSystemInfo());
subjectYarn.setCostApplyId(costApply.getId());
subjectYarn.setCostApplyCode(costApply.getCode());
subjectYarn.setCostApplyTitle(costApply.getChargeTheme());
subjectYarn.setActivityId(currActivity.getId());
subjectYarn.setActivityCode(currActivity.getActivityCode());
subjectYarn.setActivityTitle(currActivity.getActTitle());
subjectYarn.setSubjectId(subject.getSubjectId());
subjectYarn.setSubjectCode(subject.getSubjectCode());
subjectYarn.setSubjectName(subject.getSubjectName());
subjectYarn.setOrgAmount(subject.getAmount());
subjectYarn.setOrgCountSession(subject.getCountSession());
subjectYarn.setOrgCountPerson(subject.getCountSession());
subjectYarn.setAmount(subjectLine.getAmount());
subjectYarn.setCountSession(subjectLine.getCountSession());
subjectYarn.setCountPerson(subjectLine.getCountPerson());
subjectYarn.setReason(param.getCaseRemark());
return subjectYarn;
}
/**
* 修改ActivityCenterGoods金额
* @param noChanged
* @param activityCenterList
* @param activityCenterGoodsList
* @param subject
* @param subjectAmount
*/
private void changeActivityCenterGoodsAmt(boolean noChanged, List<TbsActivityCenter> activityCenterList, List<TbsActivityCenterGoods> activityCenterGoodsList, TbsActivitySubject subject, BigDecimal subjectAmount) {
BigDecimal n100 = new BigDecimal("100");
for (TbsActivityCenter activityCenter : activityCenterList) { for (TbsActivityCenter activityCenter : activityCenterList) {
boolean eqActivity = activityCenter.getActivityId().equals(subject.getActivityId()); boolean eqActivity = activityCenter.getActivityId().equals(subject.getActivityId());
boolean eqSubject = activityCenter.getSubjectId().equals(subject.getSubjectId()); boolean eqSubject = activityCenter.getSubjectId().equals(subject.getSubjectId());
@ -420,21 +482,6 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
} }
} }
} }
break;
}
}
}
//更新活动
BigDecimal total = BigDecimal.ZERO;
for (TbsActivity activity : activityList) {
tbsActivityMapper.updateById(activity);
total = total.add(activity.getTotalAmount());
}
//更新活动的商品
tbsActivityCenterGoodsService.updateBatchById(activityCenterGoodsList);
return total;
}
return null;
} }
@Override @Override

3
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -969,6 +969,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
updCost.setTotalActivityUsedAmount(totalCostApplyUsed); updCost.setTotalActivityUsedAmount(totalCostApplyUsed);
if(costApply.getTotalActivityAmount().compareTo(totalCostApplyUsed)<=0){ if(costApply.getTotalActivityAmount().compareTo(totalCostApplyUsed)<=0){
//金额是否用完 //金额是否用完
log.info("费用申请完成:{} , 金额用完",costApply.getCode());
updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode()); updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode());
updCost.setPassTime(LocalDateTime.now()); updCost.setPassTime(LocalDateTime.now());
}else if (costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){ }else if (costApply.getContractFlag()!=null&&costApply.getContractFlag().equals(1)){
@ -978,6 +979,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
lambdaQueryWrapper.ne(TbsActivityPayCondition::getFinishedFlag,1); lambdaQueryWrapper.ne(TbsActivityPayCondition::getFinishedFlag,1);
long count = activityPayConditionService.count(lambdaQueryWrapper); long count = activityPayConditionService.count(lambdaQueryWrapper);
if(count<1){ if(count<1){
log.info("费用申请完成:{} , 所有协议类完成",costApply.getCode());
updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode()); updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode());
updCost.setPassTime(LocalDateTime.now()); updCost.setPassTime(LocalDateTime.now());
} }
@ -993,6 +995,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
} }
} }
if(updateChargeState){ if(updateChargeState){
log.info("费用申请完成:{} , 所有活动完成",costApply.getCode());
updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode()); updCost.setChargeState(TbsCostApplyState.State_3_finished.getCode());
updCost.setPassTime(LocalDateTime.now()); updCost.setPassTime(LocalDateTime.now());
} }

Loading…
Cancel
Save