Commit 299ca3bc authored by LiuLin's avatar LiuLin

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents a8a57e6f 34ffae7b
......@@ -214,6 +214,12 @@ public class JgMaintenanceContract extends BaseEntity {
private String createUserId;
/**
* 创建人名称
*/
@TableField("create_user_name")
private String createUserName;
/**
* 创建时间
*/
@TableField("create_date")
......
......@@ -25,7 +25,7 @@ public enum WorkFlowStatusEnum {
/**
* 维保流程
* 维保备案
*/
MAIN_SUBMIT("使用单位提交", "mainSubmit", "使用单位待提交", "维保单位已驳回", "使用单位已撤回"),
MAIN_RECEIVE("维保单位审核确认", "mainReceive", "维保单位待受理", "监管单位已驳回", "维保单位已撤回"),
......
......@@ -56,51 +56,6 @@ public class JgMaintenanceContractController extends BaseController {
return ResponseHelper.buildResponse(jgMaintenanceContractServiceImpl.saveOrSubmit(submit,model, reginParams));
}
/**
* 更新维保合同和设备对应关系
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/updateMaintenanceAndEquipment")
@ApiOperation(httpMethod = "POST", value = "更新维保合同和设备对应关系", notes = "更新维保合同和设备对应关系")
public ResponseModel<Object> updateMaintenanceAndEquipment(@RequestBody Map<String , Object> model,
@RequestParam(value = "submit",required = false,defaultValue = "0") String submit) {
JgMaintenanceContractDto dto = JSON.parseObject(JSON.toJSONString(model), JgMaintenanceContractDto.class);
List<Map<String, Object>> list = (List<Map<String, Object>>) model.get("equipmentLists");
return ResponseHelper.buildResponse(jgMaintenanceContractServiceImpl.updateMaintenanceAndEquipment(submit,dto,list));
}
/**
* 提交
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/submit")
@ApiOperation(httpMethod = "POST", value = "维保合同提交", notes = "维保合同提交")
public ResponseModel<Object> submit(@RequestBody Map<String , Object> model) {
JgMaintenanceContractDto dto = JSON.parseObject(JSON.toJSONString(model), JgMaintenanceContractDto.class);
String comment = String.valueOf(model.get("comment"));
String operate = String.valueOf(model.get("operate"));
return ResponseHelper.buildResponse(jgMaintenanceContractServiceImpl.submit(dto,comment,operate));
}
/**
* 审批
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/approval")
@ApiOperation(httpMethod = "POST", value = "审批", notes = "审批")
public ResponseModel<Object> approval(@RequestBody Map<String , Object> model) {
JgMaintenanceContractDto dto = JSON.parseObject(JSON.toJSONString(model.get("formData")), JgMaintenanceContractDto.class);
String comment = String.valueOf(model.get("comment"));
String operate = String.valueOf(model.get("operate"));
return ResponseHelper.buildResponse(jgMaintenanceContractServiceImpl.approval(dto,comment,operate));
}
/**
* 撤回
......@@ -216,8 +171,7 @@ public class JgMaintenanceContractController extends BaseController {
public ResponseModel<Page<JgMaintenanceContractVo>> queryForPage(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "phase") int phase,
Map<String,Object> map,
JgMaintenanceContractDto maintenanceContractDto) {
Map<String,Object> map) {
Page<JgMaintenanceContract> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.JgMaintenanceContractDto;
import com.yeejoin.amos.boot.module.jg.api.dto.TaskModelDto;
import com.yeejoin.amos.boot.module.jg.api.dto.WorkflowResultDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintenanceContract;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintenanceContractEq;
import com.yeejoin.amos.boot.module.jg.api.enums.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.MaintenanceEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgMaintenanceContractEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgMaintenanceContractMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgMaintenanceContractService;
import com.yeejoin.amos.boot.module.jg.api.vo.JgMaintenanceContractVo;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.ProcessTaskDTO;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.BeanUtils;
......@@ -35,8 +37,10 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
......@@ -54,37 +58,29 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
public static final String SUBMIT_DATA = "0";
public static final String SUBMIT_TYPE_FLOW = "1";
public static final String WB_PROCESS_DEFINITION_KEY = "maintenanceFiling";
private static final String HANDLING_STATUS_DICTIONARY = "JGGZZZ";
private static final String USE = "使用";
@Autowired
TzsServiceFeignClient tzsServiceFeignClient;
@Autowired
RestHighLevelClient restHighLevelClient;
@Autowired
WorkFlowFeignService workFlowFeginService;
@Autowired
private JgMaintenanceContractMapper maintenanceContractMapper;
@Autowired
private JgMaintenanceContractEqMapper maintenanceContractEqMapper;
@Autowired
private JgMaintenanceContractEqServiceImpl jgMaintenanceContractEqService;
@Autowired
private DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
RedisUtils redisUtils;
@Autowired
ICmWorkflowService workflowService;
@Autowired
CommonServiceImpl commonService;
/**
* 分页查询
*/
public Page<JgMaintenanceContractVo> queryForPage(Page<JgMaintenanceContract> page,
int phase,
// JgMaintenanceContractDto dto,
Map<String,Object> map,
ReginParams reginParams) {
// JgMaintenanceContractDto dto = new JgMaintenanceContractDto();
// JgMaintenanceContractDto dto = (JgMaintenanceContractDto)map;
public Page<JgMaintenanceContractVo> queryForPage(Page<JgMaintenanceContract> page, int phase,
Map<String, Object> map, ReginParams reginParams) {
JgMaintenanceContractDto dto = JSON.parseObject(JSON.toJSONString(map.get("jgMaintenanceContractDto")), JgMaintenanceContractDto.class);
Page<JgMaintenanceContractDto> contractList = new Page<>();
......@@ -117,7 +113,7 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
BeanUtils.copyProperties(dto, vo);
vo.setMaintenanceContract(ObjectUtils.isEmpty(dto.getMaintenanceContract()) ? null : JSON.parseArray(dto.getMaintenanceContract()));
List<Map<String, Object>> list = maintenanceContractMapper.selectEquipList(sequenceNbr);
if (!ObjectUtils.isEmpty(list)){
if (!ObjectUtils.isEmpty(list)) {
vo.setEquipmentLists(list);
}
return vo;
......@@ -136,9 +132,7 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
public void flowExecute(Long id, String instanceId, String operate, String comment, Boolean update) {
try {
JgMaintenanceContract jgMaintenanceContract = this.getBaseMapper().selectById(id);
JSONObject task = workFlowFeginService.getTaskNoAuth(instanceId);
JSONObject taskMessage = JSON.parseObject(JSON.toJSONString(task.get("data")));
String taskId = taskMessage.getString("id");
String taskId = jgMaintenanceContract.getNextTaskId();
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
......@@ -150,55 +144,30 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
map.put("approvalStatus", "提交");
}
dto.setVariable(map);
//执行流程
Workflow.taskClient.completeByTask(taskId, dto);
ProcessTaskDTO complete = workflowService.complete(taskId, dto);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(complete));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
createTaskModel(jgMaintenanceContract, complete.getNextTask().get(0).getName(), operate, nextUserIds);
// 更新下一步执行人
updateExecuteIds(complete, id, operate);
} catch (Exception e) {
e.printStackTrace();
}
// 更新下一步执行人
updateExecuteIds(instanceId, id, operate);
}
public void updateStatus(Long id , String taskName, String role, Boolean rollBack) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
LambdaQueryWrapper<JgMaintenanceContract> lambda = new QueryWrapper<JgMaintenanceContract>().lambda();
lambda.eq(JgMaintenanceContract::getSequenceNbr, id);
JgMaintenanceContract jgMaintenanceContract = this.getBaseMapper().selectOne(lambda);
if ("流程结束".equals(taskName)) {
jgMaintenanceContract.setStatus(taskName);
jgMaintenanceContract.setApplyStatus("已完成");
} else {
jgMaintenanceContract.setNextExecuteIds(role);
jgMaintenanceContract.setPromoter(reginParams.getUserModel().getUserId());
if (!ObjectUtils.isEmpty(jgMaintenanceContract.getInstanceStatus())) {
jgMaintenanceContract.setInstanceStatus(jgMaintenanceContract.getInstanceStatus() + "," + role);
} else {
jgMaintenanceContract.setInstanceStatus(role);
}
UseStatusEnum message = UseStatusEnum.getMessage(taskName);
jgMaintenanceContract.setStatus(message.getPass());
}
if (rollBack){
this.getBaseMapper().update(jgMaintenanceContract, lambda);
this.getBaseMapper().updatePromoter(jgMaintenanceContract.getSequenceNbr());
}else {
this.getBaseMapper().update(jgMaintenanceContract, lambda);
}
}
/**
* 批量删除
*/
@Transactional
public Boolean deleteForBatch(Long[] ids) {
List<Long> list = Arrays.asList(ids);
list.forEach(x->{
list.forEach(x -> {
QueryWrapper<JgMaintenanceContract> wrapper = new QueryWrapper<>();
wrapper.eq("sequence_nbr", x);
JgMaintenanceContract jgMaintenanceContract = maintenanceContractMapper.selectOne(wrapper);
LambdaQueryWrapper<JgMaintenanceContractEq> queryWrapper = new LambdaQueryWrapper<JgMaintenanceContractEq>()
.eq(JgMaintenanceContractEq::getEquipTransferId,jgMaintenanceContract.getApplyNo())
.eq(JgMaintenanceContractEq::getEquipTransferId, jgMaintenanceContract.getApplyNo())
.eq(JgMaintenanceContractEq::getIsDelete, false);
List<Long> listSeq = jgMaintenanceContractEqService.list(queryWrapper).stream()
.map(JgMaintenanceContractEq::getSequenceNbr).collect(Collectors.toList());
......@@ -208,151 +177,32 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
return true;
}
public String startByVariable() {
String instanceId = "";
//启动流程
try {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(WB_PROCESS_DEFINITION_KEY);
dto.setBusinessKey("submit");
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
instanceId = ((Map<?, ?>) ajaxResult.get("data")).get("id").toString();
} catch (Exception e) {
e.printStackTrace();
}
return instanceId;
}
/**
* 维保合同提交
*/
@Transactional
public Boolean submit(JgMaintenanceContractDto dto,String comment,String operate) {
String instanceId = "";
try {
AjaxResult ajaxResult;
ActWorkflowStartDTO flowDto = new ActWorkflowStartDTO();
flowDto.setProcessDefinitionKey(WB_PROCESS_DEFINITION_KEY);
flowDto.setBusinessKey("1");
ajaxResult = Workflow.taskClient.startByVariable(flowDto);
instanceId = ((Map<?, ?>) ajaxResult.get("data")).get("id").toString();
ajaxResult = Workflow.taskClient.getTask(instanceId);
// 执行一步
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO taskResultDTO = new TaskResultDTO();
taskResultDTO.setResultCode("approvalStatus");
taskResultDTO.setTaskId(taskId);
taskResultDTO.setComment(comment);
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", operate);
taskResultDTO.setVariable(map);
//执行流程
Workflow.taskClient.completeByTask(taskId, taskResultDTO);
Workflow.taskClient.completeByTask(taskId, taskResultDTO);
} catch (Exception e) {
e.printStackTrace();
}
dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
dto.setInstanceId(instanceId);
dto.setReceiveOrgCode(null);
return this.updateBySequenceNbr(dto);
}
@Transactional
public Boolean approval(JgMaintenanceContractDto dto,String comment,String operate) {
String instanceId = dto.getInstanceId();
try {
AjaxResult ajaxResult;
ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO taskResultDTO = new TaskResultDTO();
taskResultDTO.setResultCode("approvalStatus");
taskResultDTO.setTaskId(taskId);
taskResultDTO.setComment(comment);
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", operate);
taskResultDTO.setVariable(map);
//执行流程
Workflow.taskClient.completeByTask(taskId, taskResultDTO);
} catch (Exception e) {
e.printStackTrace();
}
// if("tongguo"){
// if("weibao"){
// dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
// }else {
// dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
// }
// }else {
// if("weibao"){
// dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
// }else {
// dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
// }
// }
if ("1".equals(operate)){
}
//审批通过
if ("0".equals(operate)){
}
dto.setApplyStatus(FlowStatusEnum.TO_BE_PROCESSED.getName());
dto.setInstanceId(instanceId);
dto.setReceiveOrgCode(null);
return this.updateBySequenceNbr(dto);
}
/**
* 维保合同撤回
*/
@Transactional
public void revocation(String instanceId) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
String taskCode = "";
JgMaintenanceContract jgMaintenanceContract = new JgMaintenanceContract();
LambdaQueryWrapper<JgMaintenanceContract> lambda = new QueryWrapper<JgMaintenanceContract>().lambda();
lambda.eq(JgMaintenanceContract::getInstanceId, instanceId);
ArrayList<String> roleList = new ArrayList<>();
try {
workFlowFeginService.rollBack(instanceId);
JSONObject taskNoAuth = workFlowFeginService.getTaskNoAuth(instanceId);
JSONObject nextTask = JSON.parseObject(JSON.toJSONString(taskNoAuth.get("data")));
taskCode = nextTask.getString("name");
if (!ObjectUtils.isEmpty(taskNoAuth.get("data"))) {
String nextTaskId = nextTask.getString("id");
FeignClientResult<JSONObject> nodeInfo = workFlowFeginService.getNodeInfo(nextTaskId);
JSONObject result = nodeInfo.getResult();
Map<String, Object> taskInfo = (Map<String, Object>) result.get("taskInfo");
taskCode = String.valueOf(taskInfo.get("taskDefinitionKey"));
AjaxResult taskGroupName = Workflow.taskClient.getTaskGroupName(nextTaskId);
JSONArray data = JSON.parseArray(JSON.toJSONString(taskGroupName.get("data")));
for (Object datum : data) {
if (((Map<?, ?>) datum).containsKey("groupId")) {
roleList.add(((Map<?, ?>) datum).get("groupId").toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (!ObjectUtils.isEmpty(taskCode)) {
jgMaintenanceContract.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getRollBack());
public void revocation(String instanceId) {
// 执行流程
JgMaintenanceContract contract = new JgMaintenanceContract();
QueryWrapper<JgMaintenanceContract> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(JgMaintenanceContract::getInstanceId, instanceId);
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
ProcessTaskDTO processTaskDTO = workflowService.rollBack(instanceId);
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
// 待调整
String taskCode = processTaskDTO.getNextTask().get(0).getKey();
if (!FlowStatusEnum.TO_BE_FINISHED.getName().equals(taskCode)) {
contract.setApplyStatus(WorkFlowStatusEnum.getMessage(taskCode).getRollBack());
}
String join = String.join(",", roleList);
jgMaintenanceContract.setPromoter(reginParams.getUserModel().getUserId());
jgMaintenanceContract.setNextExecuteIds(join);
this.update(jgMaintenanceContract, lambda);
contract.setPromoter(RequestContext.getExeUserId());
contract.setNextExecuteIds(String.join(",", roleListNext));
contract.setNextTaskId(nextTaskId);
this.update(contract, queryWrapper);
// 删除待办
commonService.deleteTaskModel(contract.getInstanceId());
commonService.rollbackTask(contract.getInstanceId());
}
/**
......@@ -360,12 +210,13 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
*/
@Transactional(rollbackFor = Exception.class)
public Boolean saveOrSubmit(String submit, Map<String, Object> map, ReginParams reginParams) {
JgMaintenanceContractDto dto = JSON.parseObject(JSON.toJSONString(map), JgMaintenanceContractDto.class);
JgMaintenanceContractDto contractDto = JSON.parseObject(JSON.toJSONString(map), JgMaintenanceContractDto.class);
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) map.get("equipmentLists");
CompanyBo company = reginParams.getCompany();
JgMaintenanceContract contract = new JgMaintenanceContract();
BeanUtils.copyProperties(dto, contract);
contract.setCreateDate(new Date());
// JgMaintenanceContract contract = new JgMaintenanceContract();
// BeanUtils.copyProperties(contractDto, contract);
contractDto.setCreateDate(new Date());
contractDto.setPromoter(reginParams.getUserModel().getUserId());
//获取维保备案编号
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.WBBA.getCode(), 1);
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
......@@ -373,36 +224,32 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
return false;
}
String wbApplyNo = listResponseModel.getResult().get(0);
contract.setApplyNo(wbApplyNo);
contract.setUseUnitCode(company.getCompanyCode());
contract.setUseUnitName(company.getCompanyName());
contractDto.setApplyNo(wbApplyNo);
contractDto.setUseUnitCode(company.getCompanyCode());
contractDto.setUseUnitName(company.getCompanyName());
//管理员信息
String[] MaintenanceManager = dto.getMaintenanceManagerId().split("_");
contract.setMaintenanceManagerId(MaintenanceManager[0]);
contract.setMaintenanceManagerName(MaintenanceManager[1]);
String[] MaintenanceManager = contractDto.getMaintenanceManagerId().split("_");
contractDto.setMaintenanceManagerId(MaintenanceManager[0]);
contractDto.setMaintenanceManagerName(MaintenanceManager[1]);
//接收机构信息
String[] splitReceiveOrgCode = dto.getReceiveOrgCode().split("_");
contract.setReceiveOrgCode(splitReceiveOrgCode[0]);
contract.setReceiveOrgName(splitReceiveOrgCode[1]);
String[] splitReceiveOrgCode = contractDto.getReceiveOrgCode().split("_");
contractDto.setReceiveOrgCode(splitReceiveOrgCode[0]);
contractDto.setReceiveOrgName(splitReceiveOrgCode[1]);
//维保单位信息
String[] splitMaintenanceUnitCode = dto.getMaintenanceUnitCode().split("_");
contract.setMaintenanceUnitCode(splitMaintenanceUnitCode[0]);
contract.setMaintenanceUnitName(splitMaintenanceUnitCode[1]);
contract.setApplyStatus(FlowStatusEnum.TO_BE_SUBMITTED.getName());
contract.setEquNum(equipmentLists.size());
// 新增编辑
if ("add".equals(String.valueOf(map.get("pageType")))) {
contract.setStatus(SUBMIT_DATA.equals(submit) ? WorkFlowStatusEnum.MAIN_SUBMIT.getPass() : WorkFlowStatusEnum.MAIN_RECEIVE.getPass());
this.save(contract);
} else {
String[] splitMaintenanceUnitCode = contractDto.getMaintenanceUnitCode().split("_");
contractDto.setMaintenanceUnitCode(splitMaintenanceUnitCode[0]);
contractDto.setMaintenanceUnitName(splitMaintenanceUnitCode[1]);
contractDto.setApplyStatus(FlowStatusEnum.TO_BE_SUBMITTED.getName());
contractDto.setEquNum(equipmentLists.size());
JgMaintenanceContract contract = getById(contractDto.getSequenceNbr());
BeanUtils.copyProperties(contractDto, contract);
if (!"add".equals(String.valueOf(map.get("pageType")))) {
//编辑
this.getBaseMapper().updateById(contract);
LambdaQueryWrapper<JgMaintenanceContractEq> lambda = new QueryWrapper<JgMaintenanceContractEq>().lambda();
lambda.eq(JgMaintenanceContractEq::getEquipTransferId, contract.getSequenceNbr());
jgMaintenanceContractEqService.getBaseMapper().delete(lambda);
}
//关联设备信息
List<JgMaintenanceContractEq> equipList = new ArrayList<>();
equipmentLists.forEach(x -> {
......@@ -413,162 +260,198 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
});
// 保存维保关联设备信息
jgMaintenanceContractEqService.saveBatch(equipList);
// 判断当前是否为提交
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submit)) {
String instanceId = null;
// 提交启动流程
if (map.containsKey("instanceId") && !ObjectUtils.isEmpty(map.get("instanceId"))) {
instanceId = String.valueOf(map.get("instanceId"));
if (!StringUtils.isEmpty(contract.getInstanceId())) {
// 发起流程
try {
List<ProcessTaskDTO> processTasks = new ArrayList<>();
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(WB_PROCESS_DEFINITION_KEY);
dto.setBusinessKey(contract.getApplyNo());
dto.setCompleteFirstTask(true);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTasks = workflowService.startBatch(actWorkflowBatchDTO);
String instanceId = processTasks.get(0).getProcessInstance().getId();
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
String taskName = processTasks.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
contract.setInstanceStatus(String.join(",", roleListAll));
contract.setInstanceId(instanceId);
contract.setNextExecuteIds(String.join(",", roleListNext));
contract.setNextTaskId(nextTaskId);
// 创建待办
JgMaintenanceContract bean = new JgMaintenanceContract();
BeanUtil.copyProperties(contract, bean);
createTaskModel(bean, taskName, "1", nextUserIds);
} catch (Exception e) {
log.error("提交失败:{}", e);
throw new BadRequest("提交失败" + e.getMessage());
}
} else {
instanceId = startByVariable();
}
if (!ObjectUtils.isEmpty(instanceId)) {
// 修改数据信息
updateExecuteIds(instanceId, contract.getSequenceNbr(), "0");
// 默认执行流程
flowExecute(contract.getSequenceNbr(), instanceId, "0", "", false);
// 执行一步
ProcessTaskDTO processTaskDTO = this.submit("0", contract.getNextTaskId());
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
String taskName = processTaskDTO.getNextTask().get(0).getName();
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
// 查询下节点任务
if (!ObjectUtils.isEmpty(contract.getInstanceStatus())) {
contract.setInstanceStatus(contract.getInstanceStatus() + "," + String.join("", roleListNext));
} else {
contract.setInstanceStatus(String.join(",", roleListAll));
}
contract.setPromoter(RequestContext.getExeUserId());
contract.setNextExecuteIds(String.join(",", roleListNext));
contract.setApplyStatus(String.valueOf(WorkFlowStatusEnum.MAIN_RECEIVE.getPass()));
contract.setNextTaskId(nextTaskId);
executeOneStep(contract, taskName, nextUserIds);
}
updateById(contract);
} else {
// 新增
contract.setStatus(SUBMIT_DATA.equals(submit) ? WorkFlowStatusEnum.MAIN_SUBMIT.getPass() : WorkFlowStatusEnum.MAIN_RECEIVE.getPass());
this.save(contract);
}
return true;
}
public void updateExecuteIds(String instanceId, Long sequenceNbr, String operate){
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
String role = "";
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
ArrayList<String> roleList = new ArrayList<>();
JgMaintenanceContract jgMaintenanceContract = this.getBaseMapper().selectById(sequenceNbr);
try {
// 查询下节点任务
public ProcessTaskDTO submit(String op, String taskId) {
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
dto.setComment("提交流程");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
dto.setVariable(map);
return workflowService.complete(taskId, dto);
}
JSONObject taskNoAuth = workFlowFeginService.getTaskNoAuth(instanceId);
if (!ObjectUtils.isEmpty(taskNoAuth.get("data"))) {
JSONObject nextTask = JSON.parseObject(JSON.toJSONString(taskNoAuth.get("data")));
String nextTaskId = nextTask.getString("id");
FeignClientResult<JSONObject> nodeInfo = workFlowFeginService.getNodeInfo(nextTaskId);
JSONObject result = nodeInfo.getResult();
Map<String, Object> taskInfo = (Map<String, Object>) result.get("taskInfo");
taskCode = String.valueOf(taskInfo.get("taskDefinitionKey"));
AjaxResult taskGroupName = Workflow.taskClient.getTaskGroupName(nextTaskId);
JSONArray data = JSON.parseArray(JSON.toJSONString(taskGroupName.get("data")));
for (Object datum : data) {
if (((Map) datum).containsKey("groupId")) {
roleList.add(((Map) datum).get("groupId").toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
private void buildRoleList(List<ProcessTaskDTO> processTasks, List<String> roleListNext, List<String> roleListAll) {
processTasks.forEach(p -> {
p.getNextCandidateGroups().values().forEach(e -> {
roleListNext.addAll(e);
roleListAll.addAll(e);
});
roleListAll.addAll(p.getCandidateGroups());
});
}
public void updateExecuteIds(ProcessTaskDTO processTaskDTO, Long sequenceNbr, String operate) {
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
String taskName = "";
String nextTaskId = "";
JgMaintenanceContract contract = this.getBaseMapper().selectById(sequenceNbr);
if (processTaskDTO != null && processTaskDTO.getNextTask() != null && processTaskDTO.getNextTask().size() > 0) {
taskCode = processTaskDTO.getNextTask().get(0).getKey();
taskName = processTaskDTO.getNextTask().get(0).getName();
nextTaskId = processTaskDTO.getNextTask().get(0).getId();
}
if (!FlowStatusEnum.TO_BE_FINISHED.getName().equals(taskCode)){
role= String.join(",", roleList);
jgMaintenanceContract.setNextExecuteIds(role);
jgMaintenanceContract.setPromoter(reginParams.getUserModel().getUserId());
jgMaintenanceContract.setInstanceId(instanceId);
if (!ObjectUtils.isEmpty(jgMaintenanceContract.getInstanceStatus())) {
jgMaintenanceContract.setInstanceStatus(jgMaintenanceContract.getInstanceStatus() + "," + role);
if (!FlowStatusEnum.TO_BE_FINISHED.getName().equals(taskCode)) {
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
contract.setNextExecuteIds(String.join(",", roleListNext));
contract.setPromoter(RequestContext.getExeUserId());
contract.setInstanceId(processTaskDTO.getProcessInstance().getId());
contract.setNextTaskId(nextTaskId);
if (!ObjectUtils.isEmpty(contract.getInstanceStatus())) {
contract.setInstanceStatus(contract.getInstanceStatus() + "," + String.join(",", roleListNext));
} else {
jgMaintenanceContract.setInstanceStatus(role);
contract.setInstanceStatus(String.join(",", roleListNext));
}
if ("0".equals(operate)){
if ("0".equals(operate)) {
// 通过操作
jgMaintenanceContract.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getPass());
}else {
contract.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getPass());
} else {
// 驳回操作
jgMaintenanceContract.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getReject());
jgMaintenanceContract.setPromoter(null);
contract.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getReject());
contract.setPromoter(null);
}
}else {
jgMaintenanceContract.setApplyDate(new Date());
jgMaintenanceContract.setStatus(taskCode);
executeOneStep(contract, taskName, nextUserIds);
} else {
contract.setApplyDate(new Date());
contract.setStatus(taskCode);
updateTaskModel(contract);
}
this.getBaseMapper().updateById(jgMaintenanceContract);
this.getBaseMapper().updateById(contract);
}
private void executeOneStep(JgMaintenanceContract contract, String taskName, String nextUserIds) {
// 先更新之前的待办
TaskV2Model taskV2Model = updateTaskModel(contract);
// 再插入新代办、数据待定
taskV2Model.setTaskName(taskName);
taskV2Model.setExecuteUserIds(nextUserIds);
taskV2Model.setTaskStatus(this.getTaskStatusByName(contract.getApplyStatus()));
taskV2Model.setTaskStatusLabel(contract.getApplyStatus());
TaskModelDto modelDto = new TaskModelDto();
BeanUtil.copyProperties(taskV2Model, modelDto);
modelDto.setNextExecuteUser(contract.getNextExecuteIds());
modelDto.setModel(contract);
commonService.buildTaskModel(Collections.singletonList(modelDto));
}
private void extracted(String instanceId, ArrayList<String> roleList, JgMaintenanceContract contract) {
JSONObject taskNoAuth = workFlowFeginService.getTaskNoAuth(instanceId);
if (!ObjectUtils.isEmpty(taskNoAuth.get("data"))) {
JSONObject nextTask = JSON.parseObject(JSON.toJSONString(taskNoAuth.get("data")));
String nextTaskId = nextTask.getString("id");
AjaxResult taskGroupName = Workflow.taskClient.getTaskGroupName(nextTaskId);
JSONArray data = JSON.parseArray(JSON.toJSONString(taskGroupName.get("data")));
for (Object datum : data) {
if (((Map<?, ?>) datum).containsKey("groupId")) {
roleList.add(((Map<?, ?>) datum).get("groupId").toString());
}
}
}
contract.setInstanceStatus(String.join(",", roleList));
private TaskV2Model updateTaskModel(JgMaintenanceContract contract) {
Map<String, Object> params = new HashMap<>();
params.put("relationId", contract.getInstanceId());
params.put("taskStatus", this.getTaskStatusByName(contract.getApplyStatus()));
params.put("taskStatusLabel", contract.getApplyStatus());
return commonService.updateTaskModel(params);
}
/**
* 更新维保合同和设备对应关系
*/
@Transactional
public Boolean updateMaintenanceAndEquipment(String submit,JgMaintenanceContractDto dto, List<Map<String, Object>> list) {
String instanceId = null;
private Integer getTaskStatusByName(String auditStatus) {
return commonService.getDictionaryCodeByName(auditStatus);
}
//更新维保合同表
String[] MaintenanceManager = dto.getMaintenanceManagerId().split("_");
dto.setMaintenanceManagerId(dto.getMaintenanceManagerId());
dto.setMaintenanceManagerName(MaintenanceManager[1]);
private void createTaskModel(JgMaintenanceContract dto, String taskName, String submitType, String nextUserIds) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if ("1".equals(submitType)) {
TaskModelDto taskModelDto = new TaskModelDto();
taskModelDto.setFlowCreateDate(dto.getApplyDate());
taskModelDto.setTaskName(taskName);
taskModelDto.setTaskCode(dto.getApplyNo());
taskModelDto.setTaskContent(this.buildTaskContent(dto));
taskModelDto.setTaskDesc("");
taskModelDto.setTaskType(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getCode());
taskModelDto.setTaskTypeLabel(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getName());
taskModelDto.setRelationId(dto.getInstanceId());
taskModelDto.setExecuteUserIds(nextUserIds);
taskModelDto.setTaskStatus(this.getTaskCodeByName(dto.getApplyStatus()));
taskModelDto.setTaskStatusLabel(dto.getApplyStatus());
taskModelDto.setStartUserId(dto.getCreateUserId());
taskModelDto.setStartUser(reginParams.getUserModel().getRealName());
taskModelDto.setStartUserCompanyName(dto.getUseUnitName());
taskModelDto.setNextExecuteUser(dto.getNextExecuteIds());
taskModelDto.setStartDate(dto.getCreateDate());
taskModelDto.setModel(dto);
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
}
}
String[] splitReceiveOrgCode = dto.getReceiveOrgCode().split("_");
dto.setReceiveOrgCode(splitReceiveOrgCode[0]);
dto.setReceiveOrgName(splitReceiveOrgCode[1]);
private Integer getTaskCodeByName(String auditStatus) {
return commonService.getDictionaryCodeByName(auditStatus);
}
String[] splitMaintenanceUnitCode = dto.getMaintenanceUnitCode().split("_");
dto.setMaintenanceUnitCode(dto.getMaintenanceUnitCode());
dto.setMaintenanceUnitName(splitMaintenanceUnitCode[1]);
// 判断当前是否为提交
if (SUBMIT_TYPE_FLOW.equals(submit)) {
// 发起流程
try {
ActWorkflowStartDTO flowDto = new ActWorkflowStartDTO();
flowDto.setProcessDefinitionKey(WB_PROCESS_DEFINITION_KEY);
flowDto.setBusinessKey("1");
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(flowDto);
instanceId = ((Map<?, ?>) ajaxResult.get("data")).get("id").toString();
ajaxResult = Workflow.taskClient.getTask(instanceId);
// 执行一步
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
TaskResultDTO taskResultDTO = new TaskResultDTO();
taskResultDTO.setResultCode("approvalStatus");
taskResultDTO.setTaskId(taskId);
taskResultDTO.setComment("提交流程");
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("approvalStatus", "0");
taskResultDTO.setVariable(hashMap);
//执行流程
Workflow.taskClient.completeByTask(taskId, taskResultDTO);
// dto.setApplyFlow(MaintenanceEnum.SHIYONG.getMsg()+","+MaintenanceEnum.WEIBAO.getMsg());
dto.setInstanceId(instanceId);
} catch (Exception e) {
log.error("维保使用单位提交流程启动失败:{}", e);
}
}
this.updateBySequenceNbr(dto);
//更新对应设备表
if (!list.isEmpty()) {
//先删除原先设备对应关系
LambdaQueryWrapper<JgMaintenanceContractEq> queryWrapper = new LambdaQueryWrapper<JgMaintenanceContractEq>()
.eq(JgMaintenanceContractEq::getEquId,list.get(0).get("SEQUENCE_NBR"))
.eq(JgMaintenanceContractEq::getIsDelete, false);
List<Long> listSeq = jgMaintenanceContractEqService.list(queryWrapper).stream()
.map(JgMaintenanceContractEq::getSequenceNbr).collect(Collectors.toList());
jgMaintenanceContractEqService.deleteBatchSeq(listSeq);
//重新生成关系表
List<JgMaintenanceContractEq> equipList = new ArrayList<>();
list.forEach(x -> {
JgMaintenanceContractEq equip = new JgMaintenanceContractEq();
equip.setEquId(String.valueOf(x.get("SEQUENCE_NBR")));
equip.setEquipTransferId(dto.getApplyNo());
equipList.add(equip);
});
return jgMaintenanceContractEqService.saveBatch(equipList);
}
return true;
/**
* 摘要构建
*
* @param dto 业务
* @return 摘要
*/
private String buildTaskContent(JgMaintenanceContract dto) {
return "申请单号:" + dto.getApplyNo() + "的业务办理";
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment