Browse Source

内购修改

master
God 3 years ago
parent
commit
2f2dd01221
  1. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchase.java
  2. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDetailsVo.java
  3. 6
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseDto.java
  4. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseinternalpurchase/BaseInternalPurchaseFeign.java
  5. 1
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseMapper.xml
  6. 104
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java

2
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")

3
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")

6
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("申请人姓名")

5
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")

1
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

104
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<BaseInternal
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private SysUserFeign sysUserFeign;
private QueryWrapper<BaseInternalPurchase> createQueryWrapper(BaseInternalPurchaseQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -139,6 +145,8 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
String sid = baseInternalPurchase.getSid();
BeanUtil.copyProperties(dto,baseInternalPurchase);
baseInternalPurchase.setSid(sid);
baseInternalPurchase.setNodeState("待提交");
save(baseInternalPurchase);
for (BaseInternalPurchaseVehicleDto baseInternalPurchaseVehicle : baseInternalPurchaseVehicles) {
BaseInternalPurchaseVehicle baseInternalPurchaseVehicle1 = new BaseInternalPurchaseVehicle();
@ -177,32 +185,94 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
}
public ResultBean submitBaseInternalPurchase(SubmitBaseInterNalPurchaseDto dto) {
//取组织架构的全路径sid
SysStaffOrg sysStaffOrg = sysStaffOrgFeign.getOrgByStaffSid(dto.getStaffSid()).getData();
String orgSidPath = sysStaffOrg.getOrgSidPath();
Map<String, Object> variables = BeanUtil.beanToMap(dto);
ResultBean resultBean = saveAll(dto);
String businessSid = resultBean.getData().toString();
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getCreateBySid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> 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<String> resultBean = saveAll(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> 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<UpdateFlowFieldVo> resultBean1 = flowableFeign.startProcess(bv);
UpdateFlowFieldVo uff = resultBean1.getData();
updateFlowFiled(BeanUtil.beanToMap(uff));
return resultBean1;
} else { // 驳回到发起人后再次提交
if (r == 1) {
ResultBean<UpdateFlowFieldVo> 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<String, Object> beanToMap) {

Loading…
Cancel
Save