流程调试
parent
d11678aa3c
commit
e8d0a3c77a
|
@ -1,8 +1,5 @@
|
||||||
package cn.palmte.work.controller.backend;
|
package cn.palmte.work.controller.backend;
|
||||||
|
|
||||||
import cn.palmte.work.config.activiti.ActApproveTypeEnum;
|
|
||||||
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
|
||||||
|
@ -12,6 +9,7 @@ import org.springframework.data.domain.ExampleMatcher;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
@ -30,7 +28,6 @@ import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -43,6 +40,8 @@ import javax.persistence.TypedQuery;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
import cn.palmte.work.config.activiti.ActApproveTypeEnum;
|
||||||
|
import cn.palmte.work.config.activiti.ActProjectTypeEnum;
|
||||||
import cn.palmte.work.model.Admin;
|
import cn.palmte.work.model.Admin;
|
||||||
import cn.palmte.work.model.DeptRepository;
|
import cn.palmte.work.model.DeptRepository;
|
||||||
import cn.palmte.work.model.Project;
|
import cn.palmte.work.model.Project;
|
||||||
|
@ -73,7 +72,6 @@ import cn.palmte.work.utils.InterfaceUtil;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import sun.java2d.pipe.SpanShapeRenderer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
||||||
|
@ -331,7 +329,7 @@ public class ProcessController {
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void post(@RequestBody @Valid SaleContractProcessForm form) throws Exception {
|
public void post(@RequestBody @Valid SaleContractProcessForm form) throws Exception {
|
||||||
ProjectProcess entity = new ProjectProcess();
|
ProjectProcess entity = new ProjectProcess();
|
||||||
BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "applyDept", "attachments");
|
BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "applyDept", "attachments");
|
||||||
|
@ -365,13 +363,15 @@ public class ProcessController {
|
||||||
}
|
}
|
||||||
|
|
||||||
processService.updateIncomeDetails(form.getIncomeDetails());
|
processService.updateIncomeDetails(form.getIncomeDetails());
|
||||||
processService.startAuditProgress(entity, variables);
|
|
||||||
|
|
||||||
|
if (form.getStatus() == ProcessStatus.to_be_audit) {
|
||||||
|
processService.startAuditProgress(entity, variables);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PutMapping
|
@PutMapping
|
||||||
@Transactional
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(@RequestBody @Valid ProcessUpdateForm form) throws Exception {
|
public void update(@RequestBody @Valid ProcessUpdateForm form) throws Exception {
|
||||||
ProjectProcess entity = processService.getById(form.getId());
|
ProjectProcess entity = processService.getById(form.getId());
|
||||||
|
|
||||||
|
@ -411,15 +411,19 @@ public class ProcessController {
|
||||||
throw new UnsupportedOperationException("还不支持");
|
throw new UnsupportedOperationException("还不支持");
|
||||||
}
|
}
|
||||||
|
|
||||||
processService.startAuditProgress(entity, variables);
|
|
||||||
processService.updateIncomeDetails(form.getIncomeDetails());
|
processService.updateIncomeDetails(form.getIncomeDetails());
|
||||||
|
|
||||||
|
if (form.getStatus() == ProcessStatus.to_be_audit) {
|
||||||
|
processService.startAuditProgress(entity, variables);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping("/query")
|
@PostMapping("/query")
|
||||||
public Page<ProjectProcess> list(@RequestBody ProcessQueryForm form, Pageable pageable) {
|
public Page<ProjectProcess> list(@RequestBody ProcessQueryForm form, Pageable pageable) {
|
||||||
// 从 0 开始
|
// 从 0 开始
|
||||||
PageRequest pageRequest = new PageRequest(pageable.getPageNumber() - 1, pageable.getPageSize());
|
PageRequest pageRequest = new PageRequest(pageable.getPageNumber() - 1, pageable.getPageSize(),
|
||||||
|
new Sort(Sort.Direction.DESC, "createAt"));
|
||||||
|
|
||||||
ProjectProcess projectProcess = new ProjectProcess();
|
ProjectProcess projectProcess = new ProjectProcess();
|
||||||
BeanUtils.copyProperties(form, projectProcess);
|
BeanUtils.copyProperties(form, projectProcess);
|
||||||
|
@ -507,7 +511,7 @@ public class ProcessController {
|
||||||
return projectTaskRecords.stream()
|
return projectTaskRecords.stream()
|
||||||
.map(item -> {
|
.map(item -> {
|
||||||
Date createTime = item.getCreateTime();
|
Date createTime = item.getCreateTime();
|
||||||
return create(format.format(createTime), item.getTaskName() + item.getTaskComment());
|
return create(format.format(createTime), item.getTaskName() + ": " + item.getTaskComment());
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ import javax.persistence.Enumerated;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
import javax.persistence.GenerationType;
|
import javax.persistence.GenerationType;
|
||||||
import javax.persistence.Id;
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.PrePersist;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import cn.palmte.work.model.enums.ProcessStatus;
|
import cn.palmte.work.model.enums.ProcessStatus;
|
||||||
|
@ -113,6 +114,11 @@ public class ProjectProcess implements Serializable {
|
||||||
// @Enumerated(EnumType.STRING)
|
// @Enumerated(EnumType.STRING)
|
||||||
// private CooperationType cooperationType;
|
// private CooperationType cooperationType;
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
void prePersist() {
|
||||||
|
this.createAt = LocalDateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
static class SealTypeArraySerializer extends JsonSerializer<SealTypeArray> {
|
static class SealTypeArraySerializer extends JsonSerializer<SealTypeArray> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.palmte.work.model.process;
|
package cn.palmte.work.model.process;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -17,7 +18,7 @@ import cn.palmte.work.model.enums.SealType;
|
||||||
* @since 2.0 2022/12/14 16:35
|
* @since 2.0 2022/12/14 16:35
|
||||||
*/
|
*/
|
||||||
@Convert(converter = SealTypeArrayConverter.class)
|
@Convert(converter = SealTypeArrayConverter.class)
|
||||||
public class SealTypeArray {
|
public class SealTypeArray implements Serializable {
|
||||||
public static final SealTypeArray EMPTY = new SealTypeArray();
|
public static final SealTypeArray EMPTY = new SealTypeArray();
|
||||||
|
|
||||||
private final List<SealType> list = new ArrayList<>();
|
private final List<SealType> list = new ArrayList<>();
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import cn.palmte.work.model.enums.ProcessType;
|
import cn.palmte.work.model.enums.ProcessStatus;
|
||||||
import cn.palmte.work.model.enums.ProcurementMode;
|
import cn.palmte.work.model.enums.ProcurementMode;
|
||||||
import cn.palmte.work.model.process.ProcessAttachment;
|
import cn.palmte.work.model.process.ProcessAttachment;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -43,6 +43,8 @@ public class ProcessUpdateForm {
|
||||||
// 客户名称
|
// 客户名称
|
||||||
private String clientName;
|
private String clientName;
|
||||||
|
|
||||||
|
private ProcessStatus status;
|
||||||
|
|
||||||
// 申请人电话
|
// 申请人电话
|
||||||
private String applyPersonPhone;
|
private String applyPersonPhone;
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
v-if="scope.row.status==='audit_passed' || scope.row.status==='audit_not_passed' || scope.row.status==='to_be_audit'"
|
v-if="scope.row.status==='audit_passed' || scope.row.status==='audit_not_passed' || scope.row.status==='to_be_audit'"
|
||||||
type="text" @click="showDetail(scope.row, scope)">查看详情
|
type="text" @click="showDetail(scope.row, scope)">查看详情
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="scope.row.status==='audit_passed' || scope.row.status==='audit_not_passed'"
|
<el-button v-if="scope.row.status==='audit_passed' || scope.row.status==='audit_not_passed' || scope.row.status==='to_be_audit'"
|
||||||
type="text" @click="showAuditDetail(scope.row, scope)">查看审核流程
|
type="text" @click="showAuditDetail(scope.row, scope)">查看审核流程
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="scope.row.status==='draft' || scope.row.status==='audit_not_passed'"
|
<el-button v-if="scope.row.status==='draft' || scope.row.status==='audit_not_passed'"
|
||||||
|
@ -184,12 +184,10 @@
|
||||||
|
|
||||||
const methods = {
|
const methods = {
|
||||||
showDetail(row, scope) {
|
showDetail(row, scope) {
|
||||||
console.log(row)
|
|
||||||
console.log(scope)
|
|
||||||
window.location = "${base}/process/detail/" + row.id;
|
window.location = "${base}/process/detail/" + row.id;
|
||||||
},
|
},
|
||||||
editProcess(row, scope) {
|
editProcess(row, scope) {
|
||||||
|
window.location = "${base}/process/edit/" + row.id;
|
||||||
},
|
},
|
||||||
deleteProcess(row, scope) {
|
deleteProcess(row, scope) {
|
||||||
this.$confirm('您确认要删除审批流程吗?', '删除', {
|
this.$confirm('您确认要删除审批流程吗?', '删除', {
|
||||||
|
|
|
@ -224,15 +224,27 @@
|
||||||
|
|
||||||
<div v-if="isProcurementContractMode">
|
<div v-if="isProcurementContractMode">
|
||||||
供应商比选材料
|
供应商比选材料
|
||||||
|
<div class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractMode">
|
||||||
|
<el-table style="width: 100%" border>
|
||||||
|
<el-table-column type="index" :index="1" label="序号" fixed></el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="fee" label="公司名称" width="180"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="合计金额" width="180"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="服务条款" width="180"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="付款条件" width="180"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="税率(%)" width="180"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="备注"></el-table-column>
|
||||||
|
<el-table-column prop="fee" label="附件"></el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-button type="info" @click="goToHome">返回上一级</el-button>
|
<el-button type="info" @click="backLastPage">返回上一级</el-button>
|
||||||
<el-button type="primary" @click="saveDraft">保存草稿</el-button>
|
<el-button type="primary" @click="saveDraft">保存草稿</el-button>
|
||||||
<el-button type="success" @click="submitForm">提交</el-button>
|
<el-button type="success" @click="submitForm">提交</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -561,8 +573,8 @@
|
||||||
const that = this
|
const that = this
|
||||||
},
|
},
|
||||||
|
|
||||||
goToHome() {
|
backLastPage() {
|
||||||
this.changeMode(BUTTON)
|
window.history.back();
|
||||||
},
|
},
|
||||||
|
|
||||||
goToSaleContractProcess() {
|
goToSaleContractProcess() {
|
||||||
|
@ -587,27 +599,7 @@
|
||||||
console.log(form)
|
console.log(form)
|
||||||
},
|
},
|
||||||
|
|
||||||
queryProject(q, callback) {
|
loadProject(id) {
|
||||||
if (isBlank(q)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fetch("${base}/process/projects?q=" + q)
|
|
||||||
.then(res => res.json())
|
|
||||||
.then(data => {
|
|
||||||
if (data.length === 0) {
|
|
||||||
callback([{
|
|
||||||
name: '未搜索到结果'
|
|
||||||
}])
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
callback(data)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('项目搜索失败');
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleSelectProject(id) {
|
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
lock: true,
|
lock: true,
|
||||||
text: '正在加载项目',
|
text: '正在加载项目',
|
||||||
|
@ -805,7 +797,7 @@
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
const processId = ${processId}
|
const processId = ${processId}
|
||||||
this.handleSelectProject(processId)
|
this.loadProject(processId)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue