|
|
@ -88,6 +88,7 @@ import java.util.stream.Collectors; |
|
|
|
@AllArgsConstructor |
|
|
|
public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsCostApply> implements TbsCostApplyService { |
|
|
|
|
|
|
|
private VtbVerificationMapper vtbVerificationMapper; |
|
|
|
private TbsBudgetApplicationService budgetApplicationService; |
|
|
|
private TbsBudgetCostItemService budgetCostItemService; |
|
|
|
private TbsBudgetLogService budgetLogService; |
|
|
@ -351,6 +352,142 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void replaceApplySyData(String id) { |
|
|
|
TbsCostApply tbsCostApply = this.getById(id); |
|
|
|
|
|
|
|
//确保只能执行一次
|
|
|
|
if(tbsCostApply.getRemark()!=null && tbsCostApply.getRemark().contains("审批节点重置")){ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
LambdaQueryWrapper<VtbVerification> vtbLqw = new LambdaQueryWrapper<>(); |
|
|
|
vtbLqw.eq(VtbVerification::getCostApplyId,id).in(VtbVerification::getVerificationState,0,1); |
|
|
|
if(vtbVerificationMapper.selectCount(vtbLqw)>0){ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
BmsSupplier supplier = bmsSupplierService.getById(tbsCostApply.getSupplierId()); |
|
|
|
|
|
|
|
SysUser sysUser = sysUserService.getById(tbsCostApply.getUserId()); |
|
|
|
|
|
|
|
//相关活动
|
|
|
|
LambdaQueryWrapper<TbsActivity> actLqw = new LambdaQueryWrapper<>(); |
|
|
|
actLqw.eq(TbsActivity::getCostApplyId,id); |
|
|
|
List<TbsActivity> activityList = tbsActivityMapper.selectList(actLqw); |
|
|
|
|
|
|
|
this.releaseCost(tbsCostApply.getId(),0); |
|
|
|
Map<String, Object> data = new HashMap<>(10); |
|
|
|
List<String> oaAttachmentsIdList = new ArrayList<>(); |
|
|
|
List<String> oaContractAttachmentsIdList = new ArrayList<>(); |
|
|
|
//新方式保存接口
|
|
|
|
Map<String,Object> newWayData = new HashMap<>(); |
|
|
|
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsActivityPayCondition> conLqw = new LambdaQueryWrapper<>(); |
|
|
|
conLqw.eq(TbsActivityPayCondition::getCostApplyId,id); |
|
|
|
List<TbsActivityPayCondition> payConditions = tbsActivityPayConditionMapper.selectList(conLqw); |
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); |
|
|
|
for (TbsCostContract contract : contracts) { |
|
|
|
if(contract.getAttachIds()==null||contract.getAttachIds().length<1){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
oaContractAttachmentsIdList.addAll(Arrays.asList(contract.getAttachIds())); |
|
|
|
} |
|
|
|
// 协议条款
|
|
|
|
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>(); |
|
|
|
todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw); |
|
|
|
for (TbsCostTodo costTodo : costTodoList) { |
|
|
|
if(costTodo.getAttachIds()==null||costTodo.getAttachIds().length<1){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
oaAttachmentsIdList.addAll(Arrays.asList(costTodo.getAttachIds())); |
|
|
|
} |
|
|
|
//创建协议的费用申请Data
|
|
|
|
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data,contracts,costTodoList,newWayData); |
|
|
|
}else { |
|
|
|
//创建通用的费用申请Data
|
|
|
|
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier,sysUser, data); |
|
|
|
} |
|
|
|
//协议类走新流程
|
|
|
|
String templateCode = tbsCostApply.getContractFlag().equals(1) |
|
|
|
?TbsSeeYonConst.CostApplyContractConf.Code() |
|
|
|
:TbsSeeYonConst.CostApplyConf.Code(); |
|
|
|
R<String> flowIdResult = null; |
|
|
|
//启用新方法开关
|
|
|
|
if( tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
List<OaUploadFile> uploadFileList = new ArrayList<>(); |
|
|
|
if(CollectionUtil.isNotEmpty(oaAttachmentsIdList)){ |
|
|
|
List<SysAttach> attachList = sysAttachService.listByIds(oaAttachmentsIdList); |
|
|
|
for (SysAttach sysAttach : attachList) { |
|
|
|
OaUploadFile uploadFile = new OaUploadFile(); |
|
|
|
uploadFile.setField("file"); |
|
|
|
uploadFile.setName("协议附件"+sysAttach.getName()); |
|
|
|
uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath()); |
|
|
|
uploadFileList.add(uploadFile); |
|
|
|
} |
|
|
|
} |
|
|
|
if(CollectionUtil.isNotEmpty(oaContractAttachmentsIdList)){ |
|
|
|
List<SysAttach> attachContractList = sysAttachService.listByIds(oaContractAttachmentsIdList); |
|
|
|
for (SysAttach sysAttach : attachContractList) { |
|
|
|
OaUploadFile uploadFile = new OaUploadFile(); |
|
|
|
uploadFile.setField("file"); |
|
|
|
uploadFile.setName("合同附件"+sysAttach.getName()); |
|
|
|
uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath()); |
|
|
|
uploadFileList.add(uploadFile); |
|
|
|
} |
|
|
|
} |
|
|
|
OaFormMainProcess mainProcess = new OaFormMainProcess(); |
|
|
|
mainProcess.setTargetId(id); |
|
|
|
mainProcess.setUploadFiles(uploadFileList); |
|
|
|
newWayData.put("formmain_1987",data); |
|
|
|
mainProcess.setData(newWayData); |
|
|
|
mainProcess.setTemplateCode(TbsSeeYonConst.CostApplyContractConf.Code()); |
|
|
|
mainProcess.setSenderLoginName(sysUser.getAccount()); |
|
|
|
flowIdResult = seeYonService.newCreateProcess(mainProcess); |
|
|
|
}else { |
|
|
|
//修改申请编码
|
|
|
|
BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); |
|
|
|
createProcess.setTemplateCode(templateCode); |
|
|
|
createProcess.setMemberLoginName(sysUser.getSyAccount()); |
|
|
|
createProcess.setSubjectTitle(TbsSeeYonConst.PRE_TITLE_COST_APPLY + tbsCostApply.getChargeTheme()); |
|
|
|
createProcess.setTargetId(tbsCostApply.getId()+""); |
|
|
|
createProcess.setDataJson(JsonUtil.objectToJson(data)); |
|
|
|
flowIdResult = seeYonService.baseCreateProcess(createProcess); |
|
|
|
} |
|
|
|
|
|
|
|
if(flowIdResult==null||flowIdResult.getStatus()!=200){ |
|
|
|
Assert.throwEx("远程服务调用失败:"+flowIdResult.getMsg()); |
|
|
|
} |
|
|
|
String flowId = flowIdResult.getData(); |
|
|
|
if(flowId!=null&&flowId.length()>45){ |
|
|
|
flowId = flowId.substring(0,40); |
|
|
|
} |
|
|
|
String formId = null; |
|
|
|
R<String> formIdResult = seeYonService.getFormId(templateCode,tbsCostApply.getId()); |
|
|
|
if(formIdResult.getStatus()==200){ |
|
|
|
formId = formIdResult.getData(); |
|
|
|
} |
|
|
|
TbsCostApply costApply = new TbsCostApply(); |
|
|
|
costApply.setId(tbsCostApply.getId()); |
|
|
|
costApply.setSyFlowId(flowId); |
|
|
|
costApply.setSyFormId(formId); |
|
|
|
costApply.setEditAmountFlag(0); |
|
|
|
costApply.setChargeState(TbsCostApplyState.State_1_apply.getCode()); |
|
|
|
costApply.setSubmitTime(LocalDateTime.now()); |
|
|
|
costApply.setRemark("审批节点重置("+tbsCostApply.getSyFormId()+");" |
|
|
|
+tbsCostApply.getRemark()==null?"":tbsCostApply.getRemark()); |
|
|
|
this.updateById(costApply); |
|
|
|
|
|
|
|
//创建流程后回调
|
|
|
|
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,costApply.getId()+""); |
|
|
|
seeYonService.createCallbackStatus(callbackBo); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void commitApply(String id) { |
|
|
@ -1122,19 +1259,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
List<TbsActivitySubject> tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
List<String> subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList()); |
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
//创建子表数据
|
|
|
|
try { |
|
|
|
this.buildSubList(tbsActivityCenters, subjectNames, subList,supplier.getCode()); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("【费用申请,创建子表数据】:{}",e.getMessage()); |
|
|
|
} |
|
|
|
//构造客户维度的 年度、季度合计
|
|
|
|
// try {
|
|
|
|
// List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList = buildCusRateMain(supplier);
|
|
|
|
// subList.addAll(cusCenterRateList);
|
|
|
|
// } catch (Exception e) {
|
|
|
|
// log.error("【费用申请,创建客户维度费率数据】:{}",e.getMessage());
|
|
|
|
// }
|
|
|
|
//创建子表数据(任由异常 这里数据用来判断流程走向)
|
|
|
|
this.buildSubList(tbsActivityCenters, subjectNames, subList,supplier.getCode()); |
|
|
|
|
|
|
|
//创建商品抬头列表
|
|
|
|
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id)); |
|
|
|
Set<String> bands = new HashSet<>(); |
|
|
@ -1152,6 +1279,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
* @param tbsCostApply |
|
|
|
* @param data |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void buildMainData4ROI(TbsCostApply tbsCostApply, Map<String, Object> data) { |
|
|
|
YtdQtdToOAVo ytdQtdToOAVo = birRoiRateService.buildYtdAndQtdData(tbsCostApply); |
|
|
|
String defaultNum = "-2"; |
|
|
@ -1172,27 +1300,6 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
data.put("adminiExpenseRate",ytdQtdToOAVo.getQtdRegion2Percent()==null? |
|
|
|
defaultNum:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegion2Percent()).setScale(2, RoundingMode.HALF_UP)+""); |
|
|
|
|
|
|
|
//插入记录表前移除历史记录
|
|
|
|
// tbsCostPercentMapper.delByCostApplyId(tbsCostApply.getId());
|
|
|
|
// TbsCostPercent costPercent = new TbsCostPercent();
|
|
|
|
// costPercent.setCostApplyId(tbsCostApply.getId());
|
|
|
|
// costPercent.setYtdCustomerPercent(ytdQtdToOAVo.getYtdCustomerPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdCustomerPercent()));
|
|
|
|
// costPercent.setYtdUserPercent(ytdQtdToOAVo.getYtdUserPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdUserPercent()));
|
|
|
|
// costPercent.setYtdRegion2Percent(ytdQtdToOAVo.getYtdRegion2Percent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegion2Percent()));
|
|
|
|
// costPercent.setYtdRegionPercent(ytdQtdToOAVo.getYtdRegionPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getYtdRegionPercent()));
|
|
|
|
// costPercent.setQtdCustomerPercent(ytdQtdToOAVo.getQtdCustomerPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdCustomerPercent()));
|
|
|
|
// costPercent.setQtdUserPercent(ytdQtdToOAVo.getQtdUserPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdUserPercent()));
|
|
|
|
// costPercent.setQtdRegion2Percent(ytdQtdToOAVo.getQtdRegion2Percent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegion2Percent()));
|
|
|
|
// costPercent.setQtdRegionPercent(ytdQtdToOAVo.getQtdRegionPercent()==null?
|
|
|
|
// BigDecimal.ZERO:BigDecimal.valueOf(ytdQtdToOAVo.getQtdRegionPercent()));
|
|
|
|
// tbsCostPercentMapper.insert(costPercent);
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -1208,15 +1315,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
//成本中心去重
|
|
|
|
Map<String,List<TbsActivityCenter>> centerMapList = tbsActivityCenters.stream().collect(Collectors.groupingBy(a->a.getCenterType()+"-"+a.getCenterId())); |
|
|
|
List<TbsActivityCenter> centerList = centerMapList.values().stream().map(a->a.get(0)).collect(Collectors.toList()); |
|
|
|
//有异常
|
|
|
|
for(TbsActivityCenter center : centerList){ |
|
|
|
try { |
|
|
|
TbsCostSubItem.CostCenterTranStr costCenter = BirHttpUtil.buildCostCenter(center.getCenterType(),center.getCenterId(),center.getCenterName(),supplierCode); |
|
|
|
if(costCenter!=null){ |
|
|
|
subList.add(costCenter); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
TbsCostSubItem.CostCenterTranStr costCenter = BirHttpUtil.buildCostCenter(center.getCenterType(),center.getCenterId(),center.getCenterName(),supplierCode); |
|
|
|
if(costCenter!=null){ |
|
|
|
subList.add(costCenter); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|