Browse Source

预算申请审批

v1.0
Yen 2 years ago
parent
commit
42e28f1d7e
  1. 31
      src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java
  2. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java
  3. 5
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  4. 8
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java
  5. 1
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubject.java
  6. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  7. 6
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java
  8. 57
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  9. 16
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

31
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

4
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")

5
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){

8
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();
}

1
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;

3
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")

6
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetService.java

@ -19,6 +19,12 @@ import java.util.List;
*/
public interface TbsBudgetService extends IService<TbsBudget> {
/**
* 提交申请
* @param id
*/
void commitApply(Long id);
/**
* 修改
* @param budgetBo

57
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<TbsBudgetMapper,TbsBudget>
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<String,Object> 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<String> flowIdResult = seeYonService.baseCreateProcess(createProcess);
if(flowIdResult.getStatus()!=200){
Assert.throwEx("远程服务调用失败");
}
String formId = null;
R<String> 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) {

16
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -577,8 +577,17 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
String concatCenterCodes = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterCode).collect(Collectors.joining(","));
String concatCenterNames = tbsActivityCenters.stream().map(TbsActivityCenter::getCenterName).collect(Collectors.joining(","));
List<TbsActivitySubject> 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<Long> subjectIds = tbsActivitySubjects.stream().map(a->a.getSubjectId()).collect(Collectors.toList());
if(subjectIds.size()>0){
List<BmsSubject> 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<TbsCostApplyMapper,TbsC
data.put("sealNum",contract.getSealNum());
data.put("fileNum",contract.getFileNum());
data.put("accountCode",concatSubjectCodes);
data.put("accountName",concatSubjectNames);
data.put("costCenterNo",concatCenterCodes);
data.put("costCenterName",concatCenterNames);
data.put("contractName",contract.getContractName());
data.put("applyMoney",contract.getContractAmount());
data.put("signDate",contract.getSignTime()==null?null:contract.getSignTime().toString());

Loading…
Cancel
Save