Browse Source

暂存批量导入预算审批

v1.0
Yen 2 years ago
parent
commit
e19057de0f
  1. 67
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  2. 1
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  3. 41
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java
  4. 8
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java
  5. 3
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetBatchItemService.java
  6. 9
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchItemServiceImpl.java
  7. 7
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  8. 90
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

67
src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java

@ -98,16 +98,52 @@ public class AsyncFactory {
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(SeeYonOperationService.SummeryState_Success)){
DataAffairCommitService commitService = SpringUtils.getBean(DataAffairCommitService.class);
// TbsAffairCommitBo.state 0-否定,1-同意,2-退回
// 获取最后一条审批判断结果:TbsAffairCommitBo.state 0-否定,1-同意,2-退回
Integer state = commitService.getState(applyOperationService.getTemplateCode(),budgetId+"");
//获取最后一条审批判断结果
if(state==null){
return;
//调用成功回调方法
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
if (state==null||state==1){
applyOperationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);
}else if (state==0){
applyOperationService.doRefuse(doParam);
}
}
log.debug("--------------------------SubmitBudgetApply CallbackTimer summeryResult:{} ------------------------------",summeryResult);
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
/**
* 异步保存费用申请状态
* @param batchId
* @return
*/
public static TimerTask submitBudgetBatch(String batchId) {
return new TimerTask() {
@Override
public void run() {
try {
AuthContextUtils.setTenant("001");
log.debug("--------------------------SubmitBudgetApply CallbackTimer Sleep Start------------------------------");
Thread.sleep(7*1000);
/*TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(SeeYonOperationService.SummeryState_Success)){
DataAffairCommitService commitService = SpringUtils.getBean(DataAffairCommitService.class);
// 获取最后一条审批判断结果:TbsAffairCommitBo.state 0-否定,1-同意,2-退回
Integer state = commitService.getState(applyOperationService.getTemplateCode(),budgetId+"");
//调用成功回调方法
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
if (state==1){
if (state==null||state==1){
applyOperationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);
@ -117,6 +153,7 @@ public class AsyncFactory {
}
log.debug("--------------------------SubmitBudgetApply CallbackTimer summeryResult:{} ------------------------------",summeryResult);
*/
} catch (Exception e) {
e.printStackTrace();
}
@ -140,10 +177,22 @@ public class AsyncFactory {
TbsBudgetApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsBudgetApplyOperationServiceImpl.class);
String summeryResult = applyOperationService.checkAffairSummery(budgetId);
if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){
//调用成功回调方法
TbsAffairCommitBo finishedParam = new TbsAffairCommitBo();
finishedParam.setTargetId(budgetId);
applyOperationService.doFinished(finishedParam);
DataAffairCommitService commitService = SpringUtils.getBean(DataAffairCommitService.class);
// TbsAffairCommitBo.state 0-否定,1-同意,2-退回
Integer state = commitService.getState(applyOperationService.getTemplateCode(),budgetId+"");
//获取最后一条审批判断结果
if(state==null){
return;
}
TbsAffairCommitBo doParam = new TbsAffairCommitBo();
doParam.setTargetId(budgetId);
if (state==null||state==1){
applyOperationService.doFinished(doParam);
}else if (state==2){
applyOperationService.doCommitBacked(budgetId);
}else if (state==0){
applyOperationService.doRefuse(doParam);
}
}
log.debug("--------------------------SubmitBudgetApply CallbackTimer summeryResult:{} ------------------------------",summeryResult);
} catch (Exception e) {

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

@ -26,6 +26,7 @@ public class CodeGenUtil {
Policy("policy"),
Budget("Budget"),
BudgetChange("BudgetChange"),
BudgetBatch("BudgetBatch"),
PolicyItem("policy_item");
private String code;
}

41
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java

@ -1,8 +1,49 @@
package com.qs.serve.modules.tbs.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author YenHex
* @since 2023/8/24
*/
@Data
public class TbsBudgetBatchBo {
private String remark;
List<BudgetMain> budgetList;
public static class BudgetMain{
/** 更新时必填 */
private String budgetCode;
private String scheduleName;
/** 科目编码 */
private String subjectCode;
/** 成本中心类型 */
@NotNull
private String centerType;
/** 成本中心名称 */
@NotNull
private String centerName;
private String bandNames;
private String categoryNames;
private String seriesNames;
}
public static class BudgetAmount{
}
}

8
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java

@ -27,6 +27,14 @@ public class TbsBudgetUpdateAfterStartBo implements Serializable {
/** 原来的更变记录id */
private String orgChangeId;
// /** 批量参数,用于新增:科目id */
// private String subjectId4Batch;
// /** 原来的更变记录id: */
// private String centerType4Batch;
// /** 原来的更变记录id */
// private String centerId4Batch;
/**
* 成本中心类型
center,

3
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetBatchItemService.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import java.util.List;
/**
* 批量申请项 服务接口
@ -10,5 +11,7 @@ import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
*/
public interface TbsBudgetBatchItemService extends IService<TbsBudgetBatchItem> {
List<TbsBudgetBatchItem> listByBatchId(Long batchId);
}

9
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchItemServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -8,6 +9,8 @@ import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchItemService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetBatchItemMapper;
import java.util.List;
/**
* 批量申请项 服务实现类
* @author YenHex
@ -18,5 +21,11 @@ import com.qs.serve.modules.tbs.mapper.TbsBudgetBatchItemMapper;
@AllArgsConstructor
public class TbsBudgetBatchItemServiceImpl extends ServiceImpl<TbsBudgetBatchItemMapper,TbsBudgetBatchItem> implements TbsBudgetBatchItemService {
@Override
public List<TbsBudgetBatchItem> listByBatchId(Long batchId) {
LambdaQueryWrapper<TbsBudgetBatchItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetBatchItem::getBatchId,batchId);
return this.list(lqw);
}
}

7
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java

@ -5,11 +5,14 @@ import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.tbs.common.TbsBudgetCheckState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatch;
import com.qs.serve.modules.tbs.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchItemService;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 预算导入申请底层方法
@ -22,6 +25,7 @@ import org.springframework.stereotype.Service;
public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationService {
private final TbsBudgetBatchService budgetBatchService;
private final TbsBudgetBatchItemService budgetBatchItemService;
@Override
public String getTemplateCode() {
@ -45,6 +49,9 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic
@Override
public Object doFinished(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
return null;
}

90
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

@ -1,6 +1,20 @@
package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.entity.TbsBudgetBatchItem;
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBatchBo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -9,6 +23,12 @@ import com.qs.serve.modules.tbs.entity.TbsBudgetBatch;
import com.qs.serve.modules.tbs.service.TbsBudgetBatchService;
import com.qs.serve.modules.tbs.mapper.TbsBudgetBatchMapper;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 批量申请 服务实现类
* @author YenHex
@ -19,10 +39,78 @@ import com.qs.serve.modules.tbs.mapper.TbsBudgetBatchMapper;
@AllArgsConstructor
public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,TbsBudgetBatch> implements TbsBudgetBatchService {
private final SysUserService sysUserService;
private final SeeYonRequestService seeYonService;
private final ProjectProperties projectProperties;
@Override
public Object commit(TbsBudgetBatchBo param) {
return null;
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
String batchCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetBatch);
String templateCode = TbsSeeYonConst.BudgetBatchApplyConf.Code();
//构建Batch
TbsBudgetBatch budgetBatch = new TbsBudgetBatch();
budgetBatch.setBatchTitle(sysUser.getName()+"发起了批量导入预算");
budgetBatch.setBatchCode(batchCode);
budgetBatch.setBatchState(TbsBudgetCheckState.State_0_unPublish);
//budgetBatch.setSyFormId();
budgetBatch.setUserId(sysUser.getId());
budgetBatch.setUserCode(sysUser.getCode());
budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark());
//保存后赋值
Long budgetBatchId = budgetBatch.getId();
//新增的生成为草稿
//修改的生成为更变记录
//构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
Map<String,Object> data = new HashMap<>();
data.put("exsp5", batchCode);
data.put("orgId", budgetBatchId);
data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName());
data.put("empId", sysUser.getSyUserId());
data.put("targetId", budgetBatchId);
data.put("targetCode", batchCode);
data.put("budgetCode", batchCode);
data.put("exsp1", templateCode);
//添加跳转地址业务
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),templateCode,budgetBatchId+"");
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("[预算导入]"+budgetBatch.getBatchTitle());
createProcess.setTargetId(budgetBatchId+"");
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,budgetBatchId);
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setBatchState(TbsBudgetCheckState.State_1_apply);
budgetBatch.setSyFormId(formId);
this.updateById(budgetBatch);
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,budgetBatchId+"");
seeYonService.createCallbackStatus(callbackBo);
//请求校验是否成功
AsyncManager.me().execute(AsyncFactory.submitBudgetBatch(budgetBatchId+""));
return budgetBatch;
}
}

Loading…
Cancel
Save