21 changed files with 401 additions and 101 deletions
@ -0,0 +1,108 @@ |
|||
package com.qs.serve.modules.tbs.controller; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.qs.serve.common.model.annotation.LimitSubmit; |
|||
import com.qs.serve.common.model.annotation.SysLog; |
|||
import com.qs.serve.common.model.dto.PageVo; |
|||
import com.qs.serve.common.model.dto.R; |
|||
import com.qs.serve.common.model.enums.BizType; |
|||
import com.qs.serve.common.model.enums.SystemModule; |
|||
import com.qs.serve.common.util.AuthContextUtils; |
|||
import com.qs.serve.common.util.PageUtil; |
|||
import com.qs.serve.common.util.StringUtils; |
|||
import com.qs.serve.modules.seeyon.entity.CtpAffairQo; |
|||
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; |
|||
import com.qs.serve.modules.tbs.entity.TbsCostTodo; |
|||
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; |
|||
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; |
|||
import com.qs.serve.modules.tbs.service.TbsCostTodoService; |
|||
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; |
|||
import com.qs.serve.modules.tbs.service.impl.TbsCostTodoOperationServiceImpl; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.security.access.prepost.PreAuthorize; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.validation.Valid; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 预算 协议条款(审批) |
|||
* @author YenHex |
|||
* @since 2023-02-17 |
|||
*/ |
|||
@Slf4j |
|||
@AllArgsConstructor |
|||
@RestController |
|||
@RequestMapping("tbs/costTodo") |
|||
public class TbsCostTodoCheckController { |
|||
|
|||
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; |
|||
|
|||
|
|||
/** |
|||
* 审批列表(用于详情页) |
|||
* @param costApplyId |
|||
* @return |
|||
*/ |
|||
@GetMapping("/ListAffairs") |
|||
public R<List<CtpAffairVo>> pageAffair(String costApplyId){ |
|||
return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId); |
|||
} |
|||
|
|||
/** |
|||
* 审批列表(翻页) |
|||
* @param param |
|||
* @return |
|||
*/ |
|||
@GetMapping("/pageMemberAffair") |
|||
public R<PageVo<CtpAffairVo>> pageMemberAffair(CtpAffairQo param){ |
|||
return tbsCostApplyOperationServiceImpl.pageMemberAffair(param); |
|||
} |
|||
/** |
|||
* 提交审批节点 |
|||
* @return |
|||
*/ |
|||
@LimitSubmit |
|||
@PostMapping("/commitAffair") |
|||
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) |
|||
@PreAuthorize("hasRole('tbs:costApply:commit')") |
|||
public R<?> commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ |
|||
return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit); |
|||
} |
|||
|
|||
/** |
|||
* 补偿按钮 |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
@LimitSubmit |
|||
@PostMapping("/compensate/{id}") |
|||
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE) |
|||
public R<?> compensate(@PathVariable("id") String id){ |
|||
return tbsCostApplyOperationServiceImpl.runCompensate(id); |
|||
} |
|||
|
|||
/** |
|||
* 加签 |
|||
* @param param |
|||
* @return |
|||
*/ |
|||
@LimitSubmit |
|||
@PostMapping("/addNode") |
|||
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) |
|||
public R<String> addNode(@RequestBody CtpAddNodeParam param){ |
|||
return tbsCostApplyOperationServiceImpl.addNode(param); |
|||
} |
|||
|
|||
/** |
|||
* 获取未完成审批统计(个人) |
|||
* @return |
|||
*/ |
|||
@PostMapping("/getAffairUnfinished") |
|||
public R<Long> getUnfinished(){ |
|||
return tbsCostApplyOperationServiceImpl.getUnfinished(); |
|||
} |
|||
|
|||
} |
|||
|
@ -0,0 +1,166 @@ |
|||
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.model.dto.R; |
|||
import com.qs.serve.common.util.*; |
|||
import com.qs.serve.common.util.model.DateFormatString; |
|||
import com.qs.serve.modules.data.service.DataAffairCommitService; |
|||
import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; |
|||
import com.qs.serve.modules.seeyon.service.SeeYonOperationService; |
|||
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; |
|||
import com.qs.serve.modules.sys.entity.SysUser; |
|||
import com.qs.serve.modules.sys.mapper.SysUserMapper; |
|||
import com.qs.serve.modules.tbs.common.TbsCommonCheckState; |
|||
import com.qs.serve.modules.tbs.common.TbsSeeYonConst; |
|||
import com.qs.serve.modules.tbs.entity.TbsBudget; |
|||
import com.qs.serve.modules.tbs.entity.TbsCostTodo; |
|||
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; |
|||
import com.qs.serve.modules.tbs.mapper.TbsCostTodoMapper; |
|||
import com.qs.serve.modules.tbs.service.TbsCostTodoService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 费用申请代办 服务实现类 |
|||
* @author YenHex |
|||
* @since 2023-02-17 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class TbsCostTodoOperationServiceImpl implements SeeYonOperationService { |
|||
|
|||
private final TbsCostTodoMapper tbsCostTodoMapper; |
|||
private final SysUserMapper sysUserMapper; |
|||
private final ProjectProperties projectProperties; |
|||
private final SeeYonRequestService seeYonService; |
|||
|
|||
/** |
|||
* 提交 |
|||
* @param costTodo |
|||
*/ |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void submit(TbsCostTodo costTodo){ |
|||
String templateCode = this.getTemplateCode(); |
|||
SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId()); |
|||
Map<String,Object> data = new HashMap<>(); |
|||
String todoCode = "XY"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.AgreeCheck); |
|||
costTodo.setTodoCode(todoCode); |
|||
tbsCostTodoMapper.insert(costTodo); |
|||
Long todoId = costTodo.getId(); |
|||
data.put("exsp5", todoCode); |
|||
data.put("orgId", todoId); |
|||
data.put("applyUserCode", sysUser.getCode()); |
|||
data.put("applyUserName", sysUser.getName()); |
|||
data.put("empId", sysUser.getSyUserId()); |
|||
data.put("targetId", todoId); |
|||
data.put("targetCode", todoCode); |
|||
data.put("exsp1", templateCode); |
|||
//添加跳转地址业务
|
|||
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),templateCode,todoId+""); |
|||
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("[协议条款]"+costTodo.getDescr().substring(0,30)); |
|||
createProcess.setTargetId(todoId+""); |
|||
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,todoId); |
|||
if(formIdResult.getStatus()==200){ |
|||
formId = formIdResult.getData(); |
|||
} |
|||
costTodo.setSubmitTime(LocalDateTime.now()); |
|||
costTodo.setSyFormId(formId); |
|||
tbsCostTodoMapper.updateById(costTodo); |
|||
|
|||
} |
|||
|
|||
@Override |
|||
public String getTemplateCode() { |
|||
return TbsSeeYonConst.CheckCostAgreeConf.Code(); |
|||
} |
|||
|
|||
@Override |
|||
public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) { |
|||
TbsCostTodo obj = tbsCostTodoMapper.selectById(affairCommit.getTargetId()); |
|||
if(!obj.getCheckStatus().equals(TbsCommonCheckState.State_1_apply)){ |
|||
Assert.throwEx("操作失败,条款处于非审批状态"); |
|||
} |
|||
return obj.getSyFormId(); |
|||
} |
|||
|
|||
@Override |
|||
public Object doBacked(TbsAffairCommitBo param) { |
|||
TbsCostTodo costTodo = new TbsCostTodo(); |
|||
costTodo.setId(Long.parseLong(param.getTargetId())); |
|||
costTodo.setCheckStatus(TbsCommonCheckState.State_3_setback); |
|||
tbsCostTodoMapper.updateById(costTodo); |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public Object doFinished(TbsAffairCommitBo param) { |
|||
TbsCostTodo costTodo = new TbsCostTodo(); |
|||
costTodo.setId(Long.parseLong(param.getTargetId())); |
|||
costTodo.setFinishedTime(LocalDateTime.now()); |
|||
costTodo.setFinishedFlag(1); |
|||
costTodo.setCheckStatus(TbsCommonCheckState.State_2_finished); |
|||
tbsCostTodoMapper.updateById(costTodo); |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public Object doRefuse(TbsAffairCommitBo param) { |
|||
TbsCostTodo costTodo = new TbsCostTodo(); |
|||
costTodo.setId(Long.parseLong(param.getTargetId())); |
|||
costTodo.setCheckStatus(TbsCommonCheckState.State_4_stop); |
|||
tbsCostTodoMapper.updateById(costTodo); |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public boolean checkSyFormIdIsNotNull(String targetId) { |
|||
TbsCostTodo obj = tbsCostTodoMapper.selectById(targetId); |
|||
return obj.getSyFormId()!=null; |
|||
} |
|||
|
|||
@Override |
|||
public void doCommitBacked(String targetId) { |
|||
String summeryResult = this.checkAffairSummery(targetId); |
|||
if(summeryResult.equals(TbsCostApplyOperationServiceImpl.SummeryState_Success)){ |
|||
DataAffairCommitService commitService = SpringUtils.getBean(DataAffairCommitService.class); |
|||
// TbsAffairCommitBo.state 0-否定,1-同意,2-退回
|
|||
Integer state = commitService.getState(this.getTemplateCode(),targetId+""); |
|||
//获取最后一条审批判断结果
|
|||
if(state==null){ |
|||
return; |
|||
} |
|||
TbsAffairCommitBo doParam = new TbsAffairCommitBo(); |
|||
doParam.setTargetId(targetId); |
|||
if (state == 1){ |
|||
this.doFinished(doParam); |
|||
}else if (state==2){ |
|||
this.doCommitBacked(targetId); |
|||
}else if (state==0){ |
|||
this.doRefuse(doParam); |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
Loading…
Reference in new issue