Yen 2 years ago
parent
commit
6b412c0494
  1. 168
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java
  2. 88
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  3. 27
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java
  4. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java
  5. 8
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  6. 8
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java
  7. 14
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  8. 20
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

168
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java

@ -0,0 +1,168 @@
package com.qs.serve.modules.tbs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qs.serve.common.model.annotation.LimitSubmit;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityTemplate;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.TbsCostContract;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyActivityBo;
import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyBo;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
/**
* 预算 费用申请(审批)
* @author YenHex
* @since 2022-11-08
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("tbs/costApply")
public class TbsCostApplyCheckController {
// private TbsCostApplyPart1Service costApplyPart1Service;
// private TbsCostContractService costContractService;
private TbsCostApplyService tbsCostApplyService;
// private TbsActivityService tbsActivityService;
// private TbsActivityTemplateService tbsActivityTemplateService;
// private final TbsActivityGoodsService activityGoodsService;
// private final TbsActivitySubjectService activitySubjectService;
// private final TbsActivityCenterService activityCenterService;
// private final TbsActivityCenterGoodsService activityCenterGoodsService;
// private final TbsActivityChannelService activityChannelService;
// private final TbsActivityChannelPointService activityChannelPointService;
// private TbsBudgetLogService tbsBudgetLogService;
// private BmsSupplierService bmsSupplierService;
// private SysUserService sysUserService;
// private SeeYonRequestService seeYonService;
// private TbsBudgetApplicationService budgetApplicationService;
// private SysPostUserService postUserService;
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
// private TbsBudgetMatchApplication tbsBudgetMatchApplication;
/**
* 统计即将逾期
* @return
*/
@GetMapping("myCountOverdue4Home")
public R<Long> countOverdue(){
long data = tbsCostApplyService.selectCountOverdueState(AuthContextUtils.getSysUserId());
return R.ok(data);
}
/**
* 提交费用申请
* @param id
* @return
*/
@LimitSubmit
@PostMapping("/commit/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:costApply:update')")
public R<?> commit(@PathVariable("id") String id){
tbsCostApplyService.commitApply(id);
return R.ok();
}
/**
* 审批列表(用于详情页)
* @param costApplyId
* @return
*/
@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageAffair(String costApplyId){
return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId);
}
/**
* 审批列表(翻页)
* @param param
* @return
*/
@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){
return tbsCostApplyOperationServiceImpl.pageMemberAffair(param);
}
/**
* 提交审批节点
* @return
*/
@LimitSubmit
@PostMapping("/commitAffair")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit);
}
/**
* 补偿按钮
* @param id
* @return
*/
@LimitSubmit
@PostMapping("/compensate/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
public R<?> compensate(@PathVariable("id") String id){
return tbsCostApplyOperationServiceImpl.runCompensate(id);
}
/**
* 加签
* @param param
* @return
*/
@LimitSubmit
@PostMapping("/addNode")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<String> addNode(@RequestBody CtpAddNodeParam param){
return tbsCostApplyOperationServiceImpl.addNode(param);
}
/**
* 获取未完成审批统计(个人)
* @return
*/
@PostMapping("/getAffairUnfinished")
public R<Long> getUnfinished(){
return tbsCostApplyOperationServiceImpl.getUnfinished();
}
}

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

@ -85,16 +85,6 @@ public class TbsCostApplyController {
return R.ok();
}
/**
* 统计即将逾期
* @return
*/
@GetMapping("myCountOverdue4Home")
public R<Long> countOverdue(){
long data = tbsCostApplyService.selectCountOverdueState(AuthContextUtils.getSysUserId());
return R.ok(data);
}
/**
* 预览
* @param id
@ -208,20 +198,6 @@ public class TbsCostApplyController {
return R.ok(tbsCostApply);
}
/**
* 提交费用申请
* @param id
* @return
*/
@LimitSubmit
@PostMapping("/commit/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
@PreAuthorize("hasRole('tbs:costApply:update')")
public R<?> commit(@PathVariable("id") String id){
tbsCostApplyService.commitApply(id);
return R.ok();
}
/**
* 更新
@ -394,69 +370,5 @@ public class TbsCostApplyController {
return R.isTrue(result);
}
/**
* 审批列表(用于详情页)
* @param costApplyId
* @return
*/
@GetMapping("/ListAffairs")
public R<List<CtpAffairVo>> pageAffair(String costApplyId){
return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId);
}
/**
* 审批列表(翻页)
* @param param
* @return
*/
@GetMapping("/pageMemberAffair")
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){
return tbsCostApplyOperationServiceImpl.pageMemberAffair(param);
}
/**
* 提交审批节点
* @return
*/
@LimitSubmit
@PostMapping("/commitAffair")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
@PreAuthorize("hasRole('tbs:costApply:commit')")
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){
return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit);
}
/**
* 补偿按钮
* @param id
* @return
*/
@LimitSubmit
@PostMapping("/compensate/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
public R<?> compensate(@PathVariable("id") String id){
return tbsCostApplyOperationServiceImpl.runCompensate(id);
}
/**
* 加签
* @param param
* @return
*/
@LimitSubmit
@PostMapping("/addNode")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<String> addNode(@RequestBody CtpAddNodeParam param){
return tbsCostApplyOperationServiceImpl.addNode(param);
}
/**
* 获取未完成审批统计(个人)
* @return
*/
@PostMapping("/getAffairUnfinished")
public R<Long> getUnfinished(){
return tbsCostApplyOperationServiceImpl.getUnfinished();
}
}

27
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java

@ -0,0 +1,27 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/8/1
*/
@Data
public class TbsCheckCostUpdateBo {
/** 活动的科目ID */
private Long activitySubjectId;
/** 调整金额 */
private BigDecimal amount;
/** 人数 */
private Integer countPerson;
/** 场次 */
private Integer countSession;
}

2
src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java

@ -18,7 +18,7 @@ public interface TbsCostApplyPart1Service {
/**
* 取消异动
* @param costId
* @param costId 异动后的费用id
* @param checkThrow 检测抛异常
*/
void cancelSetChanged(Long costId,boolean checkThrow);

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

@ -220,9 +220,10 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
apply.setId(targetId);
apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode());
costApplyService.updateById(apply);
if(apply.getChangeSourceId()!=null){
TbsCostApply costApply = costApplyService.getById(targetId);
if(costApply.getChangeSourceId()!=null){
//移除
tbsBudgetLogMapper.updateLogDelFlagByCostApply(apply.getChangeSourceId(),1);
tbsBudgetLogMapper.updateLogDelFlagByCostApply(costApply.getChangeSourceId(),1);
}
//更新活动通过时间
TbsActivity tbsActivity = new TbsActivity();
@ -274,7 +275,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
tbsActivityMapper.update(activityParam,activityLqw);
activitySlottingFeeMapper.updatePassFlagByCostApplyId(costApplyId,0);
//如果时异动,则恢复原来的异动状态
if(apply.getChangeSourceId()!=null){
TbsCostApply costApply = costApplyService.getById(costApplyId);
if(costApply.getChangeSourceId()!=null){
costApplyPart1Service.cancelSetChanged(costApplyId,false);
}
return null;

8
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java

@ -65,9 +65,6 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
if(orgCost.getCancelFlag().equals(1)){
Assert.throwEx("该记录的费用已异动");
}
// if(orgCost.getChangeSourceId()!=null){
// Assert.throwEx("异动单据不可再异动,请取消源单据异动后进行");
// }
if(!userId.equals(orgCost.getUserId())){
Assert.throwEx("拒绝访问");
}
@ -94,6 +91,7 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
costApply.setUpdateTime(null);
costApply.setUpdateBy(null);
costApply.setChangeSourceId(orgCost.getId());
costApply.setChangeExtendId(null);
costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode());
tbsCostApplyService.save(costApply);
final Long newCostApplyId = costApply.getId();
@ -135,12 +133,12 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
qw.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting.getCode())
.or().eq(VtbVerification::getVerificationState,VtbVerificationState.Finished.getCode());
});
TbsCostApply extCost = tbsCostApplyService.getById(costId);
if(checkThrow){
Long count = verificationMapper.selectCount(vtbLqwCount);
if(count>0){
Assert.throwEx("含有核销记录不支持取消异动");
}
TbsCostApply extCost = tbsCostApplyService.getById(costId);
if(checkThrow){
if(extCost.getCancelFlag().equals(1)){
Assert.throwEx("请选择最新的异动记录");
}

14
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -103,12 +103,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
private TbsActivityPayConditionMapper tbsActivityPayConditionMapper;
private TbsActivityMapper tbsActivityMapper;
private TbsActivityCenterGoodsMapper tbsActivityCenterGoodsMapper;
private TbsActivityChannelMapper activityChannelMapper;
private TbsActivityChannelPointMapper activityChannelPointMapper;
private ProjectProperties projectProperties;
private TbsCostPercentMapper tbsCostPercentMapper;
private TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final ErpDispatchDataMapper dispatchDataMapper;
private TbsCostContractMapper costContractMapper;
private VtbVerificationMapper verificationMapper;
private SysAttachService sysAttachService;
@ -126,7 +121,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
@Transactional(rollbackFor = Exception.class)
public void removeCostById(Long id) {
TbsCostApply costApply = this.getById(id);
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())
&&!costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){
Assert.throwEx("当前单据状态不可作废");
}
LambdaQueryWrapper<VtbVerification> vtbLqw = new LambdaQueryWrapper<>();
@ -283,10 +279,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
sysUser.checkSyAccount();
Map<String, Object> data = new HashMap<>(10);
//匹配方式的result
// 匹配方式的result
TbsBudgetCostResult result0 = null;
TbsBudgetTableResultVo result1 = null;
//TODO 加载匹配方式
// 加载匹配方式
Integer matchType = tbsCostApply.getMatchType();
if(matchType.equals(0)){
result0 = budgetApplicationService.buildBudgetCostResult(tbsCostApply.getId(),true,false);
@ -553,7 +549,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
data.put("supplierCode", tbsCostApply.getSupplierCode());
data.put("supplierName", tbsCostApply.getSupplierName());
data.put("totalSalesMoney", tbsCostApply.getTotalActivityPreAmount());
if(tbsCostApply.getTotalActivityPreAmount()!=null||tbsCostApply.getTotalActivityPreAmount().compareTo(BigDecimal.ZERO)!=0){
if(tbsCostApply.getTotalActivityPreAmount()!=null&&tbsCostApply.getTotalActivityPreAmount().compareTo(BigDecimal.ZERO)!=0){
data.put("totalExpenseRate", tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN));
}
data.put("remark", tbsCostApply.getRemark());

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

@ -144,6 +144,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
LambdaQueryWrapper<VtbVerification> vtbVerificationLqw = new LambdaQueryWrapper<>();
vtbVerificationLqw.eq(VtbVerification::getActivityId,activity.getId());
vtbVerificationLqw.ne(VtbVerification::getId,id);
vtbVerificationLqw.lt(VtbVerification::getVerificationState,VtbVerificationState.Stop.getCode());
List<VtbVerification> vtbVerificationList = this.list(vtbVerificationLqw);
BigDecimal totalVtbAmt = BigDecimal.ZERO;
for (VtbVerification vtbVerification : vtbVerificationList) {
@ -151,10 +152,11 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}
//更新活动状态
TbsActivity activityUpdate = new TbsActivity();
activityUpdate.setId(costApply.getId());
activityUpdate.setId(verification.getActivityId());
activityUpdate.setActivityState(TbsActivityState.STATE_0_Todo);
activityUpdate.setUsedAmount(totalVtbAmt);
activityService.updateById(activityUpdate);
//更新活动其它表金额
BigDecimal n100 = new BigDecimal("100");
BigDecimal n10000 = new BigDecimal("10000");
@ -163,11 +165,27 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
activityCenter.setUsedAmount(totalVtbAmt.multiply(activityCenter.getCenterRate()).divide(n100,2, RoundingMode.DOWN));
}
activityCenterService.updateBatchById(activityCenterList);
Map<Long,BigDecimal> subjectAmountMap = new HashMap<>();
List<TbsActivityCenterGoods> centerGoodsList = activityCenterGoodsService.listByActivityId(activity.getId());
for (TbsActivityCenterGoods centerGoods : centerGoodsList) {
centerGoods.setUsedAmount(totalVtbAmt.multiply(centerGoods.getCenterRate()).multiply(centerGoods.getCenterGoodsRate()).divide(n10000,2,RoundingMode.DOWN));
BigDecimal amt = subjectAmountMap.get(centerGoods.getSubjectId());
if(amt==null){
amt = centerGoods.getUsedAmount();
}else {
amt = amt.add(centerGoods.getUsedAmount());
}
subjectAmountMap.put(centerGoods.getSubjectId(),amt);
}
activityCenterGoodsService.updateBatchById(centerGoodsList);
List<TbsActivitySubject> activitySubjectList = activitySubjectService.listByActivityId(activity.getId());
for (TbsActivitySubject activitySubject : activitySubjectList) {
BigDecimal amt = subjectAmountMap.get(activitySubject.getSubjectId());
activitySubject.setUsedAmount(amt==null?BigDecimal.ZERO:amt);
}
activitySubjectService.updateBatchById(activitySubjectList);
//如果为最后的活动,更变费用申请状态
if(costApply.getChargeState().equals(TbsCostApplyState.State_3_finished.getCode())){
TbsCostApply costApplyUpdate = new TbsCostApply();

Loading…
Cancel
Save