|
|
@ -4,6 +4,7 @@ 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.ProjectApisProperties; |
|
|
|
import com.qs.serve.common.config.properties.ProjectProperties; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncFactory; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncManager; |
|
|
@ -12,6 +13,8 @@ import com.qs.serve.common.model.enums.BudgetLogOptFlag; |
|
|
|
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; |
|
|
|
import com.qs.serve.common.model.dto.R; |
|
|
|
import com.qs.serve.common.model.enums.MonthValues; |
|
|
|
import com.qs.serve.common.model.oa.OaFormMainProcess; |
|
|
|
import com.qs.serve.common.model.oa.OaUploadFile; |
|
|
|
import com.qs.serve.common.util.*; |
|
|
|
import com.qs.serve.common.util.model.DateFormatString; |
|
|
|
import com.qs.serve.modules.bir.entity.BirActivityCenterGoods; |
|
|
@ -125,6 +128,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
|
|
|
|
private TbsCostCheckStateMapper costCheckStateMapper; |
|
|
|
|
|
|
|
private ProjectApisProperties projectApisProperties; |
|
|
|
|
|
|
|
@Override |
|
|
|
public BigDecimal totalCostUsed(Long id) { |
|
|
|
return tbsActivityMapper.sumCostUsedAmount(id); |
|
|
@ -249,8 +254,16 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
} |
|
|
|
Map<String, Object> data = new HashMap<>(10); |
|
|
|
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ |
|
|
|
LambdaQueryWrapper<TbsCostContract> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(TbsCostContract::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostContract> contracts = costContractMapper.selectList(lqw); |
|
|
|
|
|
|
|
// 协议条款
|
|
|
|
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>(); |
|
|
|
todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw); |
|
|
|
//创建协议的费用申请Data
|
|
|
|
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data); |
|
|
|
this.buildContractApplyData(id, tbsCostApply, activityList, payConditions, supplier, sysUser, data,contracts,costTodoList,new HashMap<>()); |
|
|
|
}else { |
|
|
|
//创建通用的费用申请Data
|
|
|
|
this.buildCommonApplyData(id, tbsCostApply, activityList, supplier,sysUser, data); |
|
|
@ -357,27 +370,85 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
//恢复绑定
|
|
|
|
this.releaseCost(tbsCostApply.getId(),0); |
|
|
|
Map<String, Object> data = new HashMap<>(10); |
|
|
|
List<Long> oaAttachmentsIdList = null; |
|
|
|
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<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); |
|
|
|
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(); |
|
|
|
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.setAttachments(oaAttachmentsIdList); |
|
|
|
createProcess.setDataJson(JsonUtil.objectToJson(data)); |
|
|
|
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess); |
|
|
|
if(flowIdResult.getStatus()!=200){ |
|
|
|
R<String> flowIdResult = null; |
|
|
|
//TODO 启用新方法开关
|
|
|
|
boolean newWay = true; |
|
|
|
if(newWay && 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("远程服务调用失败"); |
|
|
|
} |
|
|
|
String flowId = flowIdResult.getData(); |
|
|
@ -578,7 +649,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
* @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) { |
|
|
|
private void buildContractApplyData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<TbsActivityPayCondition> payConditions, BmsSupplier supplier, SysUser sysUser, Map<String, Object> data,List<TbsCostContract> contracts,List<TbsCostTodo> costTodoList ,Map<String, Object> newWayData) { |
|
|
|
data.put("title", tbsCostApply.getChargeTheme()); |
|
|
|
data.put("orgId", tbsCostApply.getId().toString()); |
|
|
|
data.put("costApplyCode", tbsCostApply.getCode()); |
|
|
@ -624,9 +695,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
} |
|
|
|
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){ |
|
|
|
//构建合同DATA
|
|
|
@ -639,8 +708,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
List<Object> subList = new ArrayList<>(); |
|
|
|
|
|
|
|
//活动明细
|
|
|
|
buildActivityCenterGoodsSeeyonData(id, tbsCostApply, activityList, subList); |
|
|
|
buildActivityCenterGoodsSeeyonData(id, tbsCostApply, activityList, subList,newWayData); |
|
|
|
// 付款条件
|
|
|
|
|
|
|
|
List<TbsContractCostSubItem.Payment> subPaymentList = new ArrayList<>(); |
|
|
|
for (TbsActivityPayCondition payCondition : payConditions) { |
|
|
|
// TbsActivity currActivity = null;
|
|
|
|
// for (TbsActivity activity : activityList) {
|
|
|
@ -659,13 +730,14 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
subPayment.setPayCompleteState(stateMsg); |
|
|
|
subPayment.setPayRemark(payCondition.getRemark()); |
|
|
|
subPayment.setPayCode(payCondition.getCode()); |
|
|
|
subPaymentList.add(subPayment); |
|
|
|
subList.add(subPayment); |
|
|
|
} |
|
|
|
if(subPaymentList.size()>0){ |
|
|
|
newWayData.put("formson_1988",subPaymentList); |
|
|
|
} |
|
|
|
|
|
|
|
// 协议条款
|
|
|
|
LambdaQueryWrapper<TbsCostTodo> todoLqw = new LambdaQueryWrapper<>(); |
|
|
|
todoLqw.eq(TbsCostTodo::getCostApplyId, tbsCostApply.getId()); |
|
|
|
List<TbsCostTodo> costTodoList = tbsCostTodoMapper.selectList(todoLqw); |
|
|
|
List<TbsContractCostSubItem.ToDoItem> toDoItemList = new ArrayList<>(); |
|
|
|
for (TbsCostTodo costTodo : costTodoList) { |
|
|
|
TbsContractCostSubItem.ToDoItem toDoItem = new TbsContractCostSubItem.ToDoItem(); |
|
|
|
toDoItem.setServiceDescription(costTodo.getDescr()); |
|
|
@ -673,8 +745,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
toDoItem.setDeliveryDate(costTodo.getPrePayDate()==null?null : costTodo.getPrePayDate().toString()); |
|
|
|
toDoItem.setAgreeRemark(costTodo.getRemark()); |
|
|
|
toDoItem.setAgreeCompleteState(costTodo.getFinishedFlag().equals(1)?"已完成":"未完成"); |
|
|
|
toDoItemList.add(toDoItem); |
|
|
|
subList.add(toDoItem); |
|
|
|
} |
|
|
|
newWayData.put("formson_1989",toDoItemList); |
|
|
|
//构造客户维度的 年度、季度合计
|
|
|
|
// try {
|
|
|
|
// List<TbsContractCostSubItem.CusCenterRate> cusCenterRateList = buildCusRateMain(supplier);
|
|
|
@ -686,10 +760,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
data.put("sub", subList); |
|
|
|
} |
|
|
|
|
|
|
|
private void buildActivityCenterGoodsSeeyonData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<Object> subList) { |
|
|
|
private void buildActivityCenterGoodsSeeyonData(String id, TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<Object> subList,Map<String,Object> newWayData) { |
|
|
|
LambdaQueryWrapper<TbsActivityCenterGoods> actCgLqw = new LambdaQueryWrapper<>(); |
|
|
|
actCgLqw.eq(TbsActivityCenterGoods::getCostApplyId, id); |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsMapper.selectList(actCgLqw); |
|
|
|
List<TbsContractCostSubItem.Activity> resultList = new ArrayList<>(); |
|
|
|
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { |
|
|
|
TbsActivity currActivity = null; |
|
|
|
for (TbsActivity activity : activityList) { |
|
|
@ -713,6 +788,10 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC |
|
|
|
dataActivity.setActivityCostCenterName(centerGoods.getCenterName()+"("+centerGoods.getCenterType()+")"); |
|
|
|
dataActivity.setMoney(centerGoods.getCenterGoodsAmount()); |
|
|
|
subList.add(dataActivity); |
|
|
|
resultList.add(dataActivity); |
|
|
|
} |
|
|
|
if(resultList.size()>0){ |
|
|
|
newWayData.put("formson_1990",resultList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|