From 6e86bc70fbd7789f98863d87b098f31cdc2f4394 Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Sat, 11 May 2024 14:45:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=80=80=E8=B4=A7=E5=8D=95?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=B5=81=E7=A8=8B=E6=8E=A5=E5=8F=A3=E3=80=81?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8E=9F=E5=8D=95=E6=8E=A5=E5=8F=A3=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/apiadmin/pms/PmsPurchaseBillRest.java | 10 +- .../apiadmin/pms/PmsPurchasebackBillRest.java | 58 ++++ .../PmsPurchasebackBill.java | 3 + .../PmsPurchasebackBillDetailsVo.java | 3 + .../PmsPurchasebackBillDto.java | 3 + .../PmsPurchasebackBillMapper.java | 4 + .../PmsPurchasebackBillMapper.xml | 26 ++ .../PmsPurchasebackBillService.java | 311 +++++++++++++++++- .../PmsPurchasebackBillCompleteDto.java | 37 +++ .../PmsPurchasebackBillDelegateQuery.java | 26 ++ .../PmsPurchasebackBillNodeQuery.java | 25 ++ .../flowable/PmsPurchasebackBillNodeVo.java | 26 ++ .../PmsPurchasebackBillTaskQuery.java | 48 +++ .../SubmitPmsPurchasebackBillDto.java | 25 ++ .../PmsPurchaseBillMapper.java | 2 + .../pmspurchasebill/PmsPurchaseBillMapper.xml | 28 ++ .../PmsPurchaseBillService.java | 50 +++ .../PmsPurchaseChoiceBillVo.java | 61 ++-- .../pms/feign/flowable/flow/ProcDefEnum.java | 1 + 19 files changed, 708 insertions(+), 39 deletions(-) create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java create mode 100644 yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java b/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java index 8e6b2ee4df..45084820cc 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java @@ -66,8 +66,6 @@ public class PmsPurchaseBillRest { @Autowired private PmsPurchaseBillService pmsPurchaseBillService; - @Autowired - private HttpServletResponse response; @ApiOperation("根据条件分页查询数据的列表") @PostMapping("/listPage") @@ -77,6 +75,14 @@ public class PmsPurchaseBillRest { return rb.success().setData(pv); } + @ApiOperation("选择原单") + @PostMapping("/choiceBillListPage") + public ResultBean> choiceBillListPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = pmsPurchaseBillService.choiceBillListPage(pq); + return rb.success().setData(pv); + } + @ApiOperation("新增或修改") @PostMapping("/save") public ResultBean save(@RequestBody PmsPurchaseBillDto dto){ diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java b/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java index 718c1b4056..4ab95aa53e 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java @@ -25,17 +25,24 @@ *********************************************************/ package com.yxt.pms.apiadmin.pms; +import cn.hutool.core.bean.BeanUtil; import com.yxt.common.base.utils.ExportExcelUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.pms.biz.pms.pmspurchasebackbill.*; +import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*; +import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*; +import com.yxt.pms.feign.flowable.flow.BusinessVariables; +import com.yxt.pms.feign.flowable.flow.ProcDefEnum; 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.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; @@ -94,4 +101,55 @@ public class PmsPurchasebackBillRest { PmsPurchasebackBillDetailsVo vo = pmsPurchasebackBillService.fetchDetailsVoBySid(sid); return rb.success().setData(vo); } + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitPmsPurchasebackBillDto dto) { + return pmsPurchasebackBillService.submit(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody PmsPurchasebackBillCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId()); + return pmsPurchasebackBillService.complete(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + public ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) { + return pmsPurchasebackBillService.getPreviousNodesForReject(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + public ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) { + return pmsPurchasebackBillService.getNextNodesForSubmit(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) { + return pmsPurchasebackBillService.reject(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) { + return pmsPurchasebackBillService.revokeProcess(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) { + return pmsPurchasebackBillService.breakProcess(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody PmsPurchasebackBillDelegateQuery query) { + return pmsPurchasebackBillService.delegate(query); + } } diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java index 5ecc2ffba7..7b53d96fd8 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java @@ -77,6 +77,9 @@ public class PmsPurchasebackBill extends BaseEntity { @ApiModelProperty("单据状态") private String documentState; + @ApiModelProperty("已付金额") + private BigDecimal paidAmount; + @ApiModelProperty("申请部门sid") private String deptSid; @ApiModelProperty("申请部门名称") diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java index 8ebc1aa5d0..a610a0a513 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java @@ -81,6 +81,9 @@ public class PmsPurchasebackBillDetailsVo implements Vo { @ApiModelProperty("转入预付款") private BigDecimal toPrepayment; // 转入预付款 + @ApiModelProperty("已付金额") + private BigDecimal paidAmount; + @ApiModelProperty("申请部门sid") private String deptSid; @ApiModelProperty("申请部门名称") diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java index c682afcda0..c51163afbd 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java @@ -80,6 +80,9 @@ public class PmsPurchasebackBillDto implements Dto { @ApiModelProperty("转入预付款") private BigDecimal toPrepayment; // 转入预付款 + @ApiModelProperty("已付金额") + private BigDecimal paidAmount; + @ApiModelProperty("申请部门sid") private String deptSid; @ApiModelProperty("申请部门名称") diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java index 307c4f7959..75c4fa6f45 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java @@ -35,6 +35,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; +import java.util.Map; /** * Project: yxt-pms(采购)
@@ -54,4 +55,7 @@ public interface PmsPurchasebackBillMapper extends BaseMapper selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + String selectNum(String billNo); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml index 25c87d5437..f2375b8b3c 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml @@ -26,4 +26,30 @@ ON ppb.`sid` = ppbd.`billSid` ${ew.sqlSegment} + + + + + UPDATE pms_purchaseback_bill + SET nodeState=#{nodeState}, nodeId=#{taskDefKey} + + , finishTime = NOW() + + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java index 3510eef54a..f768b4296b 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java @@ -26,19 +26,30 @@ package com.yxt.pms.biz.pms.pmspurchasebackbill; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.core.result.ResultBean; +import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*; import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDetailsVo; import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDto; import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailService; +import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBill; +import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*; import com.yxt.pms.biz.pms.pmspurchasebilldetail.PmsPurchaseBillDetailService; import com.yxt.pms.biz.pms.pmspurchasebillinvoice.PmsPurchaseBillInvoiceService; import com.yxt.pms.biz.pms.pmspurchasepay.PmsPurchasePayService; -import com.yxt.pms.feign.flowable.flow.FlowableFeign; +import com.yxt.pms.feign.flowable.flow.*; +import com.yxt.pms.feign.flowable.flow2.FlowDelegateQuery; import com.yxt.pms.feign.flowable.flow2.FlowFeign; import com.yxt.pms.feign.flowable.flowtask.FlowTaskFeign; +import com.yxt.pms.feign.flowable.flowtask.FlowTaskVo; +import com.yxt.pms.feign.flowable.flowtask.LatestTaskVo; import com.yxt.pms.feign.message.MessageFeign; +import com.yxt.pms.feign.message.MessageFlowVo; +import com.yxt.pms.feign.message.MessageFlowableQuery; import com.yxt.pms.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.pms.feign.portal.sysorganization.SysOrganizationVo; import com.yxt.pms.feign.portal.sysstafforg.SysStaffOrgFeign; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; @@ -49,8 +60,8 @@ import com.yxt.common.core.vo.PagerVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * Project: yxt-pms(采购)
@@ -185,4 +196,298 @@ public class PmsPurchasebackBillService extends MybatisBaseService variables = new HashMap<>(); + //用户的部门全路径sid + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(pmsPurchasebackBill.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //流程定义id + bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId()); + bv.setFormVariables(variables); + if (r == 1) { + ResultBean voResultBean = flowFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //极光推送 + pmsPurchasebackBill = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("采购退货单申请"); + messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("采购退货单申请"); + messageFeign.pushMessage(messageFlowableQuery); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(pmsPurchasebackBill.getTaskId()); + bv.setTaskDefKey(pmsPurchasebackBill.getNodeId()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private synchronized int submitBusinessData(SubmitPmsPurchasebackBillDto dto, PmsPurchasebackBill pmsPurchasebackBill) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (pmsPurchasebackBill != null) { + String businessTaskId = pmsPurchasebackBill.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery(); + if (StringUtils.isBlank(pmsPurchasebackBill.getProcDefId())) { + flowProcessMapQuery.setProDefKey(bv.getModelId()); + } else { + flowProcessMapQuery.setProDefKey(pmsPurchasebackBill.getProcDefId()); + } + flowProcessMapQuery.setVariables(variables); + variables = flowableFeign.getMap(flowProcessMapQuery).getData(); + //======================================= + bv.setFormVariables(variables); + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + if (bv.getTaskId().equals(pmsPurchasebackBill.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + pmsPurchasebackBill = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId()); + ufVo.setProcInsId(pmsPurchasebackBill.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("采购退货单申请"); + messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("采购退货单申请"); + messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(PmsPurchasebackBillNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(PmsPurchasebackBillNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean reject(PmsPurchasebackBillTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid); + if (pmsPurchasebackBill == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = pmsPurchasebackBill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + pmsPurchasebackBill = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = pmsPurchasebackBill.getProcInstId(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("采购退货单申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(pmsPurchasebackBill.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("采购退货单申请"); + messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(PmsPurchasebackBillTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid()); + String businessTaskId = pmsPurchasebackBill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(PmsPurchasebackBillTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid()); + String businessTaskId = pmsPurchasebackBill.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(pmsPurchasebackBill.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(PmsPurchasebackBillDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } } \ No newline at end of file diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java new file mode 100644 index 0000000000..bdb9178343 --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java @@ -0,0 +1,37 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 14:57 + * @Description + */ +@Data +public class PmsPurchasebackBillCompleteDto implements Dto { + private static final long serialVersionUID = 6378752532534735663L; + + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id(PC)") + private String instanceId; + @ApiModelProperty(value = "流程id(移动)") + private String procInsId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + + private String orgPath; +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java new file mode 100644 index 0000000000..c4f8c2c735 --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class PmsPurchasebackBillDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java new file mode 100644 index 0000000000..5abcaafeab --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java @@ -0,0 +1,25 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:04 + * @Description + */ +@Data +public class PmsPurchasebackBillNodeQuery implements Query { + private static final long serialVersionUID = 9117613683840483366L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java new file mode 100644 index 0000000000..1f7deabc90 --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:03 + * @Description + */ +@Data +public class PmsPurchasebackBillNodeVo implements Vo { + private static final long serialVersionUID = -833419512294877848L; + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java new file mode 100644 index 0000000000..ade131c86e --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java @@ -0,0 +1,48 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:06 + * @Description + */ +@Data +public class PmsPurchasebackBillTaskQuery implements Query { + private static final long serialVersionUID = 1288615499873178778L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id(PC)") + private String instanceId; + + @ApiModelProperty("流程实例Id(移动)") + private String procInsId; +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java new file mode 100644 index 0000000000..2230182aa3 --- /dev/null +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java @@ -0,0 +1,25 @@ +package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable; + +import com.yxt.pms.biz.pms.pmspurchasebackbill.PmsPurchasebackBillDto; +import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBillDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitPmsPurchasebackBillDto extends PmsPurchasebackBillDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java index 3db68a919f..0a6cfc8441 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java @@ -56,6 +56,8 @@ public interface PmsPurchaseBillMapper extends BaseMapper { IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + IPage choiceBillListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + String selectNum(String billNo); int updateFlowFiled(Map map); diff --git a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml index a21b7bf3ad..041818aacc 100644 --- a/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml +++ b/yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml @@ -30,6 +30,34 @@ ${ew.sqlSegment} + +