diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSales.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSales.java index c095af558a..1f2bc01445 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSales.java +++ b/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; } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java index a98aba4abc..76cf90b203 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java +++ b/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 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 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> getPreviousNodesForReject(@SpringQueryMap GetNodeQuery query); - @ApiOperation(value = "撤回任务") - @PostMapping("/revokeProcess") - @ResponseBody - ResultBean revokeProcess(@RequestBody BaseVehicleActualSalesFlowDto dto);*/ + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@SpringQueryMap GetNodeQuery query); + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BaseActualSalesTaskQuery query); } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java index c5f491d7b6..9320d9c764 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java +++ b/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 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> getPreviousNodesForReject(GetNodeQuery query) { return null; } @Override - public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) { + public ResultBean> getNextNodesForSubmit(GetNodeQuery query) { return null; } @Override - public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) { + public ResultBean taskReject(BaseActualSalesTaskQuery query) { return null; - }*/ + } } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesCompleteDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesCompleteDto.java new file mode 100644 index 0000000000..aa8c94f82d --- /dev/null +++ b/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 formVariables; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesTaskQuery.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/BaseActualSalesTaskQuery.java new file mode 100644 index 0000000000..7906047eb0 --- /dev/null +++ b/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; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeQuery.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeQuery.java new file mode 100644 index 0000000000..9992815c15 --- /dev/null +++ b/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 formVariables; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeVo.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/GetNodeVo.java new file mode 100644 index 0000000000..2909a74970 --- /dev/null +++ b/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; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/SubmitActualSalesDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/flow/SubmitActualSalesDto.java new file mode 100644 index 0000000000..dcda791ef3 --- /dev/null +++ b/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; + +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java index 7f080d0d39..9b271b28e6 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java +++ b/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 map); } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml index f7aeac76b5..ccfcb2dfd9 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml +++ b/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} - - update base_vehicle_actual_sales - set procDefId=#{procDefId}, - nodeState=#{nodeState}, - procInstSid=#{procInstSid}, - nodeSid=#{nodeSid} - where sid = #{businessSid} - - + + + UPDATE base_vehicle_actual_sales + SET nodeState=#{nodeState} + , nodeId=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java index 78cbfe2db9..2351090894 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java +++ b/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 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> getPreviousNodesForReject(GetNodeQuery query) { + return baseVehicleActualSalesService.getPreviousNodesForReject(query); } @Override - public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) { - return baseVehicleActualSalesService.breakProcess(dto); + public ResultBean> 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); + } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java index 78ab8144ed..6cb5c5a240 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java +++ b/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 { - @Autowired - private SysFormLinkFeign sysFormLinkFeign; @Autowired private BaseVehicleActualDetailsService baseVehicleActualDetailsService; @@ -69,16 +73,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService page = pagerList(pagerQuery); PagerVo pv = new PagerVo<>(); PagerVo pv1 = PagerUtil.pageToVo(page, pv); - List 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 pagerList(PagerQuery pagerQuery) { IPage page = PagerUtil.queryToPage(pagerQuery); - QueryWrapper qw = buildQueryWrapper(pagerQuery.getParams()); - return baseMapper.pagerList(page, qw); - } - - /** - * 构造查询条件 - * - * @param params 查询条件 - * @return - */ - private QueryWrapper buildQueryWrapper(BaseVehicleActualSalesQuery params) { QueryWrapper 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 saveOrUpdateVehicleSales(BaseVehicleActualSalesDto scmVehicleActualSalesDto) { + ResultBean rb = ResultBean.fireFail(); String sid = scmVehicleActualSalesDto.getSid(); if (StringUtils.isBlank(sid)) { //新增 @@ -180,115 +164,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService 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 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 map = (Map) 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 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 resultBean = flowTaskFeign.businessComplete(bv); - if (!resultBean.getSuccess()) { - return rb.setMsg(resultBean.getMsg()); - } - Map 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 getMap(String businessSid, FlowTask flowTask) { - String nodeState = ""; - String taskDefKey = ""; - Map map = new HashMap<>(); - map.put("businessSid", businessSid); - if (flowTask != null) { - ResultBean> 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> vinNoList = baseVehicleActualDetailsService.selectVinNoList(businessSid); if (vinNoList.getSuccess()) { if (vinNoList.getData().size() != 0) { @@ -409,76 +223,181 @@ public class BaseVehicleActualSalesService extends MybatisBaseService> 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 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 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 userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid()); + if (!userVoResultBean.getSuccess()) { + return rb.setMsg(userVoResultBean.getMsg()); + } + //根据staffSid获取用户的组织全路径 + ResultBean 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 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 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 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> 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 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 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 map) { + return baseMapper.updateFlowFiled(map); + } + + + /** + * 获取上一环节 + * + * @param query + * @return + */ + public ResultBean> getPreviousNodesForReject(GetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.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), GetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + /** + * 获取下一环节 + * + * @param query + * @return + */ + public ResultBean> getNextNodesForSubmit(GetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BASEVEHICLEACTUALSALES.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), 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 resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + map.put("procInstSid", baseVehicleActualSales.getProcInstId()); + map.put("procDefId", baseVehicleActualSales.getProcDefId()); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + return rb.success(); } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java index a2974e2894..05b8783a8c 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java +++ b/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