diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java index 0d3b399a..a03e0ab6 100644 --- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java +++ b/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) { diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java index f406f4c1..d6953d27 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java index 421455f1..60e49514 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBatchBo.java +++ b/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 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{ + + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java index 740656c7..324e2cea 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java +++ b/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, diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetBatchItemService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetBatchItemService.java index 354e5b95..1850089e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetBatchItemService.java +++ b/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 { + List listByBatchId(Long batchId); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchItemServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchItemServiceImpl.java index caebbe79..9e0b8554 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchItemServiceImpl.java +++ b/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 implements TbsBudgetBatchItemService { + @Override + public List listByBatchId(Long batchId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsBudgetBatchItem::getBatchId,batchId); + return this.list(lqw); + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java index 86ed892d..0db3b367 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java +++ b/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 budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); + return null; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java index f6dc33cd..905d4fc3 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java +++ b/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 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 batchItems = new ArrayList<>(); + + Map 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 flowIdResult = seeYonService.baseCreateProcess(createProcess); + if(flowIdResult.getStatus()!=200){ + Assert.throwEx("远程服务调用失败"); + } + String formId = null; + R 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; } }