Browse Source

车辆外采流程办理

master
yxt_djz 3 years ago
parent
commit
d3157bbe12
  1. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java
  2. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java
  3. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/flow/FlowTaskVo.java
  4. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java
  5. 78
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java
  6. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java
  7. 2
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  8. 2
      anrui-scm/anrui-scm-ui/src/api/baseoutsourcingapplication/baseoutsourcingapplication.js
  9. 25
      anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/workflow/baseoutsourcingapplicationInfo.vue
  10. 77
      anrui-system-ui/src/views/flow/doneList.vue

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java

@ -135,9 +135,8 @@ public interface BaseOutsourcingApplicationFeign {
@ApiParam(value = "工作流任务相关--请求参数") @RequestBody FlowTaskVo flowTaskVo) ;
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject/{businessSid}")
public ResultBean taskReject(@ApiParam(value = "业务sid") @PathVariable(value = "businessSid")String businessSid,
@ApiParam(value = "工作流任务相关--请求参数")@RequestBody FlowTaskVo flowTaskVo);
@PostMapping(value = "/reject")
public ResultBean taskReject( @ApiParam(value = "工作流任务相关--请求参数")@RequestBody FlowTaskVo flowTaskVo);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess/{businessSid}")

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java

@ -113,7 +113,7 @@ public class BaseOutsourcingApplicationFeignFallback implements BaseOutsourcingA
}
@Override
public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
public ResultBean taskReject( FlowTaskVo flowTaskVo) {
return null;
}

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/flow/FlowTaskVo.java

@ -21,7 +21,8 @@ public class FlowTaskVo {
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("businessSid ")
private String businessSid;
@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("用户Sid")

4
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java

@ -149,8 +149,8 @@ public class BaseOutsourcingApplicationRest implements BaseOutsourcingApplicatio
}
@Override
public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
return baseOutsourcingApplicationService.taskReject(businessSid, flowTaskVo);
public ResultBean taskReject( FlowTaskVo flowTaskVo) {
return baseOutsourcingApplicationService.taskReject( flowTaskVo);
}
@Override

78
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java

@ -171,7 +171,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
for (SysStaffOrgVo datum : data) {
orgSidPath = datum.getOrgSidPath();
String[] split = orgSidPath.split("/");
for (String s : split) {
for (String s : split) {//TODO 封装到组织架构的feign中
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(s);
SysOrganizationVo data1 = sysOrganizationVoResultBean.getData();
Integer isDept = data1.getIsDept();
@ -227,6 +227,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 生成单据编号制定编号规则:单据类型编号数据字典key+部门编码+yyyyMMDD+0000
*
* @param userSid
* @return
*/
@ -288,7 +289,12 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
SysStaffOrg sysStaffOrg = sysStaffOrgFeign.getOrgByStaffSid(dto.getStaffSid()).getData();
String orgSidPath = sysStaffOrg.getOrgSidPath();
Map<String, Object> variables = BeanUtil.beanToMap(dto);
ResultBean resultBean = saveOrUpdateDto(dto);
String busSid = dto.getBusinessSid();
if (StringUtils.isBlank(busSid)) {
ResultBean resultBean = saveOrUpdateDto(dto);//insert
String businessSid = resultBean.getData().toString();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
@ -301,23 +307,62 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
//如果taskid从业务的数据库中查询出来,那这个taskid 和当前的关系是什么 如果数据库中查询出来的taskid是第四个环节的id,但是目前是做的第一次的提交操作。
// 应该是也不允许走if 也不运行走else 那应该如何验证这个id是否允许走else呢?
// 取出来业务数据的taskid和前端传递的taskid作比较 来判断数据的是否有效 本质上是数据版本一致性的问题
BaseOutsourcingApplicationDto booad=baseMapper.getBySid(businessSid);
String businessTaskid=booad.getTaskId();
if(StringUtils.isBlank(businessTaskid)&&StringUtils.isBlank(dto.getTaskId())){
// 新提交 taskid都是空的
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.startProcess(bv);
UpdateFlowFieldVo uff = resultBean1.getData();
updateFlowFiled(BeanUtil.beanToMap(uff));
return resultBean1;
}
BaseOutsourcingApplicationDto booad = new BaseOutsourcingApplicationDto();
int r = submitBusinessData(dto, busSid, booad);
if (r == 0) {
return ResultBean.fireFail().setMsg("操作失败,提交的数据不一致!");
}
ResultBean resultBean = saveOrUpdateDto(dto);//update
String businessSid = resultBean.getData().toString();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setOrgSidPath(orgSidPath);
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getUserSid());
variables.put("businessSid", businessSid);
bv.setFormVariables(variables);
bv.setModelId(ProcDefEnum.BASEOUTSOURCINGAPPLICATION.getProDefId());
//如果taskid从业务的数据库中查询出来,那这个taskid 和当前的关系是什么 如果数据库中查询出来的taskid是第四个环节的id,但是目前是做的第一次的提交操作。
// 应该是也不允许走if 也不运行走else 那应该如何验证这个id是否允许走else呢?
// 取出来业务数据的taskid和前端传递的taskid作比较 来判断数据的是否有效 本质上是数据版本一致性的问题
if (r == 1) {
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.startProcess(bv);
UpdateFlowFieldVo uff = resultBean1.getData();
updateFlowFiled(BeanUtil.beanToMap(uff));
return resultBean1;
}else if(businessTaskid.equals(dto.getTaskId())){//只有数据一致的时候才能进行下一步
} else if (r == 2) {
bv.setTaskDefKey(booad.getTaskDefKey());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}else{
return ResultBean.fireFail().setMsg("操作失败,提交的数据不一致!");
}
return ResultBean.fireFail();
}
private synchronized int submitBusinessData(SubmitBaseOutSourcingApplicationDto dto,
String businessSid, BaseOutsourcingApplicationDto booad) {
int r = 0;
booad = baseMapper.getBySid(businessSid);
String businessTaskid = booad.getTaskId();
if (StringUtils.isBlank(businessTaskid) && StringUtils.isBlank(dto.getTaskId())) {
// 新提交 taskid都是空的
r = 1;
} else if (StringUtils.isNotBlank(businessTaskid) && businessTaskid.equals(dto.getTaskId())) {//只有数据一致的时候才能进行下一步
r = 2;
}
return r;
}
/**
* 检查用户是否设置部门
*
@ -362,6 +407,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 办理
*
* @param bv
* @return
*/
@ -380,6 +426,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
@ -389,6 +436,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 撤回
*
* @param userSid
* @param businessSid
* @param flowTaskVo
@ -400,22 +448,22 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
fl.setBusinessSid(businessSid);
fl.setUserSid(userSid);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(fl);
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(stringObjectMap);
return resultBean;
}
/**
* 驳回
*
* @param businessSid
* @param flowTaskVo
* @return
*/
public ResultBean taskReject(String businessSid, FlowTaskVo flowTaskVo) {
public ResultBean taskReject(FlowTaskVo flowTaskVo) {
com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl = new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo();
BeanUtil.copyProperties(flowTaskVo, fl);
fl.setBusinessSid(businessSid);
BaseOutsourcingApplicationDto boad = baseMapper.getBySid(businessSid);
BaseOutsourcingApplicationDto boad = baseMapper.getBySid(flowTaskVo.getBusinessSid());
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(fl);
UpdateFlowFieldVo data = resultBean.getData();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(resultBean.getData());
@ -431,6 +479,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 终止流程
*
* @param businessSid
* @param flowTaskVo
* @return
@ -446,6 +495,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
/**
* 流程历史流转记录
*
* @param procInsId
* @param deployId
* @return

2
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java

@ -102,7 +102,7 @@ public interface FlowableFeign {
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
@ResponseBody
ResultBean revokeProcess(@RequestBody com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl);
ResultBean<UpdateFlowFieldVo> revokeProcess(@RequestBody com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl);
@ApiOperation(value = "驳回流程")
@PostMapping(value = "/taskReject")

2
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -284,7 +284,7 @@ public class FlowableRest implements FlowableFeign {
}
@Override
public ResultBean revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) {
public ResultBean<UpdateFlowFieldVo> revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) {
ResultBean rb = ResultBean.fireFail();
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
ResultBean<List<LatestTaskVo>> resultBean = flowtaskService.revokeProcess(fl);

2
anrui-scm/anrui-scm-ui/src/api/baseoutsourcingapplication/baseoutsourcingapplication.js

@ -92,7 +92,7 @@ export default {
// 驳回任务
rejectTask: function(params) {
return request({
url: '/base/baseoutsourcingapplication/reject/' + params.businessSid,
url: '/base/baseoutsourcingapplication/reject',
method: 'post',
data: params,
headers: {

25
anrui-scm/anrui-scm-ui/src/views/baseoutsourcingapplication/workflow/baseoutsourcingapplicationInfo.vue

@ -10,7 +10,7 @@
</div>
</div>
<!-- 标题按钮部分结束 -->
<div class="listconadd">
<div >
<el-form ref="form_obj" :model="formobj" label-position="right" class="formadd">
<el-row>
<el-col :span="3" class="tleftb">申请编号</el-col>
@ -72,7 +72,6 @@
</el-table>
</div>
</el-form>
</div>
</div>
</template>
@ -135,6 +134,14 @@ export default {
this.revokeList.businessSid = sid
this.revokeList.instanceId = obj.instanceId
this.revokeList.taskId = obj.taskId
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 600 + 'px'
}
}, '*')
},
methods: {
//
@ -153,15 +160,15 @@ export default {
})
},
/** 撤回任务 */
handleRevoke() {alert(1);
handleRevoke() {
request.revokeTask(this.revokeList).then((response) => {
if (response.code === '200') {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
window.parent.postMessage({
cmd: 'returnHeight',
params: {
code: 1,
}
}, '*')
} else {
this.$notify({
title: '提示',

77
anrui-system-ui/src/views/flow/doneList.vue

@ -92,58 +92,16 @@
</div>
<!-- Start查看页面 -->
<el-dialog
title=""
:visible.sync="centerDialogVisible"
width="85%"
height="100%"
width="78%"
height="1%"
:before-close="closeIt"
center><!--src="http://localhost:9531/#/xiaoshouguanliFlow/dingjinshouqu" closeIt -->
<div class="scroll_div">
<iframe id="iframe_done" height="1000px" width="100%"
center>
<iframe frameborder="0" id="iframe_done"
style="width:100%;"
:src="this.centerDialogVisible === true ? url :''"
scrolling="no"></iframe>
<div class="diaTitle"><i class="el-icon-notebook-2"></i><span>审批记录</span></div>
<div>
<el-card class="box-card" v-if="flowRecordList">
<el-col :span="16" :offset="4">
<div class="block">
<el-timeline>
<el-timeline-item
v-for="(item,index ) in flowRecordList"
:key="index"
:icon="setIcon(item.finishTime)"
:color="setColor(item.finishTime)"
>
<p style="font-weight: 700">{{item.taskName}}</p>
<el-card :body-style="{ padding: '10px' }">
<label v-if="item.assigneeName" style="font-weight: normal;margin-right: 30px;">实际办理
{{item.assigneeName}}
<el-tag type="info" size="mini">{{item.deptName}}</el-tag>
</label>
<label v-if="item.candidate"
style="font-weight: normal;margin-right: 30px;">候选办理{{item.candidate}}</label><br>
<label style="font-weight: normal">接收时间 </label><label style="color:#8a909c;font-weight: normal">{{item.createTime}}</label><br>
<label v-if="item.finishTime" style="font-weight: normal">办结时间 </label>
<label style="color:#8a909c;font-weight: normal">{{item.finishTime}}</label><br>
<label v-if="item.duration" style="font-weight: normal">耗时</label>
<label style="color:#8a909c;font-weight: normal">{{item.duration}}</label>
<p v-if="item.comment">
<el-tag type="success" v-if="item.comment.type === '1'"> {{item.comment.comment}}</el-tag>
<el-tag type="warning" v-if="item.comment.type === '2'"> {{item.comment.comment}}</el-tag>
<el-tag type="danger" v-if="item.comment.type === '3'"> {{item.comment.comment}}</el-tag>
<el-tag type="danger" v-if="item.comment.type === '7'"> {{item.comment.comment}}</el-tag>
</p>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</el-col>
</el-card>
</div>
</div>
<span slot="footer" class="dialog-footer">
<!-- <el-button type="danger" :disabled="this.taskName_now == '已办结'?true:false" @click="openRevoke"> </el-button>-->
<!-- <el-button type="info" @click="centerDialogVisible = false"> </el-button>-->
</span>
></iframe>
</el-dialog>
<!-- End查看页面-->
@ -203,6 +161,7 @@
},
data() {
return {
dialogHeight:'80%',
isDialogVisible: false, //
centerDialogVisible: false, //
editDialog: false,
@ -245,6 +204,10 @@
}
}
},
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
},
created() {
//
// this.getList()
@ -268,12 +231,24 @@
}
},
methods: {
setIframeHeight(iframe) {
iframe.height = this.dialogHeight;//iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
},
async handleMessage (event) {
var code= event.data.params.code;
if(code==1){
this.init()
this.centerDialogVisible=false
}else if(code==2){
this.dialogHeight = event.data.params.data
this.setIframeHeight(document.getElementById('iframe_done'));
}
},
init() {
var token = getStorage();
loginDetails(token).then((response) => {
if (response.code === '200') {
this.loginInfo = response.data;
console.log(this.loginInfo)
this.revokeList.userSid = this.loginInfo.sid
this.listQuery.params.userSid = this.loginInfo.sid
this.getList()
@ -282,7 +257,6 @@
},
/** 打开详情 */
handleCheck(row) {
console.log('row', row)
this.selectUrl_list.proc_def_id = row.procDefId
this.selectUrl_list.taskDefKey = row.taskDefKey
this.selectUrl_list.type = 2 //
@ -297,7 +271,6 @@
if (response.code === '200') {
// this.url = 'http://120.46.131.15' + response.data.url + '?row=' + row.processVariables.businessSid + '#data=' + JSON.stringify(parameter_list) + '?token=' + getStorage()
this.url = 'http://localhost:9531' + response.data.url + '?row=' + row.processVariables.businessSid + '#data=' + JSON.stringify(parameter_list) + '?token=123456abc'
console.log('页面url', this.url)
} else {
this.$notify({
title: '提示',

Loading…
Cancel
Save