|
|
@ -1,22 +1,35 @@ |
|
|
|
package com.qs.serve.modules.tbs.service.impl; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
|
import com.qs.serve.common.util.CodeGenUtil; |
|
|
|
import com.qs.serve.common.config.properties.ProjectProperties; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncFactory; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncManager; |
|
|
|
import com.qs.serve.common.model.dto.R; |
|
|
|
import com.qs.serve.common.util.*; |
|
|
|
import com.qs.serve.common.util.model.DateFormatString; |
|
|
|
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo; |
|
|
|
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; |
|
|
|
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; |
|
|
|
import com.qs.serve.modules.sys.entity.SysUser; |
|
|
|
import com.qs.serve.modules.sys.service.SysUserService; |
|
|
|
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; |
|
|
|
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; |
|
|
|
import com.qs.serve.modules.tbs.common.util.TbsBudgetConditionUtil; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsBudget; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsBudgetChangeCondition; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; |
|
|
|
import com.qs.serve.modules.tbs.entity.*; |
|
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetAmtBo; |
|
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeConditionMapper; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount; |
|
|
|
import com.qs.serve.modules.tbs.mapper.*; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsBudgetChange; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsBudgetChangeService; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeMapper; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -31,13 +44,71 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe |
|
|
|
|
|
|
|
private final TbsBudgetMapper tbsBudgetMapper; |
|
|
|
private final TbsBudgetChangeConditionMapper tbsBudgetChangeConditionMapper; |
|
|
|
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; |
|
|
|
private final TbsBudgetChangeScheduleItemMapper tbsBudgetChangeScheduleItemMapper; |
|
|
|
private final SysUserService sysUserService; |
|
|
|
private final SeeYonRequestService seeYonService; |
|
|
|
private final ProjectProperties projectProperties; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void commitApply(TbsBudgetUpdateAfterStartBo param) { |
|
|
|
seeYonService.testConnection(); |
|
|
|
TbsBudget budget = tbsBudgetMapper.selectById(param.getId()); |
|
|
|
TbsBudgetChange budgetChange = buildBudgetChange(param, budget); |
|
|
|
String templateCode = TbsSeeYonConst.BudgetChangeConf.Code(); |
|
|
|
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); |
|
|
|
Map<String,Object> data = new HashMap<>(); |
|
|
|
data.put("exsp5", budgetChange.getChangeCode()); |
|
|
|
data.put("orgId", budgetChange.getId().toString()); |
|
|
|
data.put("applyUserCode", sysUser.getCode()); |
|
|
|
data.put("applyUserName", sysUser.getName()); |
|
|
|
data.put("targetId", budgetChange.getId()+""); |
|
|
|
data.put("targetCode", budgetChange.getChangeCode()); |
|
|
|
data.put("exsp1", templateCode); |
|
|
|
//添加跳转地址业务
|
|
|
|
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),templateCode,budgetChange.getId()+""); |
|
|
|
data.put("cmsLink",baseJumpUrl); |
|
|
|
data.put("rowDate", DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); |
|
|
|
data.put("rowState","03"); |
|
|
|
|
|
|
|
BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); |
|
|
|
createProcess.setTemplateCode(templateCode); |
|
|
|
createProcess.setMemberLoginName(sysUser.getSyAccount()); |
|
|
|
createProcess.setSubjectTitle("[预算修改]"+budgetChange.getBudgetTitle()+"("+budgetChange.getBudgetNumber()+")"); |
|
|
|
createProcess.setTargetId(budgetChange.getId()+""); |
|
|
|
createProcess.setDataJson(JsonUtil.objectToJson(data)); |
|
|
|
R<String> flowIdResult = seeYonService.baseCreateProcess(createProcess); |
|
|
|
if(flowIdResult.getStatus()!=200){ |
|
|
|
Assert.throwEx("远程服务调用失败"); |
|
|
|
} |
|
|
|
String formId = null; |
|
|
|
R<String> formIdResult = seeYonService.getFormId(templateCode,budgetChange.getId()); |
|
|
|
if(formIdResult.getStatus()==200){ |
|
|
|
formId = formIdResult.getData(); |
|
|
|
} |
|
|
|
budgetChange.setSubmitTime(LocalDateTime.now()); |
|
|
|
budgetChange.setBudgetCheckState(TbsBudgetCheckState.State_1_apply); |
|
|
|
budgetChange.setSyFormId(formId); |
|
|
|
|
|
|
|
//创建流程后回调
|
|
|
|
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,budgetChange.getId()+""); |
|
|
|
seeYonService.createCallbackStatus(callbackBo); |
|
|
|
|
|
|
|
//请求校验是否成功
|
|
|
|
AsyncManager.me().execute(AsyncFactory.submitBudgetApply(budgetChange.getId()+"")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建更变记录 |
|
|
|
* @param param |
|
|
|
* @param budget |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private TbsBudgetChange buildBudgetChange(TbsBudgetUpdateAfterStartBo param, TbsBudget budget) { |
|
|
|
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget); |
|
|
|
budgetChange.setChangeCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange)); |
|
|
|
boolean notChangeTitle = param.getBudgetCode()!=null&¶m.getBudgetCode().equals(budget.getBudgetCode()); |
|
|
|
boolean notChangeTitle = param.getBudgetCode()!=null&& param.getBudgetCode().equals(budget.getBudgetCode()); |
|
|
|
if(!notChangeTitle){ |
|
|
|
budgetChange.setNewBudgetTitle(param.getBudgetCode()); |
|
|
|
} |
|
|
@ -45,7 +116,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe |
|
|
|
Long changeId = budgetChange.getId(); |
|
|
|
//设置条件
|
|
|
|
List<TbsBudgetCondition> budgetConditionList = TbsBudgetConditionUtil.buildCondition( |
|
|
|
budget.getId(),param.getBrandIds(),param.getCategoryIds(),param.getSeriesIds(),param.getSpuIds(),param.getSkuIds()); |
|
|
|
budget.getId(), param.getBrandIds(), param.getCategoryIds(), param.getSeriesIds(), param.getSpuIds(), param.getSkuIds()); |
|
|
|
List<TbsBudgetChangeCondition> changeConditionList = budgetConditionList.stream().map(cond->{ |
|
|
|
TbsBudgetChangeCondition changeCondition = TbsBudgetChangeCondition.toNewObject(cond); |
|
|
|
changeCondition.setChangeId(changeId); |
|
|
@ -55,7 +126,38 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe |
|
|
|
tbsBudgetChangeConditionMapper.insert(changeCondition); |
|
|
|
} |
|
|
|
//设置金额
|
|
|
|
List<TbsBudgetAmtBo> budgetAmtUpdateList = param.getBudgetAmtUpdateList(); |
|
|
|
if(CollectionUtil.isNotEmpty(budgetAmtUpdateList)){ |
|
|
|
List<Long> budgetScheduleIds = budgetAmtUpdateList.stream().map(TbsBudgetAmtBo::getBudgetScheduleItemId).collect(Collectors.toList()); |
|
|
|
List<TbsBudgetLogWithAmount> budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(budgetScheduleIds); |
|
|
|
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetMapper.selectBatchIds(budgetScheduleIds); |
|
|
|
|
|
|
|
List<TbsBudgetChangeScheduleItem> changeScheduleItemList = new ArrayList<>(); |
|
|
|
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) { |
|
|
|
TbsBudgetChangeScheduleItem resultItem = TbsBudgetChangeScheduleItem.toNewObject(scheduleItemBudget); |
|
|
|
resultItem.setChangeId(changeId); |
|
|
|
//设置当前项调整的最终金额
|
|
|
|
for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) { |
|
|
|
if(withAmount.getId().equals(scheduleItemBudget.getScheduleItemId())){ |
|
|
|
resultItem.setBudgetAmount(withAmount.getAmt()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
//设置更新的金额
|
|
|
|
for (TbsBudgetAmtBo budgetAmtBo : budgetAmtUpdateList) { |
|
|
|
if(budgetAmtBo.getBudgetScheduleItemId().equals(scheduleItemBudget.getId())){ |
|
|
|
resultItem.setNewPreDispatchAmount(budgetAmtBo.getPreDispatchAmount()); |
|
|
|
resultItem.setNewBudgetAmount(budgetAmtBo.getBudgetAmount()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
changeScheduleItemList.add(resultItem); |
|
|
|
} |
|
|
|
for (TbsBudgetChangeScheduleItem item : changeScheduleItemList) { |
|
|
|
tbsBudgetChangeScheduleItemMapper.insert(item); |
|
|
|
} |
|
|
|
} |
|
|
|
return budgetChange; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|