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. 107
      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() {
@Override
public void run() {
if(DevEnvironmentConfig.isDev()){
System.out.println(JsonUtil.objectToJson(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
* @return
*/
//@PostMapping("/testChangeAmt")
@PostMapping("/testChangeAmt")
public R<?> testChangeAmt(@RequestBody TbsAffairCommitBo param){
TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class);
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
* @since 2023-08-03
* @since 2023-08-04
*/
@Data
@TableName("tbs_activity_subject_yarn")
@ -31,7 +31,9 @@ public class TbsActivitySubjectYarn implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/** 审批id */
/** OA的审批ID */
@NotBlank(message = "OA的审批ID不能为空")
@Length(max = 64,message = "OA的审批ID长度不能超过64字")
private String checkId;
/** 审批人id */
@ -49,14 +51,38 @@ public class TbsActivitySubjectYarn implements Serializable {
@Length(max = 255,message = "审批人长度不能超过255字")
private String userName;
/** OA岗位 */
@Length(max = 255,message = "OA岗位长度不能超过255字")
private String userHrInfo;
/** 费用申请id */
@NotNull(message = "费用申请id不能为空")
private Long costApplyId;
/** 费用申请编码 */
@NotBlank(message = "费用申请编码不能为空")
@Length(max = 255,message = "费用申请编码长度不能超过255字")
private String costApplyCode;
/** 费用申请编码 */
@NotBlank(message = "费用申请编码不能为空")
@Length(max = 255,message = "费用申请编码长度不能超过255字")
private String costApplyTitle;
/** 活动id */
@NotNull(message = "活动id不能为空")
private Long activityId;
/** 活动编码 */
@NotBlank(message = "活动编码不能为空")
@Length(max = 255,message = "活动编码长度不能超过255字")
private String activityCode;
/** 活动标题 */
@NotBlank(message = "活动标题不能为空")
@Length(max = 255,message = "活动标题长度不能超过255字")
private String activityTitle;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;
@ -74,6 +100,12 @@ public class TbsActivitySubjectYarn implements Serializable {
/** 原费用额度 */
private BigDecimal orgAmount;
/** 原场次 */
private Integer orgCountSession;
/** 原人数 */
private Integer orgCountPerson;
/** 费用额度 */
@NotNull(message = "费用额度不能为空")
private BigDecimal amount;
@ -86,6 +118,10 @@ public class TbsActivitySubjectYarn implements Serializable {
@NotNull(message = "人数不能为空")
private Integer countPerson;
/** 原因 */
@Length(max = 255,message = "备注长度不能超过255字")
private String reason;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
@ -124,15 +160,23 @@ public class TbsActivitySubjectYarn implements Serializable {
public static TbsActivitySubjectYarn toNewObject(TbsActivitySubjectYarn source){
TbsActivitySubjectYarn activitySubjectYarn = new TbsActivitySubjectYarn();
activitySubjectYarn.setId(source.getId());
activitySubjectYarn.setCheckId(source.getCheckId());
activitySubjectYarn.setUserId(source.getUserId());
activitySubjectYarn.setUserCode(source.getUserCode());
activitySubjectYarn.setUserName(source.getUserName());
activitySubjectYarn.setUserHrInfo(source.getUserHrInfo());
activitySubjectYarn.setCostApplyId(source.getCostApplyId());
activitySubjectYarn.setCostApplyCode(source.getCostApplyCode());
activitySubjectYarn.setCostApplyTitle(source.getCostApplyTitle());
activitySubjectYarn.setActivityId(source.getActivityId());
activitySubjectYarn.setActivityCode(source.getActivityCode());
activitySubjectYarn.setActivityTitle(source.getActivityTitle());
activitySubjectYarn.setSubjectId(source.getSubjectId());
activitySubjectYarn.setSubjectCode(source.getSubjectCode());
activitySubjectYarn.setSubjectName(source.getSubjectName());
activitySubjectYarn.setOrgAmount(source.getOrgAmount());
activitySubjectYarn.setOrgCountSession(source.getOrgCountSession());
activitySubjectYarn.setOrgCountPerson(source.getOrgCountPerson());
activitySubjectYarn.setAmount(source.getAmount());
activitySubjectYarn.setCountSession(source.getCountSession());
activitySubjectYarn.setCountPerson(source.getCountPerson());

107
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 TbsActivityMapper tbsActivityMapper;
private final TbsActivitySubjectYarnMapper tbsActivitySubjectYarnMapper;
private final SysUserMapper userMapper;
private final TbsActivitySlottingFeeMapper activitySlottingFeeMapper;
private final TbsBudgetLogMapper tbsBudgetLogMapper;
@ -227,12 +228,12 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
Long targetId = Long.parseLong(this.getTargetId(param));
// 更新金额
TbsCostApply apply = new TbsCostApply();
//BigDecimal totalApply = checkToChangeAmount(param);
BigDecimal totalApply = checkToChangeAmount(param);
apply.setId(targetId);
// if(totalApply!=null){
// apply.setTotalActivityAmount(totalApply);
// apply.setEditAmountFlag(1);
// }
if(totalApply!=null){
apply.setTotalActivityAmount(totalApply);
apply.setEditAmountFlag(1);
}
apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode());
costApplyService.updateById(apply);
TbsCostApply costApply = costApplyService.getById(targetId);
@ -254,14 +255,17 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or()
.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode());
});
//设置为回滚完成,防止出现多次查询
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw);
budgetLogList.forEach(bl->{
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2);
});
tbsBudgetLogService.updateBatchById(budgetLogList);
//移除旧预算占用,即添预算
budgetLogList.forEach(bl->{
bl.setId(null);
bl.setOptType(BudgetLogOptFlag.State_5.getCode());
bl.setAmount(bl.getAmount().negate());
//标记已完成
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2);
bl.setCreateBy(null);
bl.setCreateTime(null);
bl.setUpdateTime(null);
@ -321,8 +325,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
}
TbsBudgetLog budgetLog = budgetCostItem.toBudgetLog(
costApply,
//BudgetLogOptFlag.State_6,
BudgetLogOptFlag.State_7,
BudgetLogOptFlag.State_6,
//BudgetLogOptFlag.State_7,
currentCenterGoods.getCenterGoodsAmount(),
sysUser,
budgetCode
@ -333,11 +337,11 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
}
public BigDecimal checkToChangeAmount(TbsAffairCommitBo param) {
SysUser sysUser = sysUserService.getById( AuthContextUtils.getSysUserId());
Long targetId = Long.parseLong(this.getTargetId(param));
TbsCostApply costApply = costApplyService.getById(targetId);
boolean noChanged = costApply.getEditAmountFlag().equals(0);
if(CollectionUtil.isNotEmpty(param.getAffairSubjectLines())){
BigDecimal n100 = new BigDecimal("100");
QueryWrapper comm_qw = new QueryWrapper();
comm_qw.eq("cost_apply_id", targetId);
List<TbsActivity> activityList = tbsActivityMapper.selectList(comm_qw);
@ -357,30 +361,88 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
//初始化重新计算
activityList.forEach(a->a.setTotalAmount(BigDecimal.ZERO));
//先计算科目的费用
List<TbsActivitySubjectYarn> subjectYarnList = new ArrayList<>();
for (TbsActivitySubject subject : activitySubjectList) {
for (TbsAffairCommitBo.AffairSubjectLine subjectLine : param.getAffairSubjectLines()) {
if(subjectLine.getAmount().compareTo(BigDecimal.ZERO)<=0){
continue;
}
if(subjectLine.getSubjectId().equals(subject.getId())){
BigDecimal subjectAmount = subjectLine.getAmount();
//重新计算活动金额
TbsActivity currActivity = new TbsActivity();
for (TbsActivity activity : activityList) {
if(subject.getActivityId().equals(activity.getId())){
activity.setTotalAmount(activity.getTotalAmount().add(subjectAmount));
currActivity = activity;
}
}
//保持流程记录
TbsActivitySubjectYarn subjectYarn = this.createActivitySubjectYarn(param, sysUser, costApply, subject, subjectLine, currActivity);
tbsActivitySubjectYarnMapper.insert(subjectYarn);
if(noChanged){
//只对第一次赋值
subject.setOrgAmount(subject.getAmount());
}
subject.setAmount(subjectAmount);
subject.setCountPerson(subjectLine.getCountPerson());
subject.setCountSession(subjectLine.getCountSession());
//更新科目
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) {
boolean eqActivity = activityCenter.getActivityId().equals(subject.getActivityId());
boolean eqSubject = activityCenter.getSubjectId().equals(subject.getSubjectId());
@ -409,7 +471,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
}
centerGoods.setCenterAmount(centerAmt);
BigDecimal centerGoodAmt = null;
if(i+1==activityCenterGoodsList.size()){
if(i+1== activityCenterGoodsList.size()){
centerGoodAmt = tmpCenterAmt;
}else {
centerGoodAmt = centerAmt.multiply(centerGoods.getCenterGoodsRate()).divide(n100,2,RoundingMode.HALF_DOWN);
@ -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

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

Loading…
Cancel
Save