diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchase.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchase.java index 67539870fd..780b914d6a 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchase.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchase.java @@ -69,7 +69,7 @@ public class BaseInternalPurchase extends BaseEntity { @ApiModelProperty("流程定义的id") private String procDefId; @ApiModelProperty("环节定义的sid") - private String taskDefKey; + private String nodeSid; @ApiModelProperty("流程状态") private String nodeState; @ApiModelProperty("流程实例的sid") diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDetailsVo.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDetailsVo.java index 3077e8201b..e334f2755f 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDetailsVo.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDetailsVo.java @@ -56,11 +56,14 @@ public class BaseInternalPurchaseDetailsVo implements Vo { private String sid; // sid + @ApiModelProperty("申请日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date createTime; // 申请日期 @ApiModelProperty("申请编号") private String applyNo; // 申请编号 + @ApiModelProperty("创建人sid") + private String createBySid; // 创建人sid @ApiModelProperty("申请人姓名") private String applyPeoName; // 申请人姓名 @ApiModelProperty("购方机构sid") diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDto.java index 986a7a9c40..911d6e697b 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDto.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDto.java @@ -54,10 +54,8 @@ public class BaseInternalPurchaseDto implements Dto { private String sid; // sid - @ApiModelProperty("业务员sid") - private String staffSid; // 业务员sid - @ApiModelProperty("userSid") - private String userSid; // userSid + @ApiModelProperty("创建人sid") + private String createBySid; // 创建人sid @ApiModelProperty("申请编号") private String applyNo; // 申请编号 @ApiModelProperty("申请人姓名") diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseFeign.java index eee1824a64..28b2742a8e 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseFeign.java @@ -38,6 +38,7 @@ import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -95,11 +96,11 @@ public interface BaseInternalPurchaseFeign { @ApiOperation(value = "获取下一个环节") @GetMapping(value = "/getNextNodesForSubmit") - ResultBean getNextNodesForSubmit(@Valid @RequestBody GetNextNodeDto query); + ResultBean getNextNodesForSubmit(@Valid @SpringQueryMap GetNextNodeDto query); @ApiOperation(value = "获取上一个环节") @GetMapping(value = "/getPreviousNodesForReject") - ResultBean getPreviousNodesForReject(@Valid @RequestBody GetNextNodeDto query); + ResultBean getPreviousNodesForReject(@Valid @SpringQueryMap GetNextNodeDto query); @ApiOperation(value = "驳回任务") @PostMapping(value = "/reject") diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseMapper.xml index fcb149ff44..49ecbafe51 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseMapper.xml +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseMapper.xml @@ -11,6 +11,7 @@ bip.`createTime`, bip.`buyerOrgName`, bip.`sellerOrgName`, + bip.nodeState, (SELECT COUNT(*) FROM diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java index a365225110..83a0e97a9d 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java @@ -35,6 +35,8 @@ import com.yxt.anrui.base.api.baseinternalpurchase.flow.SubmitBaseInterNalPurcha import com.yxt.anrui.base.api.baseinternalpurchasevehicle.BaseInternalPurchaseVehicle; import com.yxt.anrui.base.api.baseinternalpurchasevehicle.BaseInternalPurchaseVehicleDto; import com.yxt.anrui.base.api.baseinternalpurchasevehicle.BaseInternalPurchaseVehicleVo; +import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModprice; +import com.yxt.anrui.base.api.basemodelmodprice.flow.SubmitBaseModelModPriceDto; import com.yxt.anrui.base.api.baseoutsourcingapplication.GetNextNodeDto; import com.yxt.anrui.base.api.busvehicleapply.BusVehicleApply; import com.yxt.anrui.base.api.busvehicleapply.flow.GetNodeVo; @@ -47,6 +49,8 @@ import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -87,6 +91,8 @@ public class BaseInternalPurchaseService extends MybatisBaseService createQueryWrapper(BaseInternalPurchaseQuery query) { // todo: 这里根据具体业务调整查询条件 @@ -139,6 +145,8 @@ public class BaseInternalPurchaseService extends MybatisBaseService variables = BeanUtil.beanToMap(dto); - ResultBean resultBean = saveAll(dto); - String businessSid = resultBean.getData().toString(); + ResultBean rb = ResultBean.fireFail(); + //根据用户sid获取staffSid + ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getCreateBySid()); + if (!userVoResultBean.getSuccess()) { + return rb.setMsg(userVoResultBean.getMsg()); + } + //根据staffSid获取用户的组织全路径 + ResultBean orgByStaffSid = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid()); + if (!orgByStaffSid.getSuccess()) { + return rb.setMsg(orgByStaffSid.getMsg()); + } + //用户的组织全路径 + String orgSidPath = orgByStaffSid.getData().getOrgSidPath(); + BaseInternalPurchase baseInternalPurchase = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, baseInternalPurchase); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + //新增修改保存 + ResultBean resultBean = saveAll(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + String businessSid = resultBean.getData(); + //创建BusinessVariables实体对象 BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值 + Map variables = BeanUtil.beanToMap(dto); + //若有网关,则赋值网关中判断的字段。 + variables.put("businessSid", businessSid); + //用户的部门全路径sid bv.setOrgSidPath(orgSidPath); + //业务sid bv.setBusinessSid(businessSid); - bv.setUserSid(dto.getUserSid()); - variables.put("businessSid", businessSid); + //用户sid + bv.setUserSid(dto.getCreateBySid()); bv.setFormVariables(variables); + //流程定义id bv.setModelId(ProcDefEnum.BASEINTERNALPURCHASE.getProDefId()); - //如果taskid从业务的数据库中查询出来,那这个taskid 和当前的关系是什么 如果数据库中查询出来的taskid是第四个环节的id,但是目前是做的第一次的提交操作。 - // 应该是也不允许走if 也不运行走else 那应该如何验证这个id是否允许走else呢? - // 取出来业务数据的taskid和前端传递的taskid作比较 来判断数据的是否有效 本质上是数据版本一致性的问题 - if (StringUtils.isBlank(dto.getTaskId())) { // 新提交 - ResultBean resultBean1 = flowableFeign.startProcess(bv); - UpdateFlowFieldVo uff = resultBean1.getData(); - updateFlowFiled(BeanUtil.beanToMap(uff)); - return resultBean1; - } else { // 驳回到发起人后再次提交 + if (r == 1) { + ResultBean voResultBean = flowableFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(baseInternalPurchase.getTaskId()); + bv.setTaskDefKey(baseInternalPurchase.getNodeSid()); bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); bv.setInstanceId(dto.getInstanceId()); return complete(bv); } + return rb; + } + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitBaseInterNalPurchaseDto dto, BaseInternalPurchase baseInternalPurchase) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (baseInternalPurchase != null) { + String businessTaskId = baseInternalPurchase.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 beanToMap) {