Browse Source

未售买断提交、办理、获取下一环节、获取上一环节、驳回、更新业务中流程信息

master
dimengzhe 3 years ago
parent
commit
93d0597c34
  1. 10
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSales.java
  2. 41
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java
  3. 21
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java
  4. 34
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesCompleteDto.java
  5. 25
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesTaskQuery.java
  6. 23
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeQuery.java
  7. 14
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeVo.java
  8. 29
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/SubmitActualSalesDto.java
  9. 17
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java
  10. 30
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml
  11. 35
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java
  12. 445
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java
  13. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java
  14. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

10
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSales.java

@ -20,10 +20,12 @@ public class BaseVehicleActualSales extends BaseEntity {
private String nodeState;
@ApiModelProperty(value = "流程定义id")
private String procDefId;
@ApiModelProperty(value = "环节定义的sid")
private String nodeSid;
@ApiModelProperty(value = "流程实例的sid")
private String procInstSid;
@ApiModelProperty(value = "环节定义的id")
private String nodeId;
@ApiModelProperty(value = "流程实例的id")
private String procInstId;
@ApiModelProperty(value = "任务id")
private String taskId;
}

41
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java

@ -1,12 +1,18 @@
package com.yxt.anrui.base.api.basevehicleactualsales;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.*;
import com.yxt.anrui.base.api.busvehicleapply.flow.BusVehicleApplyTaskQuery;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/4/8 11:57
@ -27,42 +33,39 @@ public interface BaseVehicleActualSalesFeign {
@ApiOperation("新增或修改")
@PostMapping("/saveOrUpdate")
@ResponseBody
ResultBean saveOrUpdate(@RequestBody BaseVehicleActualSalesDto baseVehicleActualSalesDto);
ResultBean<String> saveOrUpdate(@RequestBody BaseVehicleActualSalesDto baseVehicleActualSalesDto);
@ApiOperation("删除")
@DeleteMapping("/delete")
@ResponseBody
ResultBean delete(@RequestBody String[] sidsList);
@ApiOperation("提交")
@PostMapping("/submitVehicleSales")
@ResponseBody
ResultBean submitVehicleSales(@RequestBody BaseVehicleActualSalesDto baseVehicleActualSalesDto);
@ApiOperation("初始化")
@GetMapping("/details")
@ResponseBody
ResultBean<BaseVehicleActualSalesDetailsVo> details(@RequestParam(value = "sid") String sid);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
@ApiOperation("提交")
@PostMapping("/submitVehicleSales")
@ResponseBody
public ResultBean complete(@RequestBody BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery);
ResultBean submitVehicleSales(@RequestBody SubmitActualSalesDto dto);
/* @ApiOperation(value = "驳回任务")
@PostMapping("/reject")
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
@ResponseBody
ResultBean reject(@RequestBody BaseVehicleActualSalesFlowDto dto);
public ResultBean complete(@RequestBody BaseActualSalesCompleteDto dto);
@ApiOperation(value = "终止任务")
@PostMapping("/breakProcess")
@ResponseBody
ResultBean breakProcess(@RequestBody BaseVehicleActualSalesFlowDto dto);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<GetNodeVo>> getPreviousNodesForReject(@SpringQueryMap GetNodeQuery query);
@ApiOperation(value = "撤回任务")
@PostMapping("/revokeProcess")
@ResponseBody
ResultBean revokeProcess(@RequestBody BaseVehicleActualSalesFlowDto dto);*/
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<GetNodeVo>> getNextNodesForSubmit(@SpringQueryMap GetNodeQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BaseActualSalesTaskQuery query);
}

21
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java

@ -1,13 +1,12 @@
package com.yxt.anrui.base.api.basevehicleactualsales;
import com.yxt.anrui.base.api.flow.FlowTaskVo;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import javax.validation.Valid;
import java.util.Map;
import java.util.List;
/**
* @Author dimengzhe
@ -22,7 +21,7 @@ public class BaseVehicleActualSalesFeignFallback implements BaseVehicleActualSal
}
@Override
public ResultBean saveOrUpdate(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
public ResultBean<String> saveOrUpdate(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
return null;
}
@ -32,7 +31,7 @@ public class BaseVehicleActualSalesFeignFallback implements BaseVehicleActualSal
}
@Override
public ResultBean submitVehicleSales(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
public ResultBean submitVehicleSales(SubmitActualSalesDto dto) {
return null;
}
@ -42,22 +41,22 @@ public class BaseVehicleActualSalesFeignFallback implements BaseVehicleActualSal
}
@Override
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
public ResultBean complete(BaseActualSalesCompleteDto dto) {
return null;
}
/* @Override
public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
@Override
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
public ResultBean taskReject(BaseActualSalesTaskQuery query) {
return null;
}*/
}
}

34
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesCompleteDto.java

@ -0,0 +1,34 @@
package com.yxt.anrui.base.api.basevehicleactualsales.flow;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 22:38
* @Description
*/
@Data
public class BaseActualSalesCompleteDto implements Dto {
private static final long serialVersionUID = 9219201125285862470L;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
private String taskId;
@ApiModelProperty(value = "流程id")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "暂不确定是不是后端需要的:有分支的时候传")
private Map<String, Object> formVariables;
}

25
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesTaskQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.base.api.basevehicleactualsales.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/28 22:43
* @Description
*/
@Data
public class BaseActualSalesTaskQuery implements Query {
private static final long serialVersionUID = 7371888548849601582L;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:业务sid是必传项")
private String businessSid;
@ApiModelProperty("任务意见")
private String comment;
}

23
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeQuery.java

@ -0,0 +1,23 @@
package com.yxt.anrui.base.api.basevehicleactualsales.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 22:36
* @Description
*/
@Data
public class GetNodeQuery implements Query {
private static final long serialVersionUID = 1568795049195161615L;
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "暂不确定后端需要的:有分支网关的时候传")
private Map<String, Object> formVariables;
}

14
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeVo.java

@ -0,0 +1,14 @@
package com.yxt.anrui.base.api.basevehicleactualsales.flow;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/28 22:37
* @Description
*/
@Data
public class GetNodeVo implements Vo {
private static final long serialVersionUID = 8359562423298045722L;
}

29
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/SubmitActualSalesDto.java

@ -0,0 +1,29 @@
package com.yxt.anrui.base.api.basevehicleactualsales.flow;
import com.yxt.anrui.base.api.basevehicleactualsales.BaseVehicleActualSalesDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/28 22:19
* @Description
*/
@Data
public class SubmitActualSalesDto extends BaseVehicleActualSalesDto {
private static final long serialVersionUID = 3584091380240114011L;
@ApiModelProperty("业务sid")
private String businessSid;
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程定义id")
private String modelId;
@ApiModelProperty("下一环节的代办人sid")
private String nextNodeUserSids;
}

17
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java

@ -10,7 +10,7 @@ import com.yxt.anrui.base.api.basevehicleactualsales.BaseVehicleActualSalesVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @Author dimengzhe
@ -35,18 +35,9 @@ public interface BaseVehicleActualSalesMapper extends BaseMapper<BaseVehicleActu
* @return
*/
BaseVehicleActualSalesDetailsVo details(String sid);
/**
* 更新未售买断业务表中的流程状态
*
* @param businessSid 业务sid
* @param proDefId 流程定义ID
* @param nodeState 节点状态
* @param procInsId 流程实例ID
* @param taskDefKey 任务定义的ID值
*/
void modifyFlowState(@Param("businessSid") String businessSid, @Param("procDefId") String proDefId, @Param("nodeState") String nodeState,
@Param("procInstSid") String procInsId, @Param("nodeSid") String taskDefKey,@Param("taskId") String taskId);
int selectBySid(String list);
int updateFlowFiled(Map<String, Object> map);
}

30
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml

@ -6,7 +6,8 @@
sv.applicationName,
DATE_FORMAT(sv.createTime, '%Y-%m-%d') as createTime,
sv.reason,
(select count(*) from base_vehicle_actual_details sa where sa.vehicleActualSid = sv.sid) as num
(select count(*) from base_vehicle_actual_details sa where sa.vehicleActualSid = sv.sid) as num,
if(length(sv.nodeState) > 0, nodeState, '待提交') as nodeState
from base_vehicle_actual_sales sv
left join base_vehicle_actual_details bd on bd.vehicleActualSid = sv.sid
${ew.customSqlSegment}
@ -18,19 +19,26 @@
where sid = #{sid}
</select>
<update id="modifyFlowState">
update base_vehicle_actual_sales
set procDefId=#{procDefId},
nodeState=#{nodeState},
procInstSid=#{procInstSid},
nodeSid=#{nodeSid}
where sid = #{businessSid}
</update>
<select id="selectBySid" resultType="int">
select count(*)
from base_vehicle_actual_sales
where length(nodeState)>0
where length(nodeState) > 0
and find_in_set(sid, #{list})
</select>
<update id="updateFlowFiled">
UPDATE base_vehicle_actual_sales
SET nodeState=#{nodeState}
, nodeId=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

35
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java

@ -1,6 +1,10 @@
package com.yxt.anrui.base.biz.basevehicleactualsales;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.basevehicleactualsales.*;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.*;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -9,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/4/8 15:05
@ -30,7 +36,7 @@ public class BaseVehicleActualSalesRest implements BaseVehicleActualSalesFeign {
}
@Override
public ResultBean saveOrUpdate(BaseVehicleActualSalesDto scmVehicleActualSalesDto) {
public ResultBean<String> saveOrUpdate(BaseVehicleActualSalesDto scmVehicleActualSalesDto) {
return baseVehicleActualSalesService.saveOrUpdateVehicleSales(scmVehicleActualSalesDto);
}
@ -40,8 +46,8 @@ public class BaseVehicleActualSalesRest implements BaseVehicleActualSalesFeign {
}
@Override
public ResultBean submitVehicleSales(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
return baseVehicleActualSalesService.submitVehicleSales(baseVehicleActualSalesDto);
public ResultBean submitVehicleSales(SubmitActualSalesDto dto) {
return baseVehicleActualSalesService.submitVehicleSales(dto);
}
@Override
@ -50,22 +56,25 @@ public class BaseVehicleActualSalesRest implements BaseVehicleActualSalesFeign {
}
@Override
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
return baseVehicleActualSalesService.complete(baseVehicleActualSalesFlowQuery);
public ResultBean complete(BaseActualSalesCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId());
return baseVehicleActualSalesService.complete(bv);
}
/* @Override
public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.reject(dto);
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return baseVehicleActualSalesService.getPreviousNodesForReject(query);
}
@Override
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.breakProcess(dto);
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return baseVehicleActualSalesService.getNextNodesForSubmit(query);
}
@Override
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.revokeProcess(dto);
}*/
public ResultBean taskReject(BaseActualSalesTaskQuery query) {
return baseVehicleActualSalesService.taskReject(query);
}
}

445
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java

@ -1,39 +1,45 @@
package com.yxt.anrui.base.biz.basevehicleactualsales;
import cn.hutool.core.convert.Convert;
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.anrui.base.api.basevehicle.BaseVehicleUpdateQuery;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetails;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetailsVo;
import com.yxt.anrui.base.api.basevehicleactualsales.*;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.BaseActualSalesTaskQuery;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.GetNodeQuery;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.GetNodeVo;
import com.yxt.anrui.base.api.basevehicleactualsales.flow.SubmitActualSalesDto;
import com.yxt.anrui.base.biz.basevehicle.BaseVehicleService;
import com.yxt.anrui.base.biz.basevehicleactualdetails.BaseVehicleActualDetailsService;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTask;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.api.utils.ProcessStateEnum;
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 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 org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @Author dimengzhe
@ -43,8 +49,6 @@ import java.util.Map;
@Service
public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicleActualSalesMapper, BaseVehicleActualSales> {
@Autowired
private SysFormLinkFeign sysFormLinkFeign;
@Autowired
private BaseVehicleActualDetailsService baseVehicleActualDetailsService;
@ -69,16 +73,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
IPage<BaseVehicleActualSalesVo> page = pagerList(pagerQuery);
PagerVo<BaseVehicleActualSalesVo> pv = new PagerVo<>();
PagerVo<BaseVehicleActualSalesVo> pv1 = PagerUtil.pageToVo(page, pv);
List<BaseVehicleActualSalesVo> voList = pv1.getRecords();
if (voList.size() > 0) {
for (BaseVehicleActualSalesVo vo : voList) {
if (StringUtils.isNotBlank(vo.getNodeState())) {
vo.setNodeState(vo.getNodeState());
} else {
vo.setNodeState("待提交");
}
}
}
return pv1;
}
@ -90,18 +84,8 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
*/
private IPage<BaseVehicleActualSalesVo> pagerList(PagerQuery<BaseVehicleActualSalesQuery> pagerQuery) {
IPage<?> page = PagerUtil.queryToPage(pagerQuery);
QueryWrapper<BaseVehicleActualSales> qw = buildQueryWrapper(pagerQuery.getParams());
return baseMapper.pagerList(page, qw);
}
/**
* 构造查询条件
*
* @param params 查询条件
* @return
*/
private QueryWrapper<BaseVehicleActualSales> buildQueryWrapper(BaseVehicleActualSalesQuery params) {
QueryWrapper<BaseVehicleActualSales> qw = new QueryWrapper<>();
BaseVehicleActualSalesQuery params = pagerQuery.getParams();
if (params != null) {
//申请日期
qw.apply(StringUtils.isNotBlank(params.getApplyStartDate()), "date_format (sv.createTime,'%Y-%m-%d') >= date_format('" + params.getApplyStartDate() + "','%Y-%m-%d')").
@ -122,7 +106,7 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
}
}
qw.eq("sv.createBySid", params.getUserSid());
return qw;
return baseMapper.pagerList(page, qw);
}
/**
@ -132,8 +116,8 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
* @return 未售买断申请的sid
*/
@Transactional(rollbackFor = Exception.class)
public ResultBean saveOrUpdateVehicleSales(BaseVehicleActualSalesDto scmVehicleActualSalesDto) {
ResultBean rb = ResultBean.fireFail();
public ResultBean<String> saveOrUpdateVehicleSales(BaseVehicleActualSalesDto scmVehicleActualSalesDto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = scmVehicleActualSalesDto.getSid();
if (StringUtils.isBlank(sid)) {
//新增
@ -180,115 +164,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return false;
}
/**
* 查询用户是否设置了部门
*
* @param userSid 用户sid
* @return 单位sid
*/
private String checkUserOrg(String userSid) {
String orgSid = "";
String staffSid = sysUserFeign.selectBySid(userSid).getData().getStaffSid();
ResultBean<String> resultBean = sysStaffOrgFeign.getSysStaffOrgSidListByStaffSid(staffSid);
if (resultBean.getSuccess()) {
orgSid = resultBean.getData();
}
return orgSid;
}
/**
* 提交申请
*
* @param baseVehicleActualSalesDto 未售买断新增修改数据传输对象
* @return 未售买断申请的sid
*/
public ResultBean submitVehicleSales(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
ResultBean rb = ResultBean.fireFail();
String orgSid = checkUserOrg(baseVehicleActualSalesDto.getUserSid());
if (baseVehicleActualSalesDto.getDetailsList().size() == 0) {
return rb.setMsg("请选择未售买断的车辆");
}
//保存或修改未售买断申请
ResultBean resultBean = saveOrUpdateVehicleSales(baseVehicleActualSalesDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回提交失败
boolean isTrue = isTrue(resultBean.getData().toString());
if (isTrue) {
return rb.setMsg("提交失败!该申请中包含结算状态已是预买断状态的车辆");
}
//开启流程
ResultBean resultBean1 = businessStart(baseVehicleActualSalesDto.getUserSid(), resultBean.getData().toString(), orgSid);
if (!resultBean1.getSuccess()) {
log.error("开启流程失败");
return rb.setMsg("提交失败");
}
return resultBean;
}
/**
* 开启流程
*
* @param userSid 用户sid
* @param businessSid 业务sid
* @param orgSid 单位sid
* @return
*/
public ResultBean businessStart(String userSid, String businessSid, String orgSid) {
ResultBean rb = ResultBean.fireFail();
Map<String, Object> variables = new HashMap<>();
variables.put("businessSid", businessSid);
variables.put("orgSid", orgSid);
ResultBean businessResultBean = null;// flowableFeign.businessStart(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId(), userSid, variables);
if (businessResultBean.getSuccess() && businessResultBean.getData() != null) {
Map<String, String> map = (Map<String, String>) businessResultBean.getData();
//更新未售买断业务表中的流程状态
/* modifyFlowState(businessSid,
ProcDefEnum.SCMVEHICLERETURN.getProDefId(),
map.get("nodeState"),
map.get("procInsId"),
map.get("taskDefKey")
);*/
modifyFlowState(businessSid,
ProcDefEnum.SALESORDER.getProDefId(),
map.get("nodeState"),
map.get("procInsId"),
map.get("taskDefKey"),
map.get("taskId"));
return rb.success();
} else {
return rb.setMsg(businessResultBean.getMsg());
}
}
/**
* 更新未售买断业务表中的流程状态
*
* @param businessSid 业务sid
* @param proDefId 流程定义ID
* @param nodeState 节点状态
* @param procInsId 流程实例ID
* @param taskDefKey 任务定义的ID值
*/
/*private void modifyFlowState(String businessSid, String proDefId, String nodeState,
String procInsId,
String taskDefKey) {
baseMapper.modifyFlowState(businessSid,
proDefId,
nodeState,
procInsId,
taskDefKey);
}*/
private void modifyFlowState(String businessSid, String proDefId, String nodeState,
String procInsId,
String taskDefKey, String taskId) {
baseMapper.modifyFlowState(businessSid,
proDefId,
nodeState,
procInsId,
taskDefKey, taskId);
}
/**
* 初始化
@ -309,73 +184,12 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return rb.success().setData(vo);
}
/**
* 审批同意
*
* @param baseVehicleActualSalesFlowQuery 审批相关参数
* @return
*/
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
ResultBean rb = ResultBean.fireFail();
//查询对象转换为map集合
Map<String, Object> variables = Convert.toMap(String.class, Object.class, baseVehicleActualSalesFlowQuery);
BusinessVariables bv = BusinessVariables.builder().build();
bv.setFormVariables(variables);
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回审核失败
boolean isTrue = isTrue(baseVehicleActualSalesFlowQuery.getBusinessSid());
if (isTrue) {
return rb.setMsg("审核失败!该申请中包含结算状态已是预买断状态的车辆");
}
//审批
ResultBean<FlowTask> resultBean = flowTaskFeign.businessComplete(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = getMap(variables.get("businessSid").toString(), resultBean.getData());
//更新关联表节点状态属性
sysFormLinkFeign.updateFiled(map);
if ("Event_end".equals(map.get("taskDefKey"))) {
//更新车辆的结算状态
updateByVinNo(variables.get("businessSid").toString());
}
return rb.success();
}
/**
* 获取关联表节点状态属性
*
* @param businessSid 业务sid
* @param flowTask 工作流任务相关参数
* @return
*/
public Map<String, Object> getMap(String businessSid, FlowTask flowTask) {
String nodeState = "";
String taskDefKey = "";
Map<String, Object> map = new HashMap<>();
map.put("businessSid", businessSid);
if (flowTask != null) {
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(flowTask.getProcInsId());
if (listResultBean.getSuccess() && listResultBean.getData().size() != 0) {
nodeState = listResultBean.getData().get(0).getName_();
taskDefKey = listResultBean.getData().get(0).getTask_def_key_();
} else {
nodeState = ProcessStateEnum.FINISHED.getStateName();
taskDefKey = "Event_end";
map.put("flowState", SysFormLinkFlowStateEnum.FINISH.getCode());
}
}
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
return map;
}
/**
* 批量更新车辆的结算状态为1预买断状态
*
* @param businessSid 业务sid
*/
public void updateByVinNo(String businessSid) {
//更新车辆状态为采购退库中
ResultBean<List<String>> vinNoList = baseVehicleActualDetailsService.selectVinNoList(businessSid);
if (vinNoList.getSuccess()) {
if (vinNoList.getData().size() != 0) {
@ -409,76 +223,181 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return isTrue;
}
/* public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return resultBean;
}
String nodeState = resultBean.getData().get(0).getName_();
String taskDefKey = resultBean.getData().get(0).getTask_def_key_();
String incomingSourceRef = resultBean.getData().get(0).getIncomingSourceRef();
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
if (incomingSourceRef.contains("start")) {
map.put("flowState", SysFormLinkFlowStateEnum.REJECT.getCode());
public ResultBean delete(String[] sidsList) {
ResultBean rb = ResultBean.fireFail();
baseVehicleActualDetailsService.deleteByActualSid(sidsList);
//查询该sid中是否有流程不是待提交的
int count = baseMapper.selectBySid(StringUtils.join(sidsList, ","));
if (count > 0) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
sysFormLinkFeign.updateFiled(map);
return new ResultBean().success();
delBySids(sidsList);
return rb.success().setMsg("删除成功");
}
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean resultBean = flowTaskFeign.breakProcess(flowTaskVo);
/**
* 提交申请
*/
public ResultBean submitVehicleSales(SubmitActualSalesDto dto) {
ResultBean rb = ResultBean.fireFail();
if (dto.getDetailsList().size() == 0) {
return rb.setMsg("请选择未售买断的车辆");
}
//保存或修改未售买断申请
ResultBean<String> resultBean = saveOrUpdateVehicleSales(dto);
if (!resultBean.getSuccess()) {
return resultBean;
return rb.setMsg(resultBean.getMsg());
}
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回提交失败
boolean isTrue = isTrue(resultBean.getData().toString());
if (isTrue) {
return rb.setMsg("提交失败!该申请中包含结算状态已是预买断状态的车辆");
}
String businessSid = resultBean.getData();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
Map<String, Object> variables = BeanUtil.beanToMap(dto);
variables.put("businessSid", businessSid);
bv.setOrgSidPath(orgSidPath);
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId());
BaseVehicleActualSales baseVehicleActualSales = fetchBySid(businessSid);
if (baseVehicleActualSales != null) {
if (StringUtils.isBlank(dto.getTaskId())) {
// 新提交//启动流程
if (StringUtils.isBlank(baseVehicleActualSales.getTaskId())) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
return voResultBean;
} else {
return rb.setMsg("操作失败");
}
} else if (dto.getTaskId().equals(baseVehicleActualSales.getTaskId())) {
// ToDo:驳回到发起人后再次提交
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
} else {
return rb.setMsg("操作失败");
}
} else {
return rb.setMsg("该申请不存在");
}
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
map.put("nodeState", String.valueOf(resultBean.getData()));
map.put("taskDefKey", "Event_end");
map.put("flowState", SysFormLinkFlowStateEnum.BREAK.getCode());
sysFormLinkFeign.updateFiled(map);
return resultBean.success();
}
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return resultBean;
}
String nodeState = resultBean.getData().get(0).getName_();
String taskDefKey = resultBean.getData().get(0).getTask_def_key_();
String inComingSourceRef = resultBean.getData().get(0).getIncomingSourceRef();
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
if (inComingSourceRef.contains("start")) {
map.put("nodeState", SysFormLinkFlowStateEnum.UNCOMMITTED.getState());
map.put("taskDefKey", taskDefKey);
map.put("flowState", SysFormLinkFlowStateEnum.UNCOMMITTED.getCode());
/**
* 办理
*/
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
BaseVehicleActualSales baseVehicleActualSales = fetchBySid(bv.getBusinessSid());
if (bv.getTaskId().equals(baseVehicleActualSales.getTaskId())) {
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回审核失败
boolean isTrue = isTrue(bv.getBusinessSid());
if (isTrue) {
return rb.setMsg("审核失败!该申请中包含结算状态已是预买断状态的车辆");
}
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//ToDo:未售买断通过后的状态更新
//查询是否是最后一个环节,若是则更新未售买断的状态为通过。
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
//更新车辆的结算状态
updateByVinNo(bv.getBusinessSid());
}
return rb.success().setData(resultBean.getData());
} else {
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
return rb.setMsg("操作失败");
}
sysFormLinkFeign.updateFiled(map);
return new ResultBean().success();
}*/
public ResultBean delete(String[] sidsList) {
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
/**
* 获取上一环节
*
* @param query
* @return
*/
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> 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);
}
/**
* 获取下一环节
*
* @param query
* @return
*/
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> 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);
}
/**
* 驳回任务
*
* @param query
* @return
*/
public ResultBean taskReject(BaseActualSalesTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
baseVehicleActualDetailsService.deleteByActualSid(sidsList);
//查询该sid中是否有流程不是待提交的
int count = baseMapper.selectBySid(StringUtils.join(sidsList, ","));
if (count > 0) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
BaseVehicleActualSales baseVehicleActualSales = fetchBySid(query.getBusinessSid());
if (baseVehicleActualSales == null) {
return rb.setMsg("该申请不存在");
}
delBySids(sidsList);
return rb.success().setMsg("删除成功");
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
map.put("procInstSid", baseVehicleActualSales.getProcInstId());
map.put("procDefId", baseVehicleActualSales.getProcDefId());
//更新业务中的流程相关的参数
updateFlowFiled(map);
return rb.success();
}
}

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java

@ -318,6 +318,6 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa
map.put("procDefId", busVehicleApply.getProcDefId());
//更新业务中的流程相关的参数
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
return rb.success();
}
}

2
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -17,7 +17,7 @@ public enum ProcDefEnum {
RECORDAPPLICATION("入账申请", "record_application_7y80d4r8:1:265008"),//TODO
SCMVEHICLERETURN("采购退库", "process_md8aeoap:4:245028"),
SEALAPPLY("盖章申请", "process_7h0z66tp:1:240064" ),
BASEVEHICLEACTUALSALES("未售买断", "process_2l9i88sk:3:272604"),//ToDo
BASEVEHICLEACTUALSALES("未售买断", "process_6qx07b75:3:265004"),//ToDo
SALESORDER("销售订单审批流程", "process_p5ils2rn:2:245112"),
BASEOUTSOURCINGAPPLICATION("外采申请", "process_5tqysnjc:6:375342"),//TODO
BASEMODELMODPRICE("车型调价申请", "process_kydcif7k:2:252555")

Loading…
Cancel
Save