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 b9de617e..7a1a8ab2 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 @@ -7,8 +7,10 @@ import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.SpringUtils; import com.qs.serve.modules.sys.entity.SysOperationLog; import com.qs.serve.modules.sys.mapper.SysOperationLogMapper; +import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.service.impl.TbsBudgetApplyOperationServiceImpl; import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; import com.qs.serve.modules.tzc.service.impl.TzcPolicyOperationServiceImpl; import com.qs.serve.modules.vtb.entity.VtbVerification; @@ -72,6 +74,35 @@ public class AsyncFactory { }; } + /** + * 异步保存费用申请状态 + * @param budgetId + * @return + */ + public static TimerTask submitBudgetApply(String budgetId) { + 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(TbsCostApplyOperationServiceImpl.SummeryState_Success)){ + //调用成功回调方法 + TbsAffairCommitBo finishedParam = new TbsAffairCommitBo(); + finishedParam.setTargetId(budgetId); + applyOperationService.doFinished(finishedParam); + } + log.debug("--------------------------SubmitBudgetApply CallbackTimer summeryResult:{} ------------------------------",summeryResult); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + } + /** * 异步保存费用申请状态 * @param costApply diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java index 660c4a3f..1461f36f 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java @@ -65,6 +65,10 @@ public class BmsSubject implements Serializable { @Length(max = 255,message = "备注长度不能超过255字") private String remark; + private String thirdCode; + + private String thirdName; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 78583736..9b49dc3d 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.seeyon.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.framework.manager.AsyncFactory; +import com.qs.serve.common.framework.manager.AsyncManager; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.*; @@ -314,6 +316,9 @@ public interface SeeYonOperationService extends SeeYonBaseService{ } }else if ("next".equals(flag)){ this.doNext(affairCommit); + + //请求校验是否成功 + AsyncManager.me().execute(AsyncFactory.submitBudgetApply(affairCommit.getTargetId())); return R.ok(); } }else if (result.getStatus()==500){ diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java index 23e007ac..a3f64423 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java @@ -1,7 +1,9 @@ package com.qs.serve.modules.tbs.controller; import com.qs.serve.common.model.dto.R; +import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetUpdateAfterStartBo; +import com.qs.serve.modules.tbs.service.TbsBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -17,13 +19,15 @@ import org.springframework.web.bind.annotation.*; @RequestMapping("tbs/budgetCheck") public class TbsBudgetCheckController { + private final TbsBudgetService tbsBudgetService; + /** * 提交申请 * @return */ @PostMapping("commitApply/{id}") - public R commitApply(@PathVariable("id") String id){ - + public R commitApply(@PathVariable("id") Long id){ + tbsBudgetService.commitApply(id); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java index 7ff8526e..2758cf10 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java @@ -119,6 +119,7 @@ public class TbsActivitySubject implements Serializable { @JsonProperty private String delFlag; + /** 模板唯一健 */ private String tmpUk; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index faeeb281..3d598fdc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -104,6 +104,9 @@ public class TbsBudget implements Serializable { /** 致远表单id */ private String syFormId; + /** 提交审批时间 */ + private LocalDateTime submitTime; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java index d4dd0fd5..b14abff2 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java @@ -19,6 +19,12 @@ import java.util.List; */ public interface TbsBudgetService extends IService { + /** + * 提交申请 + * @param id + */ + void commitApply(Long id); + /** * 修改 * @param budgetBo diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 3a1ff9e4..9d5e9329 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -3,8 +3,13 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.model.enums.BudgetLogOptFlag; import com.qs.serve.common.util.*; +import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.modules.bms.entity.BmsSubject; import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.goods.entity.GoodsCategory; @@ -14,6 +19,8 @@ import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.sys.entity.SysAttach; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysAttachService; @@ -21,6 +28,7 @@ import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsGoodsType; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.consts.ConditionMapEnum; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; @@ -42,6 +50,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -76,8 +85,56 @@ public class TbsBudgetServiceImpl extends ServiceImpl private final VtbFundFlowService vtbFundFlowService; private SysAttachService attachService; + private SeeYonRequestService seeYonService; + private ProjectProperties projectProperties; + @Override + public void commitApply(Long id) { + seeYonService.testConnection(); + SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); + TbsBudget tbsBudget = this.getById(id); + Map data = new HashMap<>(); + data.put("exsp5", tbsBudget.getBudgetCode()); + data.put("orgId", tbsBudget.getId().toString()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("targetId", tbsBudget.getId()+""); + data.put("targetCode", tbsBudget.getBudgetNumber()); + data.put("exsp1",TbsSeeYonConst.CostApplyContractConf.Code()); + //添加跳转地址业务 + String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.CostApplyConf.Code(),id+""); + data.put("cmsLink",baseJumpUrl); + + data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","03"); + + String templateCode = TbsSeeYonConst.BudgetApplyConf.Code(); + BaseCreateProcessBo createProcess = new BaseCreateProcessBo(); + createProcess.setTemplateCode(templateCode); + createProcess.setMemberLoginName(sysUser.getSyAccount()); + createProcess.setSubjectTitle(tbsBudget.getBudgetCode()+"【"+tbsBudget.getBudgetNumber()+"】"); + createProcess.setTargetId(tbsBudget.getId()+""); + createProcess.setDataJson(JsonUtil.objectToJson(data)); + R flowIdResult = seeYonService.baseCreateProcess(createProcess); + if(flowIdResult.getStatus()!=200){ + Assert.throwEx("远程服务调用失败"); + } + String formId = null; + R formIdResult = seeYonService.getFormId(templateCode,tbsBudget.getId()); + if(formIdResult.getStatus()==200){ + formId = formIdResult.getData(); + } + tbsBudget.setSubmitTime(LocalDateTime.now()); + tbsBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply); + tbsBudget.setSyFormId(formId); + this.updateById(tbsBudget); + + //请求校验是否成功 + AsyncManager.me().execute(AsyncFactory.submitBudgetApply(tbsBudget.getId()+"")); + + } + @Override @Transactional(rollbackFor = Exception.class) public void modify(TbsBudgetBo budgetBo) { diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 1a04c5aa..e5d76443 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -577,8 +577,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl tbsActivitySubjects = tbsActivitySubjectService.listByCostApplyId(Long.parseLong(id)); - String concatSubjectCodes = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectCode).collect(Collectors.joining(",")); - String concatSubjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).collect(Collectors.joining(",")); + List subjectIds = tbsActivitySubjects.stream().map(a->a.getSubjectId()).collect(Collectors.toList()); + if(subjectIds.size()>0){ + List subjectList = subjectService.listByIds(subjectIds); + String concatSubjectCodes = subjectList.stream().map(BmsSubject::getThirdCode).collect(Collectors.joining(",")); + String concatSubjectNames = subjectList.stream().map(BmsSubject::getThirdName).collect(Collectors.joining(",")); + + data.put("financeAccountCode",concatSubjectCodes); + data.put("financeAccountName",concatSubjectNames); + data.put("accountCode",concatSubjectCodes); + data.put("accountName",concatSubjectNames); + } TbsCostContract contract = contracts.get(0); data.put("payee",contract.getPayee()); @@ -589,12 +598,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl