146 changed files with 5291 additions and 1106 deletions
@ -0,0 +1,23 @@ |
|||||
|
package com.yxt.anrui.flowable.api.flowapprover; |
||||
|
|
||||
|
import com.yxt.common.core.domain.BaseEntity; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class FlowApprover extends BaseEntity { |
||||
|
private static final long serialVersionUID = 8140464420543873852L; |
||||
|
@ApiModelProperty("申请sid") |
||||
|
private String businessSid; |
||||
|
@ApiModelProperty("序号") |
||||
|
private Integer sortNo; |
||||
|
@ApiModelProperty("审批人sid") |
||||
|
private String approverSid; |
||||
|
@ApiModelProperty("审批人名称") |
||||
|
private String approvalName; |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
package com.yxt.anrui.flowable.api.flowapprover; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class FlowApproverDto { |
||||
|
|
||||
|
@ApiModelProperty("申请sid") |
||||
|
private String businessSid; |
||||
|
@ApiModelProperty("审批人sid") |
||||
|
private List<String> approverSidList; |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
package com.yxt.anrui.flowable.api.flowcc; |
||||
|
|
||||
|
import com.yxt.common.core.domain.BaseEntity; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class FlowCc extends BaseEntity { |
||||
|
private static final long serialVersionUID = -4299550952719113083L; |
||||
|
@ApiModelProperty("申请sid") |
||||
|
private String businessSid; |
||||
|
@ApiModelProperty("抄送人sids") |
||||
|
private String ccSids; |
||||
|
@ApiModelProperty("抄送人名称") |
||||
|
private String ccNames; |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flow4; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.yxt.anrui.flowable.api.flow.Flowable; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Mapper |
||||
|
public interface Flow4Mapper extends BaseMapper<Flowable> { |
||||
|
|
||||
|
List<String> selectByProcInstId(String instanceId); |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.anrui.flowable.biz.flow4.Flow4Mapper"> |
||||
|
<select id="selectByProcInstId" resultType="java.lang.String"> |
||||
|
select ASSIGNEE_ |
||||
|
from act_hi_taskinst |
||||
|
where PROC_INST_ID_ = #{instanceId} |
||||
|
</select> |
||||
|
</mapper> |
@ -0,0 +1,111 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flow4; |
||||
|
|
||||
|
import cn.hutool.core.bean.BeanUtil; |
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
||||
|
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; |
||||
|
import com.yxt.anrui.flowable.biz.flow2.FlowRest; |
||||
|
import com.yxt.anrui.flowable.feign.form.MessageFlowVo; |
||||
|
import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery; |
||||
|
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; |
||||
|
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo; |
||||
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
||||
|
import com.yxt.anrui.portal.api.sysuser.UserByRolesAndOrgQuery; |
||||
|
import com.yxt.common.base.utils.StringUtils; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import org.apache.tomcat.util.threads.ThreadPoolExecutor; |
||||
|
import org.flowable.task.api.history.HistoricTaskInstance; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import java.util.*; |
||||
|
import java.util.concurrent.*; |
||||
|
|
||||
|
/** |
||||
|
* @description: 通用审批 |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@RestController |
||||
|
@RequestMapping("v4/flow") |
||||
|
public class Flow4Rest { |
||||
|
|
||||
|
Logger log = LoggerFactory.getLogger(FlowRest.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private Flow4Service flowService; |
||||
|
|
||||
|
@PostMapping("/startProcess") |
||||
|
public ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables bv) { |
||||
|
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail(); |
||||
|
//获取表单中的参数
|
||||
|
Map<String, Object> formVariables = bv.getFormVariables(); |
||||
|
formVariables = formVariables == null ? new HashMap<>() : formVariables; |
||||
|
//发起人的组织全路径
|
||||
|
String orgPath = bv.getOrgSidPath(); |
||||
|
formVariables.put("createrOrgPath", orgPath); |
||||
|
formVariables.put("businessSid", bv.getBusinessSid()); |
||||
|
|
||||
|
//启动流程实例
|
||||
|
ResultBean<UpdateFlowFieldVo> startResultBean = flowService.businessStartProcessInstanceById(bv); |
||||
|
return startResultBean; |
||||
|
} |
||||
|
|
||||
|
@PostMapping("/submit2") |
||||
|
ResultBean submit2() { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
List<String> userIds = new ArrayList<>(); |
||||
|
userIds.add("aaa"); |
||||
|
userIds.add("bbb"); |
||||
|
userIds.add("ccc"); |
||||
|
|
||||
|
Map<String, Object> variables = new HashMap<>(); |
||||
|
variables.put("approvers", userIds); |
||||
|
BusinessVariables bv = new BusinessVariables(); |
||||
|
bv.setFormVariables(variables); |
||||
|
bv.setModelId("process_wj9q4vwi:1:17170004"); |
||||
|
bv.setUserSid("7f56f6ec-4a5f-47b0-aaab-158d64cb97b1"); |
||||
|
//启动流程
|
||||
|
ResultBean<UpdateFlowFieldVo> voResultBean = startProcess(bv); |
||||
|
System.out.println("voResultBean{}" + voResultBean); |
||||
|
return rb.success(); |
||||
|
} |
||||
|
|
||||
|
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv) { |
||||
|
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail(); |
||||
|
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = flowService.handleProsess(bv, true); |
||||
|
//添加抄送
|
||||
|
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean)); |
||||
|
//需要判断办结后再执行 TODO
|
||||
|
if (updateFlowFieldVoResultBean.getSuccess()) { |
||||
|
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean)); |
||||
|
if ("Event_end".equals(updateFlowFieldVoResultBean.getData().getTaskDefKey())) { |
||||
|
try { |
||||
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
||||
|
.setNameFormat("demo-pool-%d").build(); |
||||
|
ExecutorService pool = new ThreadPoolExecutor(2, 100, |
||||
|
0L, TimeUnit.MILLISECONDS, |
||||
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); |
||||
|
|
||||
|
Future future1 = pool.submit(() -> { |
||||
|
HashMap<String, Object> map = new HashMap<>(); |
||||
|
map.put("bv", bv); |
||||
|
UpdateFlowFieldVo ufVo = updateFlowFieldVoResultBean.getData(); |
||||
|
ufVo.setTaskId(bv.getTaskId()); |
||||
|
map.put("uff", ufVo); |
||||
|
flowService.cc(map, bv.getTaskDefKey()); |
||||
|
}); |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return rb.setMsg("抄送失败"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return updateFlowFieldVoResultBean; |
||||
|
} |
||||
|
} |
@ -0,0 +1,441 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flow4; |
||||
|
|
||||
|
import cn.hutool.core.bean.BeanUtil; |
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.yxt.anrui.flowable.api.flow.Flowable; |
||||
|
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApprover; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApproverDto; |
||||
|
import com.yxt.anrui.flowable.api.flowcc.FlowCc; |
||||
|
import com.yxt.anrui.flowable.api.flowcomment.FlowComment; |
||||
|
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; |
||||
|
import com.yxt.anrui.flowable.api.processcomment.ProcessCommentDto; |
||||
|
import com.yxt.anrui.flowable.api.utils.ProcDefEnum; |
||||
|
import com.yxt.anrui.flowable.biz.flow2.FlowMapper; |
||||
|
import com.yxt.anrui.flowable.biz.flowapprover.FlowApproverService; |
||||
|
import com.yxt.anrui.flowable.biz.flowcc.FlowCcService; |
||||
|
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService; |
||||
|
import com.yxt.anrui.flowable.biz.process.ProcessService; |
||||
|
import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService; |
||||
|
import com.yxt.anrui.flowable.common.ProcessConstants; |
||||
|
import com.yxt.anrui.flowable.feign.MessageFeign; |
||||
|
import com.yxt.anrui.flowable.feign.form.MessageFlowVo; |
||||
|
import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery; |
||||
|
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; |
||||
|
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign; |
||||
|
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery; |
||||
|
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo; |
||||
|
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign; |
||||
|
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo; |
||||
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
||||
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
||||
|
import com.yxt.anrui.portal.api.sysuser.UserByRolesAndOrgQuery; |
||||
|
import com.yxt.anrui.portal.api.sysuser.UserssQuery; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import com.yxt.common.base.utils.StringUtils; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.flowable.bpmn.model.BpmnModel; |
||||
|
import org.flowable.bpmn.model.FlowElement; |
||||
|
import org.flowable.bpmn.model.UserTask; |
||||
|
import org.flowable.common.engine.impl.identity.Authentication; |
||||
|
import org.flowable.engine.*; |
||||
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; |
||||
|
import org.flowable.engine.repository.ProcessDefinition; |
||||
|
import org.flowable.engine.runtime.ProcessInstance; |
||||
|
import org.flowable.task.api.DelegationState; |
||||
|
import org.flowable.task.api.Task; |
||||
|
import org.flowable.task.api.history.HistoricTaskInstance; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import java.util.*; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
public class Flow4Service extends MybatisBaseService<Flow4Mapper, Flowable> { |
||||
|
|
||||
|
@Autowired |
||||
|
RepositoryService repositoryService; |
||||
|
@Autowired |
||||
|
RuntimeService runtimeService; |
||||
|
|
||||
|
@Autowired |
||||
|
ManagementService managementService; |
||||
|
@Autowired |
||||
|
ProcessEngineConfigurationImpl processEngineConfiguration; |
||||
|
@Autowired |
||||
|
private SysUserFeign sysUserFeign; |
||||
|
|
||||
|
@Autowired |
||||
|
protected IdentityService identityService; |
||||
|
@Autowired |
||||
|
protected TaskService taskService; |
||||
|
@Autowired |
||||
|
private SysFlowableConfigFeign sysFlowableConfigFeign; |
||||
|
@Autowired |
||||
|
private FlowTaskService flowTaskService; |
||||
|
@Autowired |
||||
|
private ProcessCommentService processCommentService; |
||||
|
|
||||
|
@Autowired |
||||
|
protected HistoryService historyService; |
||||
|
|
||||
|
@Autowired |
||||
|
private ProcessService processService; |
||||
|
|
||||
|
@Autowired |
||||
|
private MessageFeign messageFeign; |
||||
|
@Autowired |
||||
|
private SysFlowccFeign sysFlowccFeign; |
||||
|
|
||||
|
@Autowired |
||||
|
private FlowApproverService flowApproverService; |
||||
|
@Autowired |
||||
|
private FlowCcService flowCcService; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 启动流程 |
||||
|
* |
||||
|
* @param bv |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById(BusinessVariables bv) { |
||||
|
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail(); |
||||
|
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo(); |
||||
|
String procDefId = bv.getModelId(); |
||||
|
String userSid = bv.getUserSid(); |
||||
|
String nextNodeUserSids = bv.getNextNodeUserSids(); |
||||
|
Map<String, Object> variables = bv.getFormVariables(); |
||||
|
// 获取审批人列表
|
||||
|
List<String> approvers = (List<String>) variables.get("approvers"); |
||||
|
// 获取抄送人列表
|
||||
|
List<String> ccList = (List<String>) variables.get("ccList"); |
||||
|
|
||||
|
|
||||
|
//根据流程定义id查询
|
||||
|
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId) |
||||
|
.latestVersion().singleResult(); |
||||
|
if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) { |
||||
|
return rb.setMsg("流程已被挂起,请先激活流程"); |
||||
|
} |
||||
|
// 设置流程发起人Id到流程中
|
||||
|
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(userSid); |
||||
|
SysUserVo sysUser = sysUserVoResultBean.getData(); |
||||
|
identityService.setAuthenticatedUserId(sysUser.getSid()); |
||||
|
variables.put(ProcessConstants.PROCESS_INITIATOR, userSid); |
||||
|
variables.put(ProcessConstants.USER_TYPE_ASSIGNEE, userSid); |
||||
|
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); |
||||
|
// 给第一步申请人节点设置任务执行人和意见
|
||||
|
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult(); |
||||
|
if (Objects.nonNull(task)) { |
||||
|
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.START.getType(), |
||||
|
sysUser.getName() + "发起流程申请"); |
||||
|
taskService.setAssignee(task.getId(), userSid); |
||||
|
taskService.complete(task.getId(), variables); |
||||
|
} |
||||
|
assembleFlowApprover(bv); |
||||
|
//查询当前实例的最新待办任务
|
||||
|
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list(); |
||||
|
task = tasks.get(0); |
||||
|
Integer sortNo = sortNo(procDefId, task.getTaskDefinitionKey()); |
||||
|
System.out.println("获取环节序号================" + sortNo); |
||||
|
String approverSid = flowApproverService.selectApproverSid(bv.getBusinessSid(), sortNo); |
||||
|
String id_ = task.getId(); |
||||
|
String task_def_key_ = task.getTaskDefinitionKey(); |
||||
|
String nodeState = task.getName(); |
||||
|
//查询下一环节是否有转办并添加评论
|
||||
|
nextNodeUserSids = change(approverSid, processInstance.getProcessInstanceId()); |
||||
|
taskService.setAssignee(id_, nextNodeUserSids); |
||||
|
taskService.setVariablesLocal(id_, variables); |
||||
|
updateFlowFieldVo.setProcInsId(task.getProcessInstanceId()); |
||||
|
updateFlowFieldVo.setNodeState(nodeState); |
||||
|
updateFlowFieldVo.setTaskId(id_); |
||||
|
updateFlowFieldVo.setTaskDefKey(task_def_key_); |
||||
|
updateFlowFieldVo.setProcDefId(bv.getModelId()); |
||||
|
updateFlowFieldVo.setSid(bv.getBusinessSid()); |
||||
|
updateFlowFieldVo.setName(processDefinition.getName()); |
||||
|
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功"); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询下一环节用户是否有转办用户,若有转办用户则添加转办评论 |
||||
|
* |
||||
|
* @param nextNodeUserSids 下一环节用户 |
||||
|
* @param instanceId 实例id |
||||
|
* @return |
||||
|
*/ |
||||
|
public String change(String nextNodeUserSids, String instanceId) { |
||||
|
//查询下一环节是否有转办
|
||||
|
String firstSid = ""; |
||||
|
String firstName = ""; |
||||
|
//默认无转办
|
||||
|
boolean isChange = false; |
||||
|
if (StringUtils.isNotBlank(nextNodeUserSids)) { |
||||
|
List<String> nextUserList = Arrays.asList(nextNodeUserSids.split(",")); |
||||
|
if (nextUserList.size() == 1) { |
||||
|
firstSid = nextUserList.get(0); |
||||
|
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(firstSid); |
||||
|
if (userVoResultBean.getData() != null) { |
||||
|
firstName = userVoResultBean.getData().getName(); |
||||
|
} |
||||
|
SysFlowableConfigQuery sysFlowableConfigQuery = new SysFlowableConfigQuery(); |
||||
|
sysFlowableConfigQuery.setUserSid(firstSid); |
||||
|
sysFlowableConfigQuery.setNowDate(new Date()); |
||||
|
ResultBean<SysFlowableConfigVvo> sysFlowableConfigVvoResultBean = sysFlowableConfigFeign.selectByUserSid(sysFlowableConfigQuery); |
||||
|
if (sysFlowableConfigVvoResultBean.getData() != null) { |
||||
|
if (StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())) { |
||||
|
nextNodeUserSids = sysFlowableConfigVvoResultBean.getData().getChangeUserSid(); |
||||
|
isChange = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if (isChange) {//添加评论
|
||||
|
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(nextNodeUserSids); |
||||
|
ProcessCommentDto processCommentDto = new ProcessCommentDto(); |
||||
|
processCommentDto.setReviewerSid(firstSid); |
||||
|
if (userVoResultBean.getData() != null) { |
||||
|
String changeName = userVoResultBean.getData().getName(); |
||||
|
processCommentDto.setReviewer(firstName); |
||||
|
processCommentDto.setContent("交" + changeName + "转办"); |
||||
|
} |
||||
|
processCommentDto.setTime(new Date()); |
||||
|
processCommentDto.setProcessId(instanceId); |
||||
|
processCommentService.saveOrUpdateDto(processCommentDto); |
||||
|
} |
||||
|
return nextNodeUserSids; |
||||
|
} |
||||
|
|
||||
|
public Integer sortNo(String proDefId, String taskDefKey) { |
||||
|
// 获取所有 UserTask,并以 Map 形式存储环节位置
|
||||
|
Map<String, Integer> taskKeyToPositionMap = new HashMap<>(); |
||||
|
// 获取流程定义的 BPMN 模型
|
||||
|
BpmnModel bpmnModel = repositoryService.getBpmnModel(proDefId); |
||||
|
// 使用 Stream API 遍历流程元素并缓存顺序
|
||||
|
List<UserTask> userTasks = bpmnModel.getProcesses().stream() |
||||
|
.flatMap(process -> process.getFlowElements().stream()) // 遍历所有流程
|
||||
|
.filter(flowElement -> flowElement instanceof UserTask) // 只筛选 UserTask
|
||||
|
.map(flowElement -> (UserTask) flowElement) |
||||
|
.collect(Collectors.toList()); |
||||
|
|
||||
|
// 将 UserTask 的 key 和位置映射到 Map 中
|
||||
|
int position = 1; |
||||
|
for (UserTask userTask : userTasks) { |
||||
|
taskKeyToPositionMap.put(userTask.getId(), position++); |
||||
|
} |
||||
|
Integer taskPosition = taskKeyToPositionMap.get(taskDefKey); |
||||
|
|
||||
|
return taskPosition; |
||||
|
} |
||||
|
|
||||
|
public void assembleFlowApprover(BusinessVariables bv) { |
||||
|
Map<String, Object> variables = bv.getFormVariables(); |
||||
|
// 获取审批人列表
|
||||
|
List<String> approvers = (List<String>) variables.get("approvers"); |
||||
|
// 获取抄送人列表
|
||||
|
List<String> ccList = (List<String>) variables.get("ccList"); |
||||
|
|
||||
|
FlowApproverDto flowApproverDto = new FlowApproverDto(); |
||||
|
flowApproverDto.setBusinessSid(bv.getBusinessSid()); |
||||
|
flowApproverDto.setApproverSidList(approvers); |
||||
|
ResultBean resultBean = flowApproverService.saveFlowApprover(flowApproverDto); |
||||
|
String ccSids = String.join(",", ccList); |
||||
|
ResultBean<List<SysUserVo>> listResultBean = sysUserFeign.fetchBySids(ccSids); |
||||
|
List<String> ccNameList = listResultBean.getData().stream().map(v -> v.getName()).collect(Collectors.toList()); |
||||
|
// 将 List<String> 转换为逗号分隔的字符串
|
||||
|
String result = String.join(",", ccNameList); |
||||
|
FlowCc flowCc = new FlowCc(); |
||||
|
flowCc.setBusinessSid(bv.getBusinessSid()); |
||||
|
flowCc.setCcSids(ccSids); |
||||
|
flowCc.setCcNames(result); |
||||
|
flowCcService.insert(flowCc); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 办理 |
||||
|
* |
||||
|
* @param bv |
||||
|
* @param b |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv, boolean b) { |
||||
|
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail(); |
||||
|
UpdateFlowFieldVo vo = new UpdateFlowFieldVo(); |
||||
|
//获取表单中的参数
|
||||
|
Map<String, Object> formVariables = bv.getFormVariables(); |
||||
|
formVariables = formVariables == null ? new HashMap<>() : formVariables; |
||||
|
formVariables.put("businessSid", bv.getBusinessSid()); |
||||
|
String nextUserSid = bv.getNextNodeUserSids(); |
||||
|
String taskId = bv.getTaskId(); |
||||
|
String userSid = bv.getUserSid(); |
||||
|
String instanceId = bv.getInstanceId(); |
||||
|
String comment = bv.getComment(); |
||||
|
String nodeState = ""; |
||||
|
String taskDefKey = ""; |
||||
|
String orgPath = bv.getOrgSidPath(); |
||||
|
//查询任务id为taskId的任务是否存在
|
||||
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
||||
|
if (Objects.isNull(task)) { |
||||
|
return rb.setMsg("任务不存在"); |
||||
|
} |
||||
|
String assignee = task.getAssignee(); |
||||
|
if (b && (StringUtils.isNotBlank(assignee) && assignee.indexOf(userSid) < 0)) { |
||||
|
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!"); |
||||
|
} |
||||
|
if (DelegationState.PENDING.equals(task.getDelegationState())) { |
||||
|
//加签
|
||||
|
Authentication.setAuthenticatedUserId(userSid); |
||||
|
taskService.addComment(taskId, instanceId, |
||||
|
FlowComment.DELEGATE.getType(), comment); |
||||
|
taskService.resolveTask(taskId, formVariables); |
||||
|
nodeState = task.getName(); |
||||
|
taskDefKey = task.getTaskDefinitionKey(); |
||||
|
} else { |
||||
|
//当前环节办理通过,且将下一环节用户放入流程中
|
||||
|
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment); |
||||
|
log.error("taskid:{},userSid:{}", taskId, userSid); |
||||
|
log.error("formVariables:{}", JSON.toJSONString(formVariables)); |
||||
|
taskService.setAssignee(taskId, userSid); |
||||
|
taskService.complete(taskId, formVariables);//当前用户办理通过
|
||||
|
//查询当前实例的最新待办任务
|
||||
|
List<Task> tasks = taskService.createTaskQuery().processInstanceId(bv.getInstanceId()).list(); |
||||
|
if (tasks.size() > 0) { |
||||
|
task = tasks.get(0); |
||||
|
Integer sortNo = sortNo(bv.getModelId(), task.getTaskDefinitionKey()); |
||||
|
System.out.println("获取环节序号================" + sortNo); |
||||
|
String approverSid = flowApproverService.selectApproverSid(bv.getBusinessSid(), sortNo); |
||||
|
String id_ = task.getId(); |
||||
|
//查询下一环节用户是否有转办人
|
||||
|
nextUserSid = change(approverSid, bv.getInstanceId()); |
||||
|
taskService.setAssignee(id_, nextUserSid);//将下一环节用户放入流程中
|
||||
|
vo.setTaskId(id_); |
||||
|
//在act_ru_variable表中增加环节上的业务参数的变量
|
||||
|
taskService.setVariablesLocal(id_, formVariables); |
||||
|
nodeState = task.getName(); |
||||
|
taskDefKey = task.getTaskDefinitionKey(); |
||||
|
|
||||
|
} else { |
||||
|
nodeState = FlowComment.SETTLE.getRemark(); |
||||
|
taskDefKey = "Event_end"; |
||||
|
vo.setNodeState(FlowComment.SETTLE.getRemark()); |
||||
|
} |
||||
|
} |
||||
|
vo.setProcInsId(instanceId); |
||||
|
vo.setProcDefId(bv.getModelId()); |
||||
|
vo.setNodeState(nodeState); |
||||
|
vo.setTaskDefKey(taskDefKey); |
||||
|
vo.setSid(bv.getBusinessSid()); |
||||
|
return rb.success().setData(vo); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 流程抄送的功能 |
||||
|
* |
||||
|
* @param map |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean cc(Map<String, Object> map, String taskDefKey) { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
log.info("FlowableRest-cc:{}", JSONObject.toJSONString(map)); |
||||
|
Object bv1 = map.get("bv"); |
||||
|
BusinessVariables bv = new BusinessVariables(); |
||||
|
BeanUtil.copyProperties(bv1, bv); |
||||
|
Object uff1 = map.get("uff"); |
||||
|
UpdateFlowFieldVo uff = new UpdateFlowFieldVo(); |
||||
|
BeanUtil.copyProperties(uff1, uff); |
||||
|
uff.setTaskDefKey(taskDefKey); |
||||
|
|
||||
|
FlowCc flowCc = flowCcService.selectByBusinessSid(bv.getBusinessSid()); |
||||
|
StringBuilder userSids = new StringBuilder(flowCc.getCcSids()); |
||||
|
StringBuilder userName = new StringBuilder(flowCc.getCcNames()); |
||||
|
|
||||
|
//抄送的业务逻辑
|
||||
|
MessageFlowableQuery mfq = new MessageFlowableQuery(); |
||||
|
MessageFlowVo messageFlowVo = new MessageFlowVo(); |
||||
|
BeanUtil.copyProperties(uff, messageFlowVo); |
||||
|
mfq.setUfVo(messageFlowVo); |
||||
|
//移动端的参数
|
||||
|
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery() |
||||
|
.includeProcessVariables().taskId(bv.getTaskId()).singleResult(); |
||||
|
if (historicTaskInstance == null) { |
||||
|
log.info("抄送失败:没有获取到业务参数!"); |
||||
|
return rb.setMsg("抄送失败!"); |
||||
|
} |
||||
|
Map<String, Object> processVariables = historicTaskInstance.getProcessVariables(); |
||||
|
String createrOrgPath = (String) processVariables.get("createrOrgPath"); |
||||
|
if (historicTaskInstance == null) { |
||||
|
log.info("抄送失败:没有获取到业务参数!"); |
||||
|
return rb.setMsg("抄送失败!"); |
||||
|
} |
||||
|
//
|
||||
|
String assignee = (String) processVariables.get("assignee"); |
||||
|
ResultBean<SysUserVo> stringResultBean = sysUserFeign.fetchBySid(assignee); |
||||
|
String assigneeName = ""; |
||||
|
if (stringResultBean.getData() != null) { |
||||
|
assigneeName = stringResultBean.getData().getName(); |
||||
|
} |
||||
|
|
||||
|
Map<String, Object> app = new HashMap<>(); |
||||
|
if (processVariables.get("app") != null) { |
||||
|
app = (Map<String, Object>) processVariables.get("app"); |
||||
|
} |
||||
|
log.info("抄送方法-historicTaskInstance:{}", JSONObject.toJSONString(historicTaskInstance)); |
||||
|
mfq.setAppMap(app); |
||||
|
mfq.setBusinessSid(bv.getBusinessSid()); |
||||
|
mfq.setMsgContent(assigneeName + "抄送的流程审批,请查看"); |
||||
|
// act_re_procdef
|
||||
|
Map<String, String> process = processService.getProcessDefByDefId(historicTaskInstance.getProcessDefinitionId()); |
||||
|
log.info("抄送成功-process:{}", process); |
||||
|
if (process == null) { |
||||
|
log.info("抄送失败,流程定义不存在!"); |
||||
|
return rb.setMsg("抄送失败,流程定义不存在!"); |
||||
|
} |
||||
|
mfq.setModuleName(process.get("NAME_")); |
||||
|
if (processVariables.containsKey("orderNames")) { |
||||
|
mfq.setMsgTitle(processVariables.get("orderNames").toString()); |
||||
|
} else { |
||||
|
mfq.setMsgTitle(process.get("NAME_")); |
||||
|
} |
||||
|
if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人
|
||||
|
userSids.append(processVariables.get("sendRecommendSid").toString()).append(","); |
||||
|
} |
||||
|
//查询是否有设置转办的,抄送给设置转办人员
|
||||
|
List<String> zbUserSids = processCommentService.selectByIdAndComment("转办", bv.getInstanceId()); |
||||
|
zbUserSids.removeAll(Collections.singleton(null)); |
||||
|
if (!zbUserSids.isEmpty()) { |
||||
|
String zbUser = String.join(",", zbUserSids); |
||||
|
userSids.append(zbUser).append(","); |
||||
|
} |
||||
|
userSids.deleteCharAt(userSids.length() - 1); |
||||
|
//若抄送的用户已在审批人员中(审批记录中有该用户),则该用户不抄送
|
||||
|
List<String> taskinstUserSidList = baseMapper.selectByProcInstId(bv.getInstanceId()); |
||||
|
List<String> uss = Arrays.asList(userSids.toString().split(",")); |
||||
|
List<String> uniqueList = new ArrayList<String>(new HashSet<String>(uss)); |
||||
|
uniqueList.removeIf(taskinstUserSidList::contains); |
||||
|
String userSidss = String.join(",", uniqueList); |
||||
|
mfq.setUserSids(userSidss); |
||||
|
mfq.setOrgPath(createrOrgPath); |
||||
|
mfq.setUserSid(assignee); |
||||
|
mfq.setApplicationName(assigneeName); |
||||
|
ResultBean<String> resultBean = messageFeign.pushMessageCC(mfq); |
||||
|
log.info("抄送成功:{}", userName.toString()); |
||||
|
log.info("抄送成功-resultBean:{}", resultBean); |
||||
|
if (!resultBean.getSuccess()) { |
||||
|
log.info("抄送失败,同送消息异常!:{}", JSONObject.toJSONString(resultBean)); |
||||
|
return rb.setMsg("抄送失败,同送消息异常!"); |
||||
|
} |
||||
|
return rb.success().setMsg("抄送" + userName.toString() + "成功!"); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flowapprover; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.yxt.anrui.flowable.api.flow.Flowable; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApprover; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Mapper |
||||
|
public interface FlowApproverMapper extends BaseMapper<FlowApprover> { |
||||
|
String selectApproverSid(@Param("businessSid") String businessSid, @Param("sortNo") Integer sortNo); |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.anrui.flowable.biz.flowapprover.FlowApproverMapper"> |
||||
|
<select id="selectApproverSid" resultType="java.lang.String"> |
||||
|
select approverSid |
||||
|
from flow_approver |
||||
|
where businessSid = #{businessSid} |
||||
|
and sortNo = #{sortNo} |
||||
|
</select> |
||||
|
</mapper> |
@ -0,0 +1,53 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flowapprover; |
||||
|
|
||||
|
import com.yxt.anrui.flowable.api.flow.Flowable; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApprover; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApproverDto; |
||||
|
import com.yxt.anrui.flowable.biz.flow4.Flow4Mapper; |
||||
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
||||
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.Collections; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Service |
||||
|
public class FlowApproverService extends MybatisBaseService<FlowApproverMapper, FlowApprover> { |
||||
|
|
||||
|
@Autowired |
||||
|
private SysUserFeign sysUserFeign; |
||||
|
|
||||
|
public ResultBean saveFlowApprover(FlowApproverDto flowApproverDto) { |
||||
|
ResultBean<String> rb = ResultBean.fireFail(); |
||||
|
String businessSid = flowApproverDto.getBusinessSid(); |
||||
|
List<String> approverSidList = flowApproverDto.getApproverSidList(); |
||||
|
approverSidList.removeAll(Collections.singleton(null)); |
||||
|
if (!approverSidList.isEmpty()) { |
||||
|
for (int i = 0; i < approverSidList.size(); i++) { |
||||
|
FlowApprover flowApprover = new FlowApprover(); |
||||
|
String approverSid = approverSidList.get(i); |
||||
|
Integer sortNo = i + 2; |
||||
|
flowApprover.setBusinessSid(businessSid); |
||||
|
flowApprover.setApproverSid(approverSid); |
||||
|
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(approverSid); |
||||
|
SysUserVo sysUser = sysUserVoResultBean.getData(); |
||||
|
flowApprover.setApprovalName(sysUser.getName()); |
||||
|
flowApprover.setSortNo(sortNo); |
||||
|
baseMapper.insert(flowApprover); |
||||
|
} |
||||
|
} |
||||
|
return rb.success(); |
||||
|
} |
||||
|
|
||||
|
public String selectApproverSid(String businessSid, Integer sortNo) { |
||||
|
return baseMapper.selectApproverSid(businessSid,sortNo); |
||||
|
} |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flowcc; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApprover; |
||||
|
import com.yxt.anrui.flowable.api.flowcc.FlowCc; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Mapper |
||||
|
public interface FlowCcMapper extends BaseMapper<FlowCc> { |
||||
|
FlowCc selectByBusinessSid(String businessSid); |
||||
|
} |
@ -0,0 +1,4 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.anrui.flowable.biz.flowcc.FlowCcMapper"> |
||||
|
</mapper> |
@ -0,0 +1,19 @@ |
|||||
|
package com.yxt.anrui.flowable.biz.flowcc; |
||||
|
|
||||
|
import com.yxt.anrui.flowable.api.flowapprover.FlowApprover; |
||||
|
import com.yxt.anrui.flowable.api.flowcc.FlowCc; |
||||
|
import com.yxt.anrui.flowable.biz.flowapprover.FlowApproverMapper; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2025/2/20 |
||||
|
**/ |
||||
|
@Service |
||||
|
public class FlowCcService extends MybatisBaseService<FlowCcMapper, FlowCc> { |
||||
|
public FlowCc selectByBusinessSid(String businessSid) { |
||||
|
return baseMapper.selectByBusinessSid(businessSid); |
||||
|
} |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
package com.yxt.anrui.scm.api.scmspecialrebate; |
||||
|
|
||||
|
import com.yxt.common.core.utils.ExportEntityMap; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class DownloadExcelVo { |
||||
|
|
||||
|
@ExportEntityMap(CnName = "采购系统*", EnName = "purchaseSystemName") |
||||
|
private String purchaseSystemName; |
||||
|
@ExportEntityMap(CnName = "品牌名称*", EnName = "brandName") |
||||
|
private String brandName; |
||||
|
@ExportEntityMap(CnName = "返利类型*", EnName = "rebateTypeValue") |
||||
|
private String rebateTypeValue; |
||||
|
@ExportEntityMap(CnName = "返利名称*", EnName = "rebateName") |
||||
|
private String rebateName; |
||||
|
@ExportEntityMap(CnName = "预提返利*", EnName = "estimateRebate") |
||||
|
private String estimateRebate; |
||||
|
@ExportEntityMap(CnName = "其中支出费用*", EnName = "expectItureCost") |
||||
|
private String expectItureCost; |
||||
|
@ExportEntityMap(CnName = "其中待支付费用*", EnName = "expectTreatCost") |
||||
|
private String expectTreatCost; |
||||
|
@ExportEntityMap(CnName = "其中抵顶费用*", EnName = "expectSuppCost") |
||||
|
private String expectSuppCost; |
||||
|
@ExportEntityMap(CnName = "所属年月*", EnName = "palceGenDate") |
||||
|
private String palceGenDate; |
||||
|
@ExportEntityMap(CnName = "备注", EnName = "remarks") |
||||
|
private String remarks; |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
package com.yxt.anrui.scm.api.scmspecialrebate; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @description: |
||||
|
* @author: dimengzhe |
||||
|
* @date: 2024/4/28 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class ExcelInfo { |
||||
|
|
||||
|
//采购系统
|
||||
|
private String purchaseSystemName; |
||||
|
//品牌名称
|
||||
|
private String brandName; |
||||
|
//返利类型
|
||||
|
private String rebateTypeValue; |
||||
|
//返利名称
|
||||
|
private String rebateName; |
||||
|
//预提返利
|
||||
|
private String estimateRebate; |
||||
|
//其中支出费用
|
||||
|
private String expectItureCost; |
||||
|
//其中待支付费用
|
||||
|
private String expectTreatCost; |
||||
|
//其中抵顶费用
|
||||
|
private String expectSuppCost; |
||||
|
//所属年月
|
||||
|
private String palceGenDate; |
||||
|
//备注
|
||||
|
private String remarks; |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
package com.yxt.anrui.scm.api.scmspecialrebate; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class SpecialRebateExcelInfo { |
||||
|
private String checkInfo; |
||||
|
private List<ExcelInfo> infos = new ArrayList<>(); |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
DROP TABLE IF EXISTS `flow_approver`; |
||||
|
CREATE TABLE `flow_approver` |
||||
|
( |
||||
|
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', |
||||
|
`sid` varchar(64) NOT NULL COMMENT 'sid', |
||||
|
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', |
||||
|
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||
|
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', |
||||
|
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', |
||||
|
`state` int(32) DEFAULT '1' COMMENT '状态', |
||||
|
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', |
||||
|
`remarks` varchar(255) DEFAULT NULL COMMENT '备注', |
||||
|
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', |
||||
|
`updateBySid` varchar(64) DEFAULT NULL COMMENT '更新人sid', |
||||
|
`businessSid` varchar(64) DEFAULT NULL COMMENT '申请sid', |
||||
|
`sortNo` int(32) DEFAULT NULL COMMENT '序号', |
||||
|
`approverSid` varchar(64) DEFAULT NULL COMMENT '审批人sid', |
||||
|
`approvalName` varchar(64) DEFAULT NULL COMMENT '审批人名称', |
||||
|
PRIMARY KEY (`id`), |
||||
|
KEY `id` (`id`) |
||||
|
) ENGINE = INNODB |
||||
|
DEFAULT CHARSET = utf8 COMMENT ='流程审批人'; |
||||
|
|
||||
|
DROP TABLE IF EXISTS `flow_cc`; |
||||
|
CREATE TABLE `flow_cc` |
||||
|
( |
||||
|
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', |
||||
|
`sid` varchar(64) NOT NULL COMMENT 'sid', |
||||
|
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', |
||||
|
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||
|
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', |
||||
|
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', |
||||
|
`state` int(32) DEFAULT '1' COMMENT '状态', |
||||
|
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', |
||||
|
`remarks` varchar(255) DEFAULT NULL COMMENT '备注', |
||||
|
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', |
||||
|
`updateBySid` varchar(64) DEFAULT NULL COMMENT '更新人sid', |
||||
|
`businessSid` varchar(64) DEFAULT NULL COMMENT '申请sid', |
||||
|
`ccSids` text DEFAULT NULL COMMENT '抄送人sid', |
||||
|
`ccNames` text DEFAULT NULL COMMENT '抄送名称', |
||||
|
PRIMARY KEY (`id`), |
||||
|
KEY `id` (`id`) |
||||
|
) ENGINE = INNODB |
||||
|
DEFAULT CHARSET = utf8 COMMENT ='流程抄送人'; |
@ -0,0 +1,118 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adfrockallotapply.*; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpulapply.AdPircarpulApplyDetailsVo; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpulapply.AdPircarpulApplyDto; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpulapply.AdPircarpulApplyVo; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; |
||||
|
import com.yxt.common.core.query.PagerQuery; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.common.core.vo.PagerVo; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.cloud.openfeign.SpringQueryMap; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApply; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyQuery; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyDetailsVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyDto; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyFeign; |
||||
|
|
||||
|
import javax.validation.Valid; |
||||
|
|
||||
|
@Api(tags = "工装订制配发申请") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adfrockallotapply") |
||||
|
public class AdFrockallotApplyRest { |
||||
|
|
||||
|
@Autowired |
||||
|
private AdFrockallotApplyService adFrockallotApplyService; |
||||
|
|
||||
|
@ApiOperation("初始化(新增或修改)") |
||||
|
@GetMapping({"/getInit", "/getInit/{sid}"}) |
||||
|
public ResultBean<AdFrockallotApplyVo> getInit( |
||||
|
@PathVariable(value = "sid", required = false) String sid, |
||||
|
@RequestParam(value = "userSid", required = false) String userSid, |
||||
|
@RequestParam(value = "orgPath", required = false) String orgPath) { |
||||
|
ResultBean<AdFrockallotApplyVo> rb = ResultBean.fireFail(); |
||||
|
if (sid == null || sid.isEmpty()) { |
||||
|
// 执行新增初始化
|
||||
|
if (userSid == null || orgPath == null) { |
||||
|
return rb.setMsg("userSid和orgPath不能为空"); |
||||
|
} |
||||
|
return adFrockallotApplyService.getSaveInit(userSid, orgPath); |
||||
|
} else { |
||||
|
// 执行修改初始化
|
||||
|
return adFrockallotApplyService.getUpdateInit(sid); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("新增或修改") |
||||
|
@PostMapping("/save") |
||||
|
public ResultBean save(@RequestBody AdPircarpulApplyDto dto) { |
||||
|
return adFrockallotApplyService.saveOrUpdateDto(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("详情") |
||||
|
@GetMapping("/details/{sid}") |
||||
|
ResultBean<AdPircarpulApplyDetailsVo> details(@PathVariable("sid") String sid |
||||
|
, @RequestParam(value = "application", required = false) String application) { |
||||
|
return adFrockallotApplyService.details(sid,application); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("提交审批流程") |
||||
|
@PostMapping("/submit") |
||||
|
public ResultBean submit(@RequestBody AdPircarpulApplyDto dto) { |
||||
|
return adFrockallotApplyService.submit(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "办理(同意)") |
||||
|
@PutMapping("/complete") |
||||
|
public ResultBean complete(@Valid @RequestBody CompleteDto dto) { |
||||
|
return adFrockallotApplyService.complete(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "驳回任务") |
||||
|
@PutMapping(value = "/reject") |
||||
|
public ResultBean reject(@Valid @RequestBody TaskDto dto) { |
||||
|
return adFrockallotApplyService.reject(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("获取流程操作标题") |
||||
|
@GetMapping("/getFlowOperateTitle") |
||||
|
@ResponseBody |
||||
|
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) { |
||||
|
return adFrockallotApplyService.getFlowOperateTitle(query); |
||||
|
} |
||||
|
} |
@ -0,0 +1,51 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.*; |
||||
|
import com.yxt.common.core.query.PagerQuery; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.common.core.vo.PagerVo; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetail; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailQuery; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailDetailsVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailDto; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailFeign; |
||||
|
|
||||
|
|
||||
|
@Api(tags = "工装订制配发列表") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adfrockallotdetail") |
||||
|
public class AdFrockallotDetailRest { |
||||
|
|
||||
|
} |
@ -0,0 +1,111 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adleasehostapply.AdLeasehostApplyDetailsVo; |
||||
|
import com.yxt.anrui.oa.biz.adleasehostapply.AdLeasehostApplyDto; |
||||
|
import com.yxt.anrui.oa.biz.adleasehostapply.adPircarpulApplyService; |
||||
|
import com.yxt.anrui.oa.biz.adleasehostapply.AdLeasehostApplyVo; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpulapply.*; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; |
||||
|
import com.yxt.common.core.query.PagerQuery; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.common.core.vo.PagerVo; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.cloud.openfeign.SpringQueryMap; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import javax.validation.Valid; |
||||
|
|
||||
|
@Api(tags = "临时私车公用申请") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adpircarpulapply") |
||||
|
public class AdPircarpulApplyRest { |
||||
|
|
||||
|
@Autowired |
||||
|
private AdPircarpulApplyService adPircarpulApplyService; |
||||
|
|
||||
|
@ApiOperation("初始化(新增或修改)") |
||||
|
@GetMapping({"/getInit", "/getInit/{sid}"}) |
||||
|
public ResultBean<AdPircarpulApplyVo> getInit( |
||||
|
@PathVariable(value = "sid", required = false) String sid, |
||||
|
@RequestParam(value = "userSid", required = false) String userSid, |
||||
|
@RequestParam(value = "orgPath", required = false) String orgPath) { |
||||
|
ResultBean<AdPircarpulApplyVo> rb = ResultBean.fireFail(); |
||||
|
if (sid == null || sid.isEmpty()) { |
||||
|
// 执行新增初始化
|
||||
|
if (userSid == null || orgPath == null) { |
||||
|
return rb.setMsg("userSid和orgPath不能为空"); |
||||
|
} |
||||
|
return adPircarpulApplyService.getSaveInit(userSid, orgPath); |
||||
|
} else { |
||||
|
// 执行修改初始化
|
||||
|
return adPircarpulApplyService.getUpdateInit(sid); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("新增或修改") |
||||
|
@PostMapping("/save") |
||||
|
public ResultBean save(@RequestBody AdPircarpulApplyDto dto) { |
||||
|
return adPircarpulApplyService.saveOrUpdateDto(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("详情") |
||||
|
@GetMapping("/details/{sid}") |
||||
|
ResultBean<AdPircarpulApplyDetailsVo> details(@PathVariable("sid") String sid |
||||
|
, @RequestParam(value = "application", required = false) String application) { |
||||
|
return adPircarpulApplyService.details(sid,application); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("提交审批流程") |
||||
|
@PostMapping("/submit") |
||||
|
public ResultBean submit(@RequestBody AdPircarpulApplyDto dto) { |
||||
|
return adPircarpulApplyService.submit(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "办理(同意)") |
||||
|
@PutMapping("/complete") |
||||
|
public ResultBean complete(@Valid @RequestBody CompleteDto dto) { |
||||
|
return adPircarpulApplyService.complete(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "驳回任务") |
||||
|
@PutMapping(value = "/reject") |
||||
|
public ResultBean reject(@Valid @RequestBody TaskDto dto) { |
||||
|
return adPircarpulApplyService.reject(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("获取流程操作标题") |
||||
|
@GetMapping("/getFlowOperateTitle") |
||||
|
@ResponseBody |
||||
|
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) { |
||||
|
return adPircarpulApplyService.getFlowOperateTitle(query); |
||||
|
} |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import io.swagger.annotations.Api; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
@Api(tags = "临时私车公用列表") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adpircarpuldetail") |
||||
|
public class AdPircarpulDetailRest { |
||||
|
|
||||
|
} |
@ -0,0 +1,104 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adsenpircarpulapply.*; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.cloud.openfeign.SpringQueryMap; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
import javax.validation.Valid; |
||||
|
|
||||
|
@Api(tags = "总经理级固定私车公用申请") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adsenpircarpulapply") |
||||
|
public class AdSenpircarpulApplyRest { |
||||
|
|
||||
|
@Autowired |
||||
|
private AdSenpircarpulApplyService adSenpircarpulApplyService; |
||||
|
|
||||
|
@ApiOperation("初始化(新增或修改)") |
||||
|
@GetMapping({"/getInit", "/getInit/{sid}"}) |
||||
|
public ResultBean<AdSenpircarpulApplyVo> getInit( |
||||
|
@PathVariable(value = "sid", required = false) String sid, |
||||
|
@RequestParam(value = "userSid", required = false) String userSid, |
||||
|
@RequestParam(value = "orgPath", required = false) String orgPath) { |
||||
|
ResultBean<AdSenpircarpulApplyVo> rb = ResultBean.fireFail(); |
||||
|
if (sid == null || sid.isEmpty()) { |
||||
|
// 执行新增初始化
|
||||
|
if (userSid == null || orgPath == null) { |
||||
|
return rb.setMsg("userSid和orgPath不能为空"); |
||||
|
} |
||||
|
return adSenpircarpulApplyService.getSaveInit(userSid, orgPath); |
||||
|
} else { |
||||
|
// 执行修改初始化
|
||||
|
return adSenpircarpulApplyService.getUpdateInit(sid); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("新增或修改") |
||||
|
@PostMapping("/save") |
||||
|
public ResultBean save(@RequestBody AdSenpircarpulApplyDto dto) { |
||||
|
return adSenpircarpulApplyService.saveOrUpdateDto(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("详情") |
||||
|
@GetMapping("/details/{sid}") |
||||
|
ResultBean<AdSenpircarpulApplyDetailsVo> details(@PathVariable("sid") String sid |
||||
|
, @RequestParam(value = "application", required = false) String application) { |
||||
|
return adSenpircarpulApplyService.details(sid,application); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("提交审批流程") |
||||
|
@PostMapping("/submit") |
||||
|
public ResultBean submit(@RequestBody AdSenpircarpulApplyDto dto) { |
||||
|
return adSenpircarpulApplyService.submit(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "办理(同意)") |
||||
|
@PutMapping("/complete") |
||||
|
public ResultBean complete(@Valid @RequestBody CompleteDto dto) { |
||||
|
return adSenpircarpulApplyService.complete(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation(value = "驳回任务") |
||||
|
@PutMapping(value = "/reject") |
||||
|
public ResultBean reject(@Valid @RequestBody TaskDto dto) { |
||||
|
return adSenpircarpulApplyService.reject(dto); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("获取流程操作标题") |
||||
|
@GetMapping("/getFlowOperateTitle") |
||||
|
@ResponseBody |
||||
|
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) { |
||||
|
return adSenpircarpulApplyService.getFlowOperateTitle(query); |
||||
|
} |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.api; |
||||
|
|
||||
|
import io.swagger.annotations.Api; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
@Api(tags = "总经理级固定私车公用列表") |
||||
|
@RestController |
||||
|
@RequestMapping("v1/adsenpircarpuldetail") |
||||
|
public class AdSenpircarpulDetailRest { |
||||
|
|
||||
|
} |
@ -0,0 +1,45 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.yxt.common.core.domain.BaseEntity; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发申请", description = "工装订制配发申请") |
||||
|
@TableName("ad_frockallot_apply") |
||||
|
public class AdFrockallotApply extends BaseEntity { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@ApiModelProperty("基础表单sid") |
||||
|
private String formSid; // 基础表单sid
|
||||
|
@ApiModelProperty("关联审批sid列表,英文逗号分隔") |
||||
|
private String linkFormSids; // 关联审批sid列表,英文逗号分隔
|
||||
|
|
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adleasehostdetail.AdLeasehostListDetailVo; |
||||
|
import com.yxt.common.core.vo.Vo; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发申请 视图数据详情", description = "工装订制配发申请 视图数据详情") |
||||
|
public class AdFrockallotApplyDetailsVo implements Vo { |
||||
|
|
||||
|
@ApiModelProperty("备注") |
||||
|
private String remarks; |
||||
|
|
||||
|
@ApiModelProperty("图片") |
||||
|
private List<String> files = new ArrayList<>(); |
||||
|
@ApiModelProperty("附件") |
||||
|
private List<String> appes = new ArrayList<>(); |
||||
|
|
||||
|
private List<AdLeasehostListDetailVo> list = new ArrayList<>(); |
||||
|
} |
@ -0,0 +1,70 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailDto; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetailDto; |
||||
|
import com.yxt.anrui.oa.biz.oaform.OaFormDto; |
||||
|
import com.yxt.common.core.dto.Dto; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* Project: yxt-oa(1) <br/> |
||||
|
* File: AdFrockallotApplyDto.java <br/> |
||||
|
* Class: com.yxt.anrui.oa.api.adfrockallotapply.AdFrockallotApplyDto <br/> |
||||
|
* Description: 工装订制配发申请 数据传输对象. <br/> |
||||
|
* Copyright: Copyright (c) 2011 <br/> |
||||
|
* Company: https://gitee.com/liuzp315 <br/>
|
||||
|
* Makedate: 2025-02-20 10:41:13 <br/> |
||||
|
* |
||||
|
* @author liupopo |
||||
|
* @version 1.0 |
||||
|
* @since 1.0 |
||||
|
*/ |
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发申请 数据传输对象", description = "工装订制配发申请 数据传输对象") |
||||
|
public class AdFrockallotApplyDto extends OaFormDto { |
||||
|
|
||||
|
@ApiModelProperty("备注") |
||||
|
private String remarks; |
||||
|
@ApiModelProperty("基础表单sid") |
||||
|
private String formSid; |
||||
|
@ApiModelProperty("关联审批单") |
||||
|
private String linkFormSids; |
||||
|
@ApiModelProperty("图片") |
||||
|
private List<String> files = new ArrayList<>(); |
||||
|
@ApiModelProperty("文件") |
||||
|
private List<String> appes = new ArrayList<>(); |
||||
|
|
||||
|
private List<AdFrockallotDetailDto> list = new ArrayList<>(); |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
@Mapper |
||||
|
public interface AdFrockallotApplyMapper extends BaseMapper<AdFrockallotApply> { |
||||
|
|
||||
|
AdFrockallotApplyDetailsVo details(String sid); |
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.anrui.oa.biz.adfrockallotapply.AdFrockallotApplyMapper"> |
||||
|
<!-- <where> ${ew.sqlSegment} </where>--> |
||||
|
<!-- ${ew.customSqlSegment} --> |
||||
|
<select id="details" resultType="com.yxt.anrui.oa.biz.adfrockallotapply.AdFrockallotApplyDetailsVo"> |
||||
|
select remarks, sid |
||||
|
from ad_frockallot_apply |
||||
|
where sid = #{sid} |
||||
|
</select> |
||||
|
|
||||
|
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adfrockallotapply.AdFrockallotApplyDetailsVo"> |
||||
|
<result column="remarks" property="remarks"/> |
||||
|
<collection property="list" ofType="com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotListDetailVo" |
||||
|
select="selectList" column="sid"> |
||||
|
</collection> |
||||
|
</resultMap> |
||||
|
|
||||
|
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotListDetailVo"> |
||||
|
select sid, |
||||
|
expectCost, |
||||
|
costRemarks |
||||
|
from ad_frockallot_detail |
||||
|
where mainSid = #{sid} |
||||
|
</select> |
||||
|
</mapper> |
@ -0,0 +1,300 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
import cn.hutool.core.bean.BeanUtil; |
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailDto; |
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailService; |
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailVo; |
||||
|
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; |
||||
|
import com.yxt.anrui.oa.biz.oaform.*; |
||||
|
import com.yxt.anrui.oa.biz.oaform.flowable.*; |
||||
|
import com.yxt.anrui.oa.feign.file.OaFileEnum; |
||||
|
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; |
||||
|
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; |
||||
|
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.Collections; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
@Service |
||||
|
public class AdFrockallotApplyService extends MybatisBaseService<AdFrockallotApplyMapper, AdFrockallotApply> { |
||||
|
@Autowired |
||||
|
private OaAppendixService oaAppendixService; |
||||
|
@Autowired |
||||
|
private OaFormService oaFormService; |
||||
|
@Autowired |
||||
|
private AdFrockallotDetailService adFrockallotDetailService; |
||||
|
@Autowired |
||||
|
private SysOrganizationFeign sysOrganizationFeign; |
||||
|
|
||||
|
public ResultBean<AdFrockallotApplyVo> getSaveInit(String userSid, String orgPath) { |
||||
|
ResultBean<AdFrockallotApplyVo> rb = ResultBean.fireFail(); |
||||
|
AdFrockallotApplyVo adFrockallotApplyVo = new AdFrockallotApplyVo(); |
||||
|
adFrockallotApplyVo.setCreateBySid(userSid); |
||||
|
adFrockallotApplyVo.setOrgSidPath(orgPath); |
||||
|
return rb.success().setData(adFrockallotApplyVo); |
||||
|
} |
||||
|
|
||||
|
public ResultBean<AdFrockallotApplyVo> getUpdateInit(String sid) { |
||||
|
ResultBean<AdFrockallotApplyVo> rb = ResultBean.fireFail(); |
||||
|
AdFrockallotApplyVo adFrockallotApplyVo = new AdFrockallotApplyVo(); |
||||
|
AdFrockallotApply adFrockallotApply = fetchBySid(sid); |
||||
|
if (adFrockallotApply == null) { |
||||
|
return rb.setMsg("该申请不存在"); |
||||
|
} |
||||
|
// adExpatriatesApplyVo.setTestPage(adExpatriatesApply.getTestPage());
|
||||
|
OaForm oaForm = oaFormService.fetchBySid(sid); |
||||
|
adFrockallotApplyVo.setTaskId(oaForm.getTaskId()); |
||||
|
adFrockallotApplyVo.setProcInsId(oaForm.getProcInstId()); |
||||
|
//根据部门sid获取orgPath并赋值
|
||||
|
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); |
||||
|
String orgSidPath = organizationVo.getOrgSidPath(); |
||||
|
adFrockallotApplyVo.setOrgSidPath(orgSidPath); |
||||
|
adFrockallotApplyVo.setCreateBySid(oaForm.getCreateBySid()); |
||||
|
BeanUtil.copyProperties(adFrockallotApply, adFrockallotApplyVo); |
||||
|
List<AdFrockallotDetailVo> list = adFrockallotDetailService.getUpdateInit(sid); |
||||
|
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片"); |
||||
|
adFrockallotApplyVo.setFiles(files); |
||||
|
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件"); |
||||
|
adFrockallotApplyVo.setAppes(appes); |
||||
|
adFrockallotApplyVo.setList(list); |
||||
|
adFrockallotApplyVo.setSid(sid); |
||||
|
return rb.success().setData(adFrockallotApplyVo); |
||||
|
} |
||||
|
|
||||
|
public ResultBean<String> saveOrUpdateDto(AdFrockallotApplyDto dto) { |
||||
|
ResultBean<String> rb = ResultBean.fireFail(); |
||||
|
String sid = dto.getSid(); |
||||
|
List<String> files = dto.getFiles(); |
||||
|
List<String> appes = dto.getAppes(); |
||||
|
List<AdFrockallotDetailDto> list = dto.getList(); |
||||
|
if (StringUtils.isBlank(sid)) { |
||||
|
// 新建操作
|
||||
|
AdFrockallotApply entity = new AdFrockallotApply(); |
||||
|
BeanUtil.copyProperties(dto, entity, "sid"); |
||||
|
|
||||
|
dto.setBillNo("GZDZPFSQ"); |
||||
|
dto.setSid(entity.getSid()); |
||||
|
ResultBean<String> resultBean = oaFormService.saveOaForm(dto); |
||||
|
|
||||
|
if (!resultBean.getSuccess()) { |
||||
|
return rb; |
||||
|
} |
||||
|
|
||||
|
entity.setFormSid(resultBean.getData()); |
||||
|
baseMapper.insert(entity); |
||||
|
sid = entity.getSid(); |
||||
|
} else { |
||||
|
// 更新操作
|
||||
|
AdFrockallotApply entity = fetchBySid(sid); |
||||
|
BeanUtil.copyProperties(dto, entity, "id", "sid"); |
||||
|
baseMapper.updateById(entity); |
||||
|
} |
||||
|
adFrockallotDetailService.saveDetails(list, sid); |
||||
|
// 处理附件
|
||||
|
saveFiles(sid, files, OaFileEnum.ADEXPATRIATESAPPLY.getAttachType(), "图片"); |
||||
|
saveFiles(sid, appes, OaFileEnum.ADEXPATRIATESAPPLY.getAttachType(), "文件"); |
||||
|
return rb.success().setData(sid); |
||||
|
} |
||||
|
|
||||
|
// 保存文件
|
||||
|
private void saveFiles(String sid, List<String> files, String attachType, String fileType) { |
||||
|
files.removeAll(Collections.singleton(null)); |
||||
|
oaAppendixService.saveFile(sid, files, attachType, fileType); |
||||
|
} |
||||
|
|
||||
|
public ResultBean<AdFrockallotApplyDetailsVo> details(String sid, String application) { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
AdFrockallotApplyDetailsVo adFrockallotApplyDetailsVo = baseMapper.details(sid); |
||||
|
if (adFrockallotApplyDetailsVo == null) { |
||||
|
return rb.setMsg("该申请不存在"); |
||||
|
} |
||||
|
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片"); |
||||
|
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件"); |
||||
|
adFrockallotApplyDetailsVo.setFiles(files); |
||||
|
adFrockallotApplyDetailsVo.setAppes(appes); |
||||
|
//基础字段赋值
|
||||
|
BeanUtil.copyProperties(oaFormService.getDetails(sid), adFrockallotApplyDetailsVo); |
||||
|
return rb.success().setData(adFrockallotApplyDetailsVo); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 提交 |
||||
|
* |
||||
|
* @param dto |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean submit(AdFrockallotApplyDto dto) { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
ResultBean<String> stringResultBean = saveOrUpdateDto(dto); |
||||
|
if (!stringResultBean.getSuccess()) { |
||||
|
return rb.setMsg(stringResultBean.getData()); |
||||
|
} |
||||
|
String businessSid = stringResultBean.getData(); |
||||
|
|
||||
|
SubmitDto submitDto = new SubmitDto(); |
||||
|
submitDto.setUserSid(dto.getCreateBySid()); |
||||
|
submitDto.setBusinessSid(businessSid); |
||||
|
|
||||
|
Map<String, Object> formVariables = new HashMap<>(); |
||||
|
formVariables = getMap(formVariables, businessSid); |
||||
|
submitDto.setFormVariables(formVariables); |
||||
|
submitDto.setProcDefId(ProcDefEnum.HIHIREAPPLY.getProDefId()); |
||||
|
submitDto.setNextTaskId(dto.getTaskId()); |
||||
|
submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule()); |
||||
|
return oaFormService.submit(submitDto); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 办理(同意) |
||||
|
* |
||||
|
* @param dto |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean complete(CompleteDto dto) { |
||||
|
Map<String, Object> formVariables = dto.getFormVariables(); |
||||
|
formVariables = getMap(formVariables, dto.getBusinessSid()); |
||||
|
dto.setFormVariables(formVariables); |
||||
|
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto(); |
||||
|
BeanUtil.copyProperties(dto, businessVariablesDto); |
||||
|
return oaFormService.complete(businessVariablesDto); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 驳回 |
||||
|
* |
||||
|
* @param dto |
||||
|
* @return |
||||
|
*/ |
||||
|
public ResultBean reject(TaskDto dto) { |
||||
|
Map<String, Object> formVariables = dto.getFormVariables(); |
||||
|
formVariables = getMap(formVariables, dto.getBusinessSid()); |
||||
|
dto.setFormVariables(formVariables); |
||||
|
return oaFormService.reject(dto); |
||||
|
} |
||||
|
|
||||
|
public ResultBean<String> getFlowOperateTitle(NodeQuery query) { |
||||
|
// 默认失败返回
|
||||
|
ResultBean<String> rb = ResultBean.fireFail(); |
||||
|
|
||||
|
// 获取next值和formVariables
|
||||
|
int next = query.getNext(); |
||||
|
|
||||
|
// 获取并更新formVariables
|
||||
|
Map<String, Object> formVariables = getMap(query.getFormVariables(), query.getBusinessSid()); |
||||
|
query.setFormVariables(formVariables); |
||||
|
|
||||
|
// 校验next参数是否有效(只允许0或1)
|
||||
|
if (next != 0 && next != 1) { |
||||
|
return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息
|
||||
|
} |
||||
|
|
||||
|
// 获取节点名称
|
||||
|
String data = getNodeName(query, next); |
||||
|
|
||||
|
// 如果data为null,表示未获取到有效的节点信息
|
||||
|
if (data == null) { |
||||
|
return rb.setMsg("没有获取到节点信息"); // 返回错误消息
|
||||
|
} |
||||
|
|
||||
|
// 返回成功的结果和获取到的节点名称
|
||||
|
return rb.success().setData(data); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 网关参数组成 |
||||
|
* |
||||
|
* @param formVariables |
||||
|
* @param sid |
||||
|
* @return |
||||
|
*/ |
||||
|
public Map<String, Object> getMap(Map<String, Object> formVariables, String sid) { |
||||
|
Map<String, Object> appMap = new HashMap<>(); |
||||
|
appMap.put("sid", sid); |
||||
|
/*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid); |
||||
|
appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid); |
||||
|
appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle"); |
||||
|
appMap.put("agreeUrl", "oa/v1/HrHireApply/complete"); |
||||
|
appMap.put("stopUrl", "oa/v1/oaform/breakProcess"); |
||||
|
appMap.put("rejectUrl", "oa/v1/HrHireApply/reject"); |
||||
|
appMap.put("recallUrl", "oa/v1/oaform/revokeProcess"); |
||||
|
appMap.put("signUrl", "oa/v1/oaform/delegate"); |
||||
|
appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/ |
||||
|
appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid); |
||||
|
appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid); |
||||
|
appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl()); |
||||
|
appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl()); |
||||
|
formVariables.put("app", appMap); |
||||
|
//根据组织查询是否是分公司
|
||||
|
OaForm oaForm = oaFormService.fetchBySid(sid); |
||||
|
AdFrockallotApply adFrockallotApply = fetchBySid(sid); |
||||
|
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData(); |
||||
|
//是否是分公司
|
||||
|
formVariables.put("isTrue", sysOrganization.getIsDept() == 0); |
||||
|
return formVariables; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 根据next的值获取前一个节点或下一个节点的名称。 |
||||
|
* |
||||
|
* @param query 包含查询所需参数的NodeQuery对象 |
||||
|
* @param next 参数,0表示上一环节,1表示下一环节 |
||||
|
* @return 节点名称,如果失败则返回null |
||||
|
*/ |
||||
|
private String getNodeName(NodeQuery query, int next) { |
||||
|
// 根据next值选择相应的服务方法获取节点信息
|
||||
|
ResultBean<List<NodeVo>> resultBean = (next == 0) |
||||
|
? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点
|
||||
|
: oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点
|
||||
|
// 如果服务调用成功
|
||||
|
if (resultBean.getSuccess()) { |
||||
|
// 清除结果列表中的null值,避免空节点
|
||||
|
resultBean.getData().removeAll(Collections.singleton(null)); |
||||
|
// 如果结果列表非空,返回第一个节点的名称
|
||||
|
if (!resultBean.getData().isEmpty()) { |
||||
|
return resultBean.getData().get(0).getName(); |
||||
|
} |
||||
|
} else { |
||||
|
// 如果服务调用失败,返回null
|
||||
|
return null; |
||||
|
} |
||||
|
// 如果结果为空,返回null
|
||||
|
return null; |
||||
|
} |
||||
|
} |
@ -0,0 +1,65 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotapply; |
||||
|
|
||||
|
|
||||
|
import com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailVo; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetailVo; |
||||
|
import com.yxt.common.core.vo.Vo; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发申请 视图数据对象", description = "工装订制配发申请 视图数据对象") |
||||
|
public class AdFrockallotApplyVo implements Vo { |
||||
|
|
||||
|
private String sid; |
||||
|
/* private String userSid; |
||||
|
private String orgPath;*/ |
||||
|
private String orgSidPath; |
||||
|
private String createBySid; |
||||
|
|
||||
|
@ApiModelProperty("备注") |
||||
|
private String remarks; |
||||
|
@ApiModelProperty("图片") |
||||
|
private List<String> files = new ArrayList<>(); |
||||
|
@ApiModelProperty("附件") |
||||
|
private List<String> appes = new ArrayList<>(); |
||||
|
|
||||
|
private List<AdFrockallotDetailVo> list = new ArrayList<>(); |
||||
|
|
||||
|
private String taskId; |
||||
|
@ApiModelProperty("流程实例id") |
||||
|
private String procInsId; |
||||
|
|
||||
|
// private String testPage;
|
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.yxt.common.core.domain.BaseEntity; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发列表", description = "工装订制配发列表") |
||||
|
@TableName("ad_frockallot_detail") |
||||
|
public class AdFrockallotDetail extends BaseEntity { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@ApiModelProperty("申请sid") |
||||
|
private String mainSid; // 申请sid
|
||||
|
@ApiModelProperty("预计费用") |
||||
|
private BigDecimal expectCost; // 预计费用
|
||||
|
@ApiModelProperty("费用明细") |
||||
|
private String costRemarks; // 费用明细
|
||||
|
|
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
|
||||
|
import com.yxt.common.core.dto.Dto; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发列表 数据传输对象", description = "工装订制配发列表 数据传输对象") |
||||
|
public class AdFrockallotDetailDto implements Dto { |
||||
|
|
||||
|
@ApiModelProperty("预计费用") |
||||
|
private BigDecimal expectCost; // 预计费用
|
||||
|
@ApiModelProperty("费用明细") |
||||
|
private String costRemarks; // 费用明细
|
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetail; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetailVo; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.apache.ibatis.annotations.Select; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetail; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailVo; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Mapper |
||||
|
public interface AdFrockallotDetailMapper extends BaseMapper<AdFrockallotDetail> { |
||||
|
|
||||
|
List<AdFrockallotDetailVo> getUpdateInit(String sid); |
||||
|
|
||||
|
@Select("select * from ad_frockallot_detail where mainSid = #{mainSid}") |
||||
|
List<AdFrockallotDetail> selectByMainSid(String mainSid); |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailMapper"> |
||||
|
<!-- <where> ${ew.sqlSegment} </where>--> |
||||
|
<!-- ${ew.customSqlSegment} --> |
||||
|
<select id="getUpdateInit" resultType="com.yxt.anrui.oa.biz.adfrockallotdetail.AdFrockallotDetailVo"> |
||||
|
select sid, |
||||
|
expectCost, |
||||
|
costRemarks |
||||
|
from ad_frockallot_detail |
||||
|
where mainSid = #{sid} |
||||
|
</select> |
||||
|
</mapper> |
@ -0,0 +1,79 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
import cn.hutool.core.bean.BeanUtil; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetail; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetailDto; |
||||
|
import com.yxt.anrui.oa.biz.adpircarpuldetail.AdPircarpulDetailVo; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import com.yxt.common.base.utils.PagerUtil; |
||||
|
import com.yxt.common.core.query.PagerQuery; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.common.core.vo.PagerVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetail; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailQuery; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailDetailsVo; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailDto; |
||||
|
import com.yxt.anrui.oa.api.adfrockallotdetail.AdFrockallotDetailFeign; |
||||
|
|
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.Collections; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Service |
||||
|
public class AdFrockallotDetailService extends MybatisBaseService<AdFrockallotDetailMapper, AdFrockallotDetail> { |
||||
|
|
||||
|
public void saveDetails(List<AdFrockallotDetailDto> list, String sid) { |
||||
|
//根据sid查询明细并删除
|
||||
|
List<AdFrockallotDetail> list2 = baseMapper.selectByMainSid(sid); |
||||
|
list2.removeAll(Collections.singleton(null)); |
||||
|
if (!list2.isEmpty()) { |
||||
|
list2.stream().forEach(v -> { |
||||
|
deleteBySid(v.getSid()); |
||||
|
}); |
||||
|
} |
||||
|
list.removeAll(Collections.singleton(null)); |
||||
|
if (!list.isEmpty()) { |
||||
|
list.stream().forEach(details -> { |
||||
|
AdFrockallotDetail adFrockallotDetail = new AdFrockallotDetail(); |
||||
|
BeanUtil.copyProperties(details, adFrockallotDetail); |
||||
|
adFrockallotDetail.setMainSid(sid); |
||||
|
baseMapper.insert(adFrockallotDetail); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public List<AdFrockallotDetailVo> getUpdateInit(String sid) { |
||||
|
return baseMapper.getUpdateInit(sid); |
||||
|
} |
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
|
||||
|
import com.yxt.common.core.vo.Vo; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发列表 视图数据对象", description = "工装订制配发列表 视图数据对象") |
||||
|
public class AdFrockallotDetailVo implements Vo { |
||||
|
|
||||
|
private String sid; // sid
|
||||
|
|
||||
|
@ApiModelProperty("预计费用") |
||||
|
private BigDecimal expectCost; // 预计费用
|
||||
|
@ApiModelProperty("费用明细") |
||||
|
private String costRemarks; // 费用明细
|
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
/********************************************************* |
||||
|
********************************************************* |
||||
|
******************** ******************* |
||||
|
************* ************ |
||||
|
******* _oo0oo_ ******* |
||||
|
*** o8888888o *** |
||||
|
* 88" . "88 * |
||||
|
* (| -_- |) * |
||||
|
* 0\ = /0 * |
||||
|
* ___/`---'\___ * |
||||
|
* .' \\| |// '. *
|
||||
|
* / \\||| : |||// \ *
|
||||
|
* / _||||| -:- |||||- \ * |
||||
|
* | | \\\ - /// | | *
|
||||
|
* | \_| ''\---/'' |_/ | * |
||||
|
* \ .-\__ '-' ___/-. / * |
||||
|
* ___'. .' /--.--\ `. .'___ * |
||||
|
* ."" '< `.___\_<|>_/___.' >' "". * |
||||
|
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
||||
|
* \ \ `_. \_ __\ /__ _/ .-` / / * |
||||
|
* =====`-.____`.___ \_____/___.-`___.-'===== * |
||||
|
* `=---=' * |
||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
||||
|
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
||||
|
*********************************************************/ |
||||
|
package com.yxt.anrui.oa.biz.adfrockallotdetail; |
||||
|
|
||||
|
import com.yxt.common.core.vo.Vo; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel(value = "工装订制配发列表 视图数据对象", description = "工装订制配发列表 视图数据对象") |
||||
|
public class AdFrockallotListDetailVo implements Vo { |
||||
|
|
||||
|
private String sid; // sid
|
||||
|
|
||||
|
@ApiModelProperty("预计费用") |
||||
|
private BigDecimal expectCost; // 预计费用
|
||||
|
@ApiModelProperty("费用明细") |
||||
|
private String costRemarks; // 费用明细
|
||||
|
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue