diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDetailsVo.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDetailsVo.java new file mode 100644 index 00000000..0ab44553 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDetailsVo.java @@ -0,0 +1,36 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class QualityReleaseDetailsVo implements Vo { + + private static final long serialVersionUID = -642659623561057840L; + private String sid; + private String userSid; + @ApiModelProperty("创建人名称") + private String createByName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("项目sid") + private String projectSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("货物价值") + private String goodsValue; + @ApiModelProperty("实例id") + private String procInstId; + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("申请日期") + private String createTime; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDto.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDto.java new file mode 100644 index 00000000..314d3c3c --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseDto.java @@ -0,0 +1,31 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class QualityReleaseDto implements Dto { + + private static final long serialVersionUID = 622013483707410137L; + private String sid; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("创建人名称") + private String createByName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("项目sid") + private String projectSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("货物价值") + private String goodsValue; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseQuery.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseQuery.java new file mode 100644 index 00000000..10aea25d --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseQuery.java @@ -0,0 +1,26 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class QualityReleaseQuery implements Query { + + private static final long serialVersionUID = 804042611014032470L; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("创建时间开始") + private String createTimeStart; + @ApiModelProperty("创建时间结束") + private String createTimeEnd; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseVo.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseVo.java new file mode 100644 index 00000000..7a4aba15 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/QualityReleaseVo.java @@ -0,0 +1,31 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class QualityReleaseVo { + + private String sid; + @ApiModelProperty("流程状态") + private String nodeState; + @ApiModelProperty("申请人") + private String createByName; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("仓库名称") + private String warehouseName; + + @ApiModelProperty("货物价值") + private String goodsValue; + + @ApiModelProperty("创建时间") + private String createTime; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/CompleteReleaseDto.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/CompleteReleaseDto.java new file mode 100644 index 00000000..16727711 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/CompleteReleaseDto.java @@ -0,0 +1,33 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class CompleteReleaseDto { + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/ReleaseTaskQuery.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/ReleaseTaskQuery.java new file mode 100644 index 00000000..50fca28f --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/ReleaseTaskQuery.java @@ -0,0 +1,43 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class ReleaseTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @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") + private String instanceId; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/SubmitReleaseDto.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/SubmitReleaseDto.java new file mode 100644 index 00000000..12b5c4ce --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/api/qualityrelease/flowable/SubmitReleaseDto.java @@ -0,0 +1,20 @@ +package com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable; + +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Data +public class SubmitReleaseDto extends QualityReleaseDto { + private static final long serialVersionUID = 4647793236311896399L; + + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.java new file mode 100644 index 00000000..dc3f3a5c --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.java @@ -0,0 +1,29 @@ +package com.yxt.supervise.enterprisecentre.biz.qualityrelease; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityRelease; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseDetailsVo; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Mapper +public interface QualityReleaseMapper extends BaseMapper { + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER)QueryWrapper qw); + + QualityReleaseDetailsVo details(String sid); + + int selectBySid(String join); + + int updateFlowFiled(Map map); +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.xml b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.xml new file mode 100644 index 00000000..f69c9242 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + UPDATE quality_release + SET nodeState=#{nodeState} + , taskDefKey=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + + \ No newline at end of file diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseRest.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseRest.java new file mode 100644 index 00000000..dd392e92 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseRest.java @@ -0,0 +1,107 @@ +package com.yxt.supervise.enterprisecentre.biz.qualityrelease; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.enterprisecentre.api.flowable.BusinessVariables; +import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeQuery; +import com.yxt.supervise.enterprisecentre.api.flowable.GetNodeVo; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseDetailsVo; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseDto; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseQuery; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.QualityReleaseVo; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.CompleteReleaseDto; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.ReleaseTaskQuery; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.SubmitReleaseDto; +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; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@RestController +@RequestMapping("v1/QualityRelease") +public class QualityReleaseRest { + + @Autowired + private QualityReleaseService qualityReleaseService; + + @ApiOperation("新增或修改") + @PostMapping("/saveorUpdate") + ResultBean saveorUpdate(@RequestBody QualityReleaseDto dto) { + return qualityReleaseService.saveorUpdateRelease(dto); + } + + @ApiOperation("分页列表") + @PostMapping("/listPage") + ResultBean> listPage(PagerQuery pagerQuery) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = qualityReleaseService.listPageVo(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("详情") + @GetMapping("/details") + ResultBean details(@RequestParam("sid") String sid) { + return qualityReleaseService.details(sid); + } + + @ApiOperation("删除") + @DeleteMapping("/delete") + ResultBean delete(@RequestBody String[] sids) { + return qualityReleaseService.delete(sids); + } + + @ApiOperation("提交") + @PostMapping("/submit") + ResultBean submit(@RequestBody SubmitReleaseDto dto) { + return qualityReleaseService.submit(dto); + } + + @ApiOperation("办理") + @PostMapping("/complete") + ResultBean complete(@RequestBody CompleteReleaseDto dto) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(dto, bv); + return qualityReleaseService.complete(bv); + } + + @ApiOperation("获取上一环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@SpringQueryMap GetNodeQuery query) { + return qualityReleaseService.getPreviousNodesForReject(query); + } + + @ApiOperation("获取下一环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@SpringQueryMap GetNodeQuery query) { + return qualityReleaseService.getNextNodesForSubmit(query); + } + + @ApiOperation("驳回") + @PostMapping(value = "/taskReject") + public ResultBean taskReject(ReleaseTaskQuery query) { + return qualityReleaseService.taskReject(query); + } + + @ApiOperation("撤回") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(ReleaseTaskQuery query) { + return qualityReleaseService.revokeProcess(query); + } + + @ApiOperation("终止") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(ReleaseTaskQuery query) { + return qualityReleaseService.breakProcess(query); + } + + +} diff --git a/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseService.java b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseService.java new file mode 100644 index 00000000..fc9b9429 --- /dev/null +++ b/yxt_supervise/yxt-supervise-enterprisecentre/yxt-supervise-enterprisecentre-biz/src/main/java/com/yxt/supervise/enterprisecentre/biz/qualityrelease/QualityReleaseService.java @@ -0,0 +1,345 @@ +package com.yxt.supervise.enterprisecentre.biz.qualityrelease; + +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.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.enterprisecentre.api.flowable.*; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.*; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.ReleaseTaskQuery; +import com.yxt.supervise.enterprisecentre.api.qualityrelease.flowable.SubmitReleaseDto; +import com.yxt.supervise.enterprisecentre.api.sealrecord.SysUserVo; +import com.yxt.supervise.enterprisecentre.biz.feign.FlowTaskFeign; +import com.yxt.supervise.enterprisecentre.biz.feign.FlowableFeign; +import com.yxt.supervise.enterprisecentre.biz.feign.SysUserFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/21 + **/ +@Service +public class QualityReleaseService extends MybatisBaseService { + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + + public ResultBean saveorUpdateRelease(QualityReleaseDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) {//新增 + QualityRelease qualityRelease = new QualityRelease(); + BeanUtil.copyProperties(dto, qualityRelease, "sid"); + String userSid = dto.getUserSid(); + qualityRelease.setCreateBySid(userSid); + //根据userSid查询申请人的名称 + ResultBean resultBean = sysUserFeign.getUserByUserSid(userSid); + if (resultBean.getData() != null) { + SysUserVo sysUserVo = resultBean.getData(); + String name = sysUserVo.getName(); + qualityRelease.setCreateByName(name); + } + + baseMapper.insert(qualityRelease); + sid = qualityRelease.getSid(); + + } else {//修改 + QualityRelease qualityRelease = fetchBySid(sid); + if (qualityRelease == null) { + return rb.setMsg("该解质出库申请不存在"); + } + BeanUtil.copyProperties(dto, qualityRelease, "sid"); + baseMapper.updateById(qualityRelease); + } + return rb.success().setData(sid); + } + + public PagerVo listPageVo(PagerQuery pagerQuery) { + QualityReleaseQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + qw.eq("createBySid", query.getUserSid()); + //仓库名称 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("warehouseName", query.getWarehouseName()); + } + //项目名称 + if (StringUtils.isNotBlank(query.getProjectName())) { + qw.like("projectName", query.getProjectName()); + } + //创建时间开始、创建时间结束 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + } + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + QualityRelease qualityRelease = fetchBySid(sid); + if (qualityRelease == null) { + return rb.setMsg("该解质出库申请不存在"); + } + QualityReleaseDetailsVo qualityReleaseDetailsVo = baseMapper.details(sid); + return rb.success().setData(qualityReleaseDetailsVo); + } + + public ResultBean delete(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败"); + } + delBySids(sids); + return rb.success(); + } + + public ResultBean submit(SubmitReleaseDto dto) { + ResultBean rb = ResultBean.fireFail(); + QualityRelease qualityRelease = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, qualityRelease); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + ResultBean resultBean = saveorUpdateRelease(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + String businessSid = resultBean.getData(); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setProjectSid(dto.getProjectSid()); + if (r == 1) { + bv.setModelId(ProcDefEnum.QUALITYRELEASE.getProDefId()); + ResultBean voResultBean = flowableFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + return voResultBean; + } + if (r == 2) { + qualityRelease = fetchBySid(businessSid); + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:procInstId"); + } + bv.setTaskId(qualityRelease.getTaskId()); + bv.setTaskDefKey(qualityRelease.getTaskDefKey()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitReleaseDto dto, QualityRelease qualityRelease) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (qualityRelease != null) { + String businessTaskId = qualityRelease.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; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + QualityRelease qualityRelease = fetchBySid(businessSid); + if (qualityRelease == null) { + return rb.setMsg("该解质出库申请不存在"); + } + Map variables = new HashMap<>(); + bv.setModelId(qualityRelease.getProcDefId()); + bv.setProjectSid(qualityRelease.getProjectSid()); + if (bv.getTaskId().equals(qualityRelease.getTaskId())) { + ResultBean resultBean = flowableFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(GetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + QualityRelease qualityRelease = fetchBySid(query.getBusinessSid()); + bv.setModelId(qualityRelease.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(GetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + QualityRelease qualityRelease = fetchBySid(query.getBusinessSid()); + bv.setModelId(qualityRelease.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(ReleaseTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + QualityRelease qualityRelease = fetchBySid(businessSid); + if (qualityRelease == null) { + return rb.setMsg("该解质出库申请不存在"); + } + String businessTaskId = qualityRelease.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<>(); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(ReleaseTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isNotBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + QualityRelease qualityRelease = fetchBySid(query.getBusinessSid()); + String businessTaskId = qualityRelease.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(ReleaseTaskQuery 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("请填写意见"); + } + QualityRelease qualityRelease = fetchBySid(query.getBusinessSid()); + String businessTaskId = qualityRelease.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(qualityRelease.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("操作失败!提交的数据不一致!"); + } +}