Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
11eb1cfaad
  1. 3
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  2. 6
      src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java
  3. 6
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java
  4. 18
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  5. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java
  6. 7
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  7. 19
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java
  8. 16
      src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java
  9. 19
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java
  10. 1
      src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java
  11. 189
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java
  12. 310
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  13. 2
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  14. 8
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

3
src/main/java/com/qs/serve/common/util/CodeGenUtil.java

@ -33,7 +33,8 @@ public class CodeGenUtil {
public enum SourceDataKey{
SaleRegion("S","SaleRegion"),
Budget("","Budget"),
BizRegion("B","BizRegion");
BizRegion("B","BizRegion"),
ActivityPayCondition("K","ActivityPayCondition");
private String prefix;
private String code;
}

6
src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java

@ -15,14 +15,16 @@ import java.util.List;
@AllArgsConstructor
public enum TbsCostApplyState {
//状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废
//状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动
State_0_unPublish(0),
State_1_apply(1),
State_2_actioning(2),
State_3_finished(3),
State_4_refused(4),
State_5_stop(5),
State_6_remove(6);
State_6_remove(6),
State_7_changed(6)
;
private Integer code;

6
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java

@ -6,10 +6,7 @@ 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.Assert;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
@ -127,6 +124,7 @@ public class TbsActivityPayConditionController {
Long actId = activityList.get(0).getId();
entity.setActivityId(actId);
entity.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1);
entity.setCode(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.ActivityPayCondition));
boolean result = tbsActivityPayConditionService.save(entity);
return R.isTrue(result);
}

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

@ -25,10 +25,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.dto.CompensateDTO;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*;
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.bo.*;
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;
@ -57,6 +54,7 @@ import java.util.stream.Collectors;
@RequestMapping("tbs/costApply")
public class TbsCostApplyController {
private TbsCostApplyPart1Service costApplyPart1Service;
private TbsCostContractService costContractService;
private TbsCostApplyService tbsCostApplyService;
private TbsActivityService tbsActivityService;
@ -262,6 +260,18 @@ public class TbsCostApplyController {
return R.ok(entity);
}
/**
* 异动申请
* @param id
* @return
*/
@PostMapping("/settingWithChange/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.INSERT)
@Transactional(rollbackFor = Exception.class)
public R<?> save(@PathVariable("id") Long id){
return R.ok(costApplyPart1Service.toSetChanged(id));
}
/**
* 根据模板新增费用及活动
* @param param

2
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java

@ -31,6 +31,8 @@ public class TbsActivityPayCondition implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
private String code;
/** 标题 */
@TableField(condition = SqlCondition.LIKE)
private String title;

7
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java

@ -55,7 +55,7 @@ public class TbsCostApply implements Serializable {
@TableField(condition = SqlCondition.LIKE)
private String supplierName;
/** 状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 */
/** 状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动 @{link TbsCostApplyState} */
@NotNull(message = "状态不能为空")
private Integer chargeState;
@ -150,6 +150,11 @@ public class TbsCostApply implements Serializable {
private Integer costThemeEditFlag;
private Integer cancelFlag;
private Long changeSourceId;
@TableField(exist = false)
private String affairId;

19
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostApplyChangeBo.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/12/19
*/
@Data
public class TbsCostApplyChangeBo {
@NotNull
TbsCostApplyBo costApplyBo;
}

16
src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java

@ -22,11 +22,11 @@ public class TbsContractCostSubItem {
private String writeOffDate;
private String productType;
private String product;
private String accountCode;
private String accountName;
private String costCenterNo;
private String costCenterName;
private BigDecimal applyMoney;
private String activityAccountCode;
private String activityAccountName;
private String activityCostCenterNo;
private String activityCostCenterName;
private BigDecimal money;
}
@ -34,11 +34,12 @@ public class TbsContractCostSubItem {
public static class Payment{
private String payItem;
private String payCondition;
private BigDecimal money;
private BigDecimal applyMoney;
private String payDate;
private String actualPayDate;
private Integer payCompleteState;
private String payCompleteState;
private String payRemark;
private String payCode;// 唯一
}
@Data
@ -47,6 +48,7 @@ public class TbsContractCostSubItem {
private String deliveryStandard;
private String deliveryDate;
private String agreeRemark;
private String agreeCompleteState;
}

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

@ -0,0 +1,19 @@
package com.qs.serve.modules.tbs.service;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
/**
* @author YenHex
* @since 2023/7/27
*/
public interface TbsCostApplyPart1Service {
/**
* 执行异动
* @param costId
* @return 返回新的活动申请ID
*/
TbsCostApply toSetChanged(Long costId);
}

1
src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java

@ -16,6 +16,7 @@ import java.util.List;
*/
public interface TbsCostApplyService extends IService<TbsCostApply> {
/**
* 作废
* @param id

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

@ -0,0 +1,189 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.modules.bir.service.BirCenterRateService;
import com.qs.serve.modules.bir.service.BirRoiRateService;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author YenHex
* @since 2023/7/27
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service {
private TbsCostApplyService tbsCostApplyService;
private TbsActivityCenterService tbsActivityCenterService;
private TbsActivitySubjectService tbsActivitySubjectService;
private TbsActivityGoodsService tbsActivityGoodsService;
private TbsActivitySlottingFeeService tbsActivitySlottingFeeService;
private TbsActivityPayConditionService activitySlottingConditionService;
private TbsActivityMapper tbsActivityMapper;
private TbsActivityCenterGoodsService tbsActivityCenterGoodsService;
private TbsActivityChannelService tbsActivityChannelService;
private TbsActivityChannelPointService tbsActivityChannelPointService;
private TbsCostContractMapper costContractMapper;
private VtbVerificationMapper verificationMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public TbsCostApply toSetChanged(Long costId) {
String userId = AuthContextUtils.getSysUserId();
TbsCostApply orgCost = tbsCostApplyService.getById(costId);
if(!userId.equals(orgCost.getUserId())){
Assert.throwEx("拒绝访问");
}
if(!orgCost.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){
Assert.throwEx("费用申请的状态不支持");
}
//判断是否有核销记录
LambdaQueryWrapper<VtbVerification> vtbLqwCount = new LambdaQueryWrapper<>();
vtbLqwCount.eq(VtbVerification::getCostApplyId,costId);
vtbLqwCount.and(qw->{
qw.eq(VtbVerification::getVerificationState, VtbVerificationState.Commiting.getCode())
.or().eq(VtbVerification::getVerificationState,VtbVerificationState.Finished.getCode());
});
Long count = verificationMapper.selectCount(vtbLqwCount);
if(count>0){
Assert.throwEx("含有核销记录不支持异动");
}
//复制新记录
TbsCostApply costApply = CopierUtil.copy(orgCost,new TbsCostApply());
costApply.setId(null);
costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode());
tbsCostApplyService.save(costApply);
final Long newCostApplyId = costApply.getId();
//费用相关复制
QueryWrapper qw_cost_apply = new QueryWrapper();
qw_cost_apply.eq("cost_apply_id",costId);
List<TbsCostContract> contracts = costContractMapper.selectList(qw_cost_apply);
contracts.forEach(con->{
con.setId(null);
con.setCostApplyId(newCostApplyId);
});
//活动相关复制
List<TbsActivity> activityList = tbsActivityMapper.selectList(qw_cost_apply);
this.copyAboutActivityData(newCostApplyId, activityList);
//更变旧记录
orgCost.setChargeState(TbsCostApplyState.State_7_changed.getCode());
orgCost.setCancelFlag(1);
tbsCostApplyService.updateById(orgCost);
return costApply;
}
/**
* 活动相关复制
* @param newCostApplyId
* @param activityList
*/
private void copyAboutActivityData(Long newCostApplyId, List<TbsActivity> activityList) {
for (TbsActivity orgActivity : activityList) {
//原ActivityID
Long orgActivityId = orgActivity.getId();
//重新保存
orgActivity.setId(null);
tbsActivityMapper.insert(orgActivity);
final Long newActivityId = orgActivity.getId();
QueryWrapper qw_activity = new QueryWrapper();
qw_activity.eq("activity_id",orgActivityId);
List<TbsActivityGoods> goodsList = tbsActivityGoodsService.list(qw_activity);
goodsList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivityGoodsService.saveBatch(goodsList);
List<TbsActivityCenter> centerList = tbsActivityCenterService.list(qw_activity);
centerList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivityCenterService.saveBatch(centerList);
List<TbsActivitySubject> subjectList = tbsActivitySubjectService.list(qw_activity);
subjectList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivitySubjectService.saveBatch(subjectList);
List<TbsActivityCenterGoods> centerGoodsList = tbsActivityCenterGoodsService.list(qw_activity);
centerGoodsList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivityCenterGoodsService.saveBatch(centerGoodsList);
List<TbsActivityChannel> channelList = tbsActivityChannelService.list(qw_activity);
channelList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivityChannelService.saveBatch(channelList);
List<TbsActivityChannelPoint> channelPointList = tbsActivityChannelPointService.list(qw_activity);
channelPointList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivityChannelPointService.saveBatch(channelPointList);
List<TbsActivityPayCondition> payConditionList = activitySlottingConditionService.list(qw_activity);
payConditionList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
activitySlottingConditionService.saveBatch(payConditionList);
List<TbsActivitySlottingFee> slottingFeeList = tbsActivitySlottingFeeService.list(qw_activity);
slottingFeeList.forEach(obj->{
obj.setId(null);
obj.setCostApplyId(newCostApplyId);
obj.setActivityId(newActivityId);
});
tbsActivitySlottingFeeService.saveBatch(slottingFeeList);
}
}
}

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

@ -1,6 +1,7 @@
package com.qs.serve.modules.tbs.service.impl;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectProperties;
@ -93,6 +94,8 @@ 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 BirRoiRateService birRoiRateService;
private TbsCostPercentMapper tbsCostPercentMapper;
@ -104,6 +107,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
private BirCenterRateService centerRateService;
@Override
public void removeCostById(Long id) {
TbsCostApply costApply = this.getById(id);
@ -255,144 +259,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
this.releaseCost(tbsCostApply.getId(),0);
Map<String, Object> data = new HashMap<>(10);
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
data.put("title",tbsCostApply.getChargeTheme());
data.put("orgId",tbsCostApply.getId().toString());
data.put("costApplyCode", tbsCostApply.getCode());
data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName());
data.put("supplierName", tbsCostApply.getSupplierName());
data.put("supplierCode", tbsCostApply.getSupplierCode());
data.put("targetId", tbsCostApply.getId()+"");
data.put("targetCode", tbsCostApply.getCode());
data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code());
//添加跳转地址业务
String urlKey = "exsp5"+IdUtil.simpleUUID();
String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey);
data.put("exsp5",urlKey);
data.put("cmsLink",baseJumpUrl);
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("rowState","03");
//拓展添加审批关联区域
String saleRegionId = supplier.handleSaleRegionId();
String bizRegionId = supplier.handleBizRegionId();
BmsRegion saleRegion = regionMapper.selectById(saleRegionId);
BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId);
String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入";
String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入";
//拓展添加审批关联
data.put("biz_region",bizRegionNames);
data.put("exsp2",saleRegionNames);
data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+"");
//创建协议类data数据
data.put("serialNumber",tbsCostApply.getCode());
data.put("applySubject",tbsCostApply.getChargeTheme());
data.put("supplierCode",tbsCostApply.getSupplierCode());
data.put("supplierName",tbsCostApply.getSupplierName());
data.put("totalSalesMoney",tbsCostApply.getTotalActivityAmount());
data.put("totalExpenseRate",tbsCostApply.getTotalActivityPreNotAmount());
data.put("remark",tbsCostApply.getRemark());
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsCostContract::getCostApplyId,tbsCostApply.getId());
List<TbsCostContract> contracts = costContractMapper.selectList(lqw);
if(contracts.size()>0){
TbsCostContract contract = contracts.get(0);
data.put("payee",contract.getPayee());
data.put("bankName",contract.getBankName());
data.put("bankAccount",contract.getBankAccount());
data.put("sealID",contract.getSealId());
data.put("sealName",contract.getSealName());
data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum());
data.put("contractName",contract.getContractName());
data.put("contractTotalMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString());
data.put("contractContent",contract.getContractCondition());
String urls = "";
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){
List<String> attachIds = Arrays.asList(contract.getAttachIds());
List<SysAttach> attachList = sysAttachService.listByIds(attachIds);
urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , "));
}
data.put("contractFile",urls);
}else {
Assert.throwEx("请补充合同信息");
}
//创建子表数据
List<Object> subList = new ArrayList<>();
//活动明细
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>();
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId,id);
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw);
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
TbsActivity currActivity = null;
for (TbsActivity activity : activityList) {
if(centerGoods.getActivityId().equals(activity.getId())){
currActivity = activity;
break;
}
}
TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity();
dataActivity.setActivityCode(currActivity.getActivityCode());
dataActivity.setActivityPurpose(currActivity.getActTitle());
dataActivity.setCostCode(tbsCostApply.getCode());
dataActivity.setStartDate(currActivity.getActStartDate()==null?null:currActivity.getActStartDate().toString());
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString());
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString());
dataActivity.setProductType(centerGoods.getTargetType());
dataActivity.setProduct(centerGoods.getTargetName());
dataActivity.setAccountCode(centerGoods.getSubjectCode());
dataActivity.setAccountName(centerGoods.getSubjectName());
dataActivity.setCostCenterNo(centerGoods.getCenterType());
dataActivity.setCostCenterName(centerGoods.getCenterName());
dataActivity.setApplyMoney(centerGoods.getCenterGoodsAmount());
subList.add(dataActivity);
}
// 付款条件
for (TbsActivityPayCondition payCondition : payConditions) {
TbsActivity currActivity = null;
for (TbsActivity activity : activityList) {
if(payCondition.getActivityId().equals(activity.getId())){
currActivity = activity;
break;
}
}
TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment();
subPayment.setPayItem(payCondition.getTitle());
subPayment.setPayCondition(payCondition.getConditionMsg());
subPayment.setMoney(currActivity.getTotalAmount());
subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null);
subPayment.setActualPayDate(null);
subPayment.setPayCompleteState(payCondition.getPreNotifyStatus());
subPayment.setPayRemark(payCondition.getRemark());
subList.add(subPayment);
}
// 协议条款
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>();
todoLqw.eq(TbsCostTodo::getCostApplyId,tbsCostApply.getId());
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw);
for (TbsCostTodo costTodo : costTodoList) {
TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem();
toDoItem.setServiceDescription(costTodo.getDescr());
toDoItem.setDeliveryStandard(costTodo.getPayMsg());
toDoItem.setDeliveryDate(costTodo.getPrePayDate()==null?null : costTodo.getPrePayDate().toString());
toDoItem.setAgreeRemark(costTodo.getRemark());
subList.add(toDoItem);
}
//关联
data.put("sub", subList);
//创建协议的费用申请Data
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data);
}else {
//创建通用的费用申请Data
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier, result, sysUser, data);
@ -487,6 +355,172 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
/**
* 创建协议类的申请DATA
* @param id
* @param tbsCostApply
* @param activityList
* @param payConditions
* @param supplier
* @param sysUser
* @param data
*/
private void buildContractApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<TbsActivityPayCondition> payConditions, BmsSupplier supplier, SysUser sysUser, Map<String, Object> data) {
data.put("title", tbsCostApply.getChargeTheme());
data.put("orgId", tbsCostApply.getId().toString());
data.put("costApplyCode", tbsCostApply.getCode());
data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName());
data.put("supplierName", tbsCostApply.getSupplierName());
data.put("supplierCode", tbsCostApply.getSupplierCode());
data.put("targetId", tbsCostApply.getId()+"");
data.put("targetCode", tbsCostApply.getCode());
data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code());
//添加跳转地址业务
String urlKey = "exsp5"+IdUtil.simpleUUID();
String baseJumpUrl = JumpToUtil.getUrl(projectProperties.getHostUrl(),TbsSeeYonConst.CostApplyConf.Code(),urlKey);
data.put("exsp5",urlKey);
data.put("cmsLink",baseJumpUrl);
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("rowState","03");
//拓展添加审批关联区域
String saleRegionId = supplier.handleSaleRegionId();
String bizRegionId = supplier.handleBizRegionId();
BmsRegion saleRegion = regionMapper.selectById(saleRegionId);
BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId);
String saleRegionNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入";
String bizRegionNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入";
//拓展添加审批关联
data.put("biz_region",bizRegionNames);
data.put("exsp2",saleRegionNames);
data.put("dataState",TbsCostApplyState.State_1_apply.getCode()+"");
//创建协议类data数据
data.put("serialNumber", tbsCostApply.getCode());
data.put("applySubject", tbsCostApply.getChargeTheme());
data.put("supplierCode", tbsCostApply.getSupplierCode());
data.put("supplierName", tbsCostApply.getSupplierName());
data.put("totalSalesMoney", tbsCostApply.getTotalActivityPreAmount());
data.put("totalExpenseRate", tbsCostApply.getTotalActivityAmount().divide(tbsCostApply.getTotalActivityPreAmount(),2,RoundingMode.DOWN));
data.put("remark", tbsCostApply.getRemark());
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId());
List<TbsCostContract> contracts = costContractMapper.selectList(lqw);
if(contracts.size()>0){
//活动的科目和成本中心
List<TbsActivityCenter> tbsActivityCenters = tbsActivityCenterService.listByCostApplyId(Long.parseLong(id));
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(","));
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(","));
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id));
String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(","));
String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(","));
TbsCostContract contract = contracts.get(0);
data.put("payee",contract.getPayee());
data.put("bankName",contract.getBankName());
data.put("bankAccount",contract.getBankAccount());
data.put("sealID",contract.getSealId());
data.put("sealName",contract.getSealName());
data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum());
data.put("accountCode",concatSubjectCodes);
data.put("accountName",concatSubjectNames);
data.put("costCenterNo",concatCenterCodes);
data.put("costCenterName",concatCenterNames);
data.put("contractName",contract.getContractName());
data.put("contractTotalMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());
data.put("expireDate",contract.getExpireTime()==null?null:contract.getExpireTime().toString());
data.put("contractContent",contract.getContractCondition());
String urls = "";
if (CollectionUtil.isNotEmpty(contract.getAttachIds())){
List<String> attachIds = Arrays.asList(contract.getAttachIds());
List<SysAttach> attachList = sysAttachService.listByIds(attachIds);
urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , "));
}
data.put("contractFile",urls);
}else {
Assert.throwEx("请补充合同信息");
}
//创建子表数据
List<Object> subList = new ArrayList<>();
//活动明细
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>();
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id);
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw);
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) {
TbsActivity currActivity = null;
for (TbsActivity activity : activityList) {
if(centerGoods.getActivityId().equals(activity.getId())){
currActivity = activity;
break;
}
}
TbsContractCostSubItem.Activity dataActivity = new TbsContractCostSubItem.Activity();
dataActivity.setActivityCode(currActivity.getActivityCode());
dataActivity.setActivityPurpose(currActivity.getActTitle());
dataActivity.setCostCode(tbsCostApply.getCode());
dataActivity.setStartDate(currActivity.getActStartDate()==null?null:currActivity.getActStartDate().toString());
dataActivity.setEndDate(currActivity.getActEndDate()==null?null:currActivity.getActEndDate().toString());
dataActivity.setWriteOffDate(currActivity.getPreCheckDate()==null?null:currActivity.getPreCheckDate().toString());
dataActivity.setProductType(centerGoods.getTargetType());
dataActivity.setProduct(centerGoods.getTargetName());
dataActivity.setActivityAccountCode(centerGoods.getSubjectCode());
dataActivity.setActivityAccountName(centerGoods.getSubjectName());
dataActivity.setActivityCostCenterNo(centerGoods.getCenterCode());
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")");
dataActivity.setMoney(centerGoods.getCenterGoodsAmount());
subList.add(dataActivity);
}
// 付款条件
for (TbsActivityPayCondition payCondition : payConditions) {
TbsActivity currActivity = null;
for (TbsActivity activity : activityList) {
if(payCondition.getActivityId().equals(activity.getId())){
currActivity = activity;
break;
}
}
TbsContractCostSubItem.Payment subPayment = new TbsContractCostSubItem.Payment();
subPayment.setPayItem(payCondition.getTitle());
subPayment.setPayCondition(payCondition.getConditionMsg());
subPayment.setApplyMoney(currActivity.getTotalAmount());
subPayment.setPayDate(payCondition.getPaymentDate()!=null?payCondition.getPaymentDate().toString():null);
subPayment.setActualPayDate(null);
String stateMsg = payCondition.getFinishedFlag().equals(1)?"已完成":"未处理";
subPayment.setPayCompleteState(stateMsg);
subPayment.setPayRemark(payCondition.getRemark());
subPayment.setPayCode(payCondition.getCode());
subList.add(subPayment);
}
// 协议条款
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>();
todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId());
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw);
for (TbsCostTodo costTodo : costTodoList) {
TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem();
toDoItem.setServiceDescription(costTodo.getDescr());
toDoItem.setDeliveryStandard(costTodo.getPayMsg());
toDoItem.setDeliveryDate(costTodo.getPrePayDate()==null?null : costTodo.getPrePayDate().toString());
toDoItem.setAgreeRemark(costTodo.getRemark());
toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成");
subList.add(toDoItem);
}
//关联
data.put("sub", subList);
}
private void buildCommonApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, BmsSupplier supplier, TbsBudgetCostResult result, SysUser sysUser, Map<String, Object> data) {
String actTitles = activityList.stream().map(TbsActivity::getActTitle).collect(Collectors.joining("; "));
data.put("costApplyCode", tbsCostApply.getCode());

2
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java

@ -148,6 +148,7 @@ public class VtbVerification implements Serializable {
@TableField(condition = SqlCondition.LIKE)
private String userName;
@TableField(exist = false)
private List<?> attachList;
@ -172,5 +173,6 @@ public class VtbVerification implements Serializable {
@TableField(exist = false)
private Object costApplyInfo;
}

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

@ -111,6 +111,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
@Transactional(rollbackFor = Exception.class)
public void removeCheck(Long id) {
VtbVerification verification = this.getById(id);
if(verification.getVerificationState().equals(VtbVerificationState.Cancel.getCode())){
Assert.throwEx("已作废,请勿重复提交");
}
if (!verification.getVerificationState().equals(VtbVerificationState.Finished.getCode())){
Assert.throwEx("当前核销不可作废");
}
@ -119,10 +122,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
Assert.throwEx("当前活动已释放不可作废");
}
boolean canCancel = activity.getActivityState().equals(TbsActivityState.STATE_0_Todo)||
activity.getActivityState().equals(TbsActivityState.STATE_1_Finished);
activity.getActivityState().equals(TbsActivityState.STATE_1_Finished)||
activity.getActivityState().equals(TbsActivityState.STATE_1_Baning);
if(!canCancel){
Assert.throwEx("当前活动状态不可作废");
}
verification.setVerificationState(VtbVerificationState.Cancel.getCode());
this.updateById(verification);
//判断费用申请类型
TbsCostApply costApply = costApplyService.getById(verification.getCostApplyId());
if(costApply.getContractFlag().equals(1)){

Loading…
Cancel
Save