diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitle/AsTechTitleVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitle/AsTechTitleVo.java index 498539cda8..b7f569d894 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitle/AsTechTitleVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitle/AsTechTitleVo.java @@ -51,6 +51,8 @@ public class AsTechTitleVo implements Vo { private String sid; + @ApiModelProperty("备案状态") + private String state; @ApiModelProperty("职称名称") private String titleNameValue; @ApiModelProperty("权重") @@ -63,6 +65,4 @@ public class AsTechTitleVo implements Vo { private String techName; @ApiModelProperty("排序") private Integer sortNo; - @ApiModelProperty("备案状态") - private String filingState; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/CompleteTechTitleApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/CompleteTechTitleApplyDto.java new file mode 100644 index 0000000000..ffc88478c2 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/CompleteTechTitleApplyDto.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class CompleteTechTitleApplyDto { + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/SubmitTechTitleApplyDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/SubmitTechTitleApplyDto.java new file mode 100644 index 0000000000..5563a9aca8 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/SubmitTechTitleApplyDto.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyDto; +import com.yxt.anrui.as.api.astechtitleapply.AsTechTitleApplyDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class SubmitTechTitleApplyDto extends AsTechTitleApplyDto { + + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyDelegateQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyDelegateQuery.java new file mode 100644 index 0000000000..64ad93decb --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyDelegateQuery.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class TechTitleApplyDelegateQuery { + + private String userSid; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeQuery.java new file mode 100644 index 0000000000..097de1748b --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeQuery.java @@ -0,0 +1,18 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class TechTitleApplyNodeQuery { + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeVo.java new file mode 100644 index 0000000000..3c1cc812d0 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyNodeVo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class TechTitleApplyNodeVo { + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyTaskQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyTaskQuery.java new file mode 100644 index 0000000000..134d70e53f --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/astechtitleapply/flowable/TechTitleApplyTaskQuery.java @@ -0,0 +1,43 @@ +package com.yxt.anrui.as.api.astechtitleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/5/11 + **/ +@Data +public class TechTitleApplyTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleMapper.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleMapper.java index 59d28e2cfc..ccc158b5d2 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleMapper.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleMapper.java @@ -68,4 +68,7 @@ public interface AsTechTitleMapper extends BaseMapper { @Select("select * from as_tech_title where sid = #{sid} and isDelete = '0'") AsTechTitle fetchIsDeleteBySid(String sid); + + @Update("update as_tech_title set state = #{state} where sid = #{sid}") + void updateState(@Param("sid") String sid,@Param("state") String state); } \ No newline at end of file diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleService.java index e3e694a501..e67e91879c 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitle/AsTechTitleService.java @@ -128,9 +128,12 @@ public class AsTechTitleService extends MybatisBaseService page = PagerUtil.queryToPage(pq); IPage pagging = baseMapper.selectPageVo(page, qw); for (AsTechTitleVo record : pagging.getRecords()) { - String nodeState = asTechTitleApplyService.selNodeState(record.getSid()); - if ("已办结".equals(nodeState)){ - //record. + if ("1".equals(record.getState())){ + record.setState("未备案"); + }else if ("2".equals(record.getState())){ + record.setState("备案中"); + }else if ("0".equals(record.getState())){ + record.setState("已备案"); } } PagerVo p = PagerUtil.pageToVo(pagging, null); @@ -213,4 +216,8 @@ public class AsTechTitleService extends MybatisBaseService @@ -59,5 +58,5 @@ public interface AsTechTitleApplyMapper extends BaseMapper { String selectNum(String billNo); - String selNodeState(String titleSid); + int updateFlowFiled(Map beanToMap); } \ No newline at end of file diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyMapper.xml index 7f68d5a7f8..0f34f1cfd5 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyMapper.xml +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyMapper.xml @@ -24,13 +24,21 @@ limit 1 - + + UPDATE as_tech_title_apply + SET nodeState=#{nodeState}, nodeId=#{taskDefKey} + + , finishTime = NOW() + + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java index 9a0db6c487..5bc5435f55 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java @@ -25,12 +25,17 @@ *********************************************************/ package com.yxt.anrui.as.biz.astechtitleapply; +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.as.api.asbwdiffapply.flowable.*; +import com.yxt.anrui.as.api.astechtitleapply.flowable.*; +import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables; 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.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; import com.yxt.anrui.as.api.astechtitleapply.AsTechTitleApplyQuery; @@ -38,6 +43,9 @@ import com.yxt.anrui.as.api.astechtitleapply.AsTechTitleApplyVo; import com.yxt.anrui.as.api.astechtitleapply.AsTechTitleApplyDetailsVo; import com.yxt.anrui.as.api.astechtitleapply.AsTechTitleApplyDto; +import javax.validation.Valid; +import java.util.List; + /** * Project: yxt-as(维修技师职称备案申请)
* File: AsTechTitleApplyFeignFallback.java
@@ -94,4 +102,56 @@ public class AsTechTitleApplyRest { AsTechTitleApplyDetailsVo vo = asTechTitleApplyService.init(techSids); return rb.success().setData(vo); } + + @ApiOperation("提交") + @PostMapping("/submitApply") + public ResultBean submitApply(@Valid @RequestBody SubmitTechTitleApplyDto dto) { + return asTechTitleApplyService.submitApply(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody CompleteTechTitleApplyDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(""); + return asTechTitleApplyService.complete(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) { + return asTechTitleApplyService.getPreviousNodesForReject(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) { + return asTechTitleApplyService.getNextNodesForSubmit(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody TechTitleApplyTaskQuery query) { + return asTechTitleApplyService.taskReject(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) { + return asTechTitleApplyService.revokeProcess(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) { + return asTechTitleApplyService.breakProcess(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody TechTitleApplyDelegateQuery query) { + return asTechTitleApplyService.delegate(query); + } } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyService.java index afb4b8df8b..3670effefc 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyService.java @@ -27,13 +27,14 @@ package com.yxt.anrui.as.biz.astechtitleapply; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.yxt.anrui.as.api.asappendix.AsAppendix; -import com.yxt.anrui.as.api.asbwdiffapply.AsBwdiffapplyFile; -import com.yxt.anrui.as.api.asoldparthandleapply.AsOldparthandleApplyVo; import com.yxt.anrui.as.api.astechtitle.AsTechTitle; import com.yxt.anrui.as.api.astechtitleapply.*; +import com.yxt.anrui.as.api.astechtitleapply.flowable.*; import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetail; import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetailDetailsVo; import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetailDto; @@ -42,10 +43,18 @@ import com.yxt.anrui.as.biz.astechtitle.AsTechTitleService; import com.yxt.anrui.as.biz.astechtitledetail.AsTechTitleDetailService; import com.yxt.anrui.as.feign.base.billno.Rule; import com.yxt.anrui.as.feign.file.AsFileEnum; +import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables; import com.yxt.anrui.as.feign.flowable.flow.FlowableFeign; +import com.yxt.anrui.as.feign.flowable.flow.ProcDefEnum; +import com.yxt.anrui.as.feign.flowable.flow.UpdateFlowFieldVo; +import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery; import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign; import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskFeign; +import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskVo; +import com.yxt.anrui.as.feign.flowable.flowtask.LatestTaskVo; import com.yxt.anrui.as.feign.message.MessageFeign; +import com.yxt.anrui.as.feign.message.MessageFlowVo; +import com.yxt.anrui.as.feign.message.MessageFlowableQuery; import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery; import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo; @@ -59,12 +68,13 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.vo.PagerVo; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; /** * Project: yxt-as(维修技师职称备案申请)
@@ -104,7 +114,7 @@ public class AsTechTitleApplyService extends MybatisBaseService listPageVo(PagerQuery pq) { AsTechTitleApplyQuery query = pq.getParams(); QueryWrapper qw = new QueryWrapper<>(); @@ -175,7 +185,7 @@ public class AsTechTitleApplyService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } - + public ResultBean saveOrUpdateDto(AsTechTitleApplyDto dto){ ResultBean rb = ResultBean.fireFail(); String dtoSid = dto.getSid(); @@ -213,7 +223,7 @@ public class AsTechTitleApplyService extends MybatisBaseService variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //用户的部门全路径sid + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asTechTitleApply.getDeptSid()).getData(); + if (sysOrganization != null) { + bv.setOrgSidPath(sysOrganization.getOrgSidPath()); + } + bv.setBusinessSid(businessSid); + bv.setUserSid(dto.getCreateBySid()); + bv.setFormVariables(variables); + if (r == 1) { + //ToDo:流程定义id + bv.setModelId(ProcDefEnum.ASTECHTITLEAPPLY.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //提交后修改职称管理中备案状态为备案中 + List asTechTitleDetailDetailsList = dto.getAsTechTitleDetailDetailsList(); + for (AsTechTitleDetailDto asTechTitleDetailDto : asTechTitleDetailDetailsList) { + asTechTitleService.updateState(asTechTitleDetailDto.getTitleSid(),"2"); + } + asTechTitleApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + AsTechTitleApply finalAsTechTitleApply = asTechTitleApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("维修技师职称备案申请"); + messageFlowableQuery.setMsgContent(finalAsTechTitleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("维修技师职称备案申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(asTechTitleApply.getTaskId()); + bv.setTaskDefKey(asTechTitleApply.getNodeId()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private int updateFlowFiled(Map beanToMap) { + return baseMapper.updateFlowFiled(beanToMap); + } + + + private int submitBusinessData(SubmitTechTitleApplyDto dto, AsTechTitleApply asTechTitleApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (asTechTitleApply != null) { + String businessTaskId = asTechTitleApply.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; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + AsTechTitleApply asTechTitleApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asTechTitleApply.getDeptSid()).getData(); + if (sysOrganization != null) { + bv.setOrgSidPath(sysOrganization.getOrgSidPath()); + } + bv.setModelId(asTechTitleApply.getProcDefId()); + if (bv.getTaskId().equals(asTechTitleApply.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + //办结后修改职称管理中备案状态为已备案 + List asTechTitleDetailDetailsVos = asTechTitleDetailService.selByMainSid(businessSid); + for (AsTechTitleDetailDetailsVo asTechTitleDetailDetailsVo : asTechTitleDetailDetailsVos) { + asTechTitleService.updateState(asTechTitleDetailDetailsVo.getTitleSid(),"0"); + } + } else { + //极光推送 + asTechTitleApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(asTechTitleApply.getProcDefId()); + messageFlowVo.setProcInsId(asTechTitleApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("维修技师职称备案申请"); + messageFlowableQuery.setMsgContent(asTechTitleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("维修技师职称备案申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(TechTitleApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + AsTechTitleApply asTechTitleApply = fetchBySid(query.getBusinessSid()); + bv.setModelId(asTechTitleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TechTitleApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(TechTitleApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + AsTechTitleApply asTechTitleApply = fetchBySid(query.getBusinessSid()); + bv.setModelId(asTechTitleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TechTitleApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(TechTitleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + AsTechTitleApply asTechTitleApply = fetchBySid(businessSid); + if (asTechTitleApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = asTechTitleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + asTechTitleApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = asTechTitleApply.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(asTechTitleApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("维修技师职称备案申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(asTechTitleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + + messageFlowableQuery.setMsgTitle("维修技师职称备案申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(TechTitleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + AsTechTitleApply asTechTitleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = asTechTitleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(TechTitleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + AsTechTitleApply asTechTitleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = asTechTitleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(asTechTitleApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //终止后修改职称管理中备案状态为未备案 + List asTechTitleDetailDetailsVos = asTechTitleDetailService.selByMainSid(query.getBusinessSid()); + for (AsTechTitleDetailDetailsVo asTechTitleDetailDetailsVo : asTechTitleDetailDetailsVos) { + asTechTitleService.updateState(asTechTitleDetailDetailsVo.getTitleSid(),"1"); + } + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //终止后修改职称管理中备案状态为未备案 + List asTechTitleDetailDetailsVos = asTechTitleDetailService.selByMainSid(query.getBusinessSid()); + for (AsTechTitleDetailDetailsVo asTechTitleDetailDetailsVo : asTechTitleDetailDetailsVos) { + asTechTitleService.updateState(asTechTitleDetailDetailsVo.getTitleSid(),"1"); + } + return rb.success().setData(resultBean.getData()); + } + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(TechTitleApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); } } \ No newline at end of file diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java index 7f125d06a3..cdaef14a0f 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java @@ -15,6 +15,7 @@ public enum ProcDefEnum { ASBUSCLAIMCHECKAPPLY("索赔单调整申请", "process_7icw4lhq:1:11310004"), ASBWDIFFAPPLY("工单应收调差申请", "process_zcxxb6de:1:12097508"), ASBWINVOICEAPPLY("工单开票申请", "process_j8zlnkl1:1:12097504"), + ASTECHTITLEAPPLY("维修技师职称备案申请", ""), ; diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbillreport/WmsInventoryCheckbillReportDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbillreport/WmsInventoryCheckbillReportDetailsVo.java index 9d21eecc61..521b36a3c9 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbillreport/WmsInventoryCheckbillReportDetailsVo.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbillreport/WmsInventoryCheckbillReportDetailsVo.java @@ -97,5 +97,5 @@ public class WmsInventoryCheckbillReportDetailsVo implements Vo { List ware = new ArrayList<>(); //库区盘点情况 - List Area = new ArrayList<>(); + List area = new ArrayList<>(); } \ No newline at end of file