Commit e9f83b6f authored by suhuiguang's avatar suhuiguang

Merge branch 'develop_tzs_register' of…

Merge branch 'develop_tzs_register' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_register
parents c145de89 15218606
......@@ -198,7 +198,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
installationInfo.put(s, ObjectUtils.isEmpty(installationInfo.get(s)) ? new JSONArray() : parseArray(installationInfo.get(s).toString()));
}
if(equipmentInfos.get(0).containsKey(s)) {
equipmentInfos.get(0).put(s, ObjectUtils.isEmpty(installationInfo.get(s)) ? new JSONArray() : parseArray(equipmentInfos.get(0).get(s).toString()));
equipmentInfos.get(0).put(s, ObjectUtils.isEmpty(equipmentInfos.get(0).get(s)) ? new JSONArray() : parseArray(equipmentInfos.get(0).get(s).toString()));
}
}
Map<String, Object> map = equipmentInfos.get(0);
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -53,7 +52,6 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
import java.util.stream.Collectors;
/**
* 设备注销报废服务实现类
......@@ -149,7 +147,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
public void save(String submitType, Map<String, Object> mapParams) {
ReginParams reginParams = this.getSelectedOrgInfo();
Map<?, ?> noticeParams = (Map) mapParams.get(PAGE_KEY);
String equipId = noticeParams.get("record").toString();
String equipId = String.valueOf(noticeParams.get("record"));
String[] receiveOrg = String.valueOf(noticeParams.get("receiveOrgCreditCode")).split("_");
noticeParams.remove("record");
String[] taskName = new String[]{"流程结束"};
......@@ -159,22 +157,16 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
model.setReceiveOrgName(receiveOrg[1]);
// 字段转换
convertField(model);
// 获取告知设备信息
// 设备信息转换
if (StrUtil.isEmpty(model.getSEQUENCE_NBR())) {
return;
}
List<Map<String, Object>> deviceList = new ArrayList<>();
HashMap<String, Object> map1 = new HashMap<>();
map1.put("SEQUENCE_NBR", model.getSEQUENCE_NBR());
deviceList.add(map1);
// 获取告知单号
ResponseModel<List<String>> listResponseModel =
tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), deviceList.size());
tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.getCode.get(String.valueOf(noticeParams.get("businessCode"))), 1);
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error(" 获取告知单号失败");
throw new RuntimeException();
}
HashMap<String, Object> deviceMap = new HashMap<>();
deviceMap.put("SEQUENCE_NBR", model.getSEQUENCE_NBR());
String instanceId = "";
String nextTaskId = "";
String nextUserIds = "";
......@@ -191,15 +183,15 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
// 发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
for (int i = 0; i < deviceList.size(); i++) {
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(applyNoList.get(i));
dto.setCompleteFirstTask(Boolean.TRUE);
//下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(model.getReceiveOrgCode());
list.add(dto);
}
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey("scrapCancelNew");
dto.setBusinessKey(applyNoList.get(0));
dto.setCompleteFirstTask(Boolean.TRUE);
//下一节点执行人单位(下节点接收机构code)
dto.setNextExecuteUserCompanyCode(model.getReceiveOrgCode());
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
......@@ -211,52 +203,41 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
this.buildRoleList(processTaskDTOS, roleListNext, roleListAll);
}
List<JgScrapCancel> list = new ArrayList<>();
List<JgScrapCancelEq> equipList = new ArrayList<>();
for (int i = 0; i < deviceList.size(); i++) {
JgScrapCancelEq jgRelationEquip = new JgScrapCancelEq();
JgScrapCancel dto = new JgScrapCancel();
BeanUtils.copyProperties(model, dto);
String applyNo = applyNoList.get(i);
LambdaQueryWrapper<OtherInfo> otherLambda = new QueryWrapper<OtherInfo>().lambda();
otherLambda.eq(OtherInfo::getRecord, deviceList.get(i).get("SEQUENCE_NBR"));
OtherInfo otherInfo = otherInfoMapper.selectOne(otherLambda);
JgScrapCancelEq jgRelationEquip = new JgScrapCancelEq();
JgScrapCancel jgScrapCancel = new JgScrapCancel();
BeanUtils.copyProperties(model, jgScrapCancel);
String applyNo = applyNoList.get(0);
LambdaQueryWrapper<OtherInfo> otherLambda = new QueryWrapper<OtherInfo>().lambda();
otherLambda.eq(OtherInfo::getRecord, deviceMap.get("SEQUENCE_NBR"));
OtherInfo otherInfo = otherInfoMapper.selectOne(otherLambda);
if (!ObjectUtils.isEmpty(otherInfo)) {
String supervisoryCode = otherInfo.getSupervisoryCode();
dto.setSupervisoryCode(supervisoryCode);
dto.setApplyNo(applyNo);
dto.setCreateDate(new Date());
dto.setNextExecuteIds(String.join(",", roleListNext));
dto.setInstanceStatus(String.join(",", roleListAll));
dto.setPromoter(reginParams.getUserModel().getUserId());
dto.setNextTaskId(Objects.isNull(workflowResultDtos) ? null : workflowResultDtos.get(i).getNextTaskId());
jgRelationEquip.setEquId(String.valueOf(deviceList.get(i).get("SEQUENCE_NBR")));
jgRelationEquip.setEquipTransferId(applyNo);
if (!StringUtils.isEmpty(instanceId)) {
dto.setInstanceId(instanceId);
dto.setNextTaskId(nextTaskId);
dto.setNextExecuteUserIds(nextUserIds);
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
} else {
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_SUBMIT.getPass()));
}
dto.setUseUnitCode(reginParams.getCompany().getCompanyCode());
dto.setUseUnitName(reginParams.getCompany().getCompanyName());
dto.setCreateUserId(RequestContext.getExeUserId());
list.add(dto);
equipList.add(jgRelationEquip);
jgScrapCancel.setSupervisoryCode(supervisoryCode);
}
this.saveBatch(list);
// 新增代办
for (JgScrapCancel jgScrapCancel : list) {
this.createTaskModel(jgScrapCancel, taskName[0], submitType, nextUserIds);
jgScrapCancel.setApplyNo(applyNo);
jgScrapCancel.setCreateDate(new Date());
jgScrapCancel.setNextExecuteIds(String.join(",", roleListNext));
jgScrapCancel.setInstanceStatus(String.join(",", roleListAll));
jgScrapCancel.setPromoter(reginParams.getUserModel().getUserId());
jgScrapCancel.setNextTaskId(Objects.isNull(workflowResultDtos) ? null : workflowResultDtos.get(0).getNextTaskId());
jgRelationEquip.setEquId((String) deviceMap.get("SEQUENCE_NBR"));
jgRelationEquip.setEquipTransferId(applyNo);
if (!StringUtils.isEmpty(instanceId)) {
jgScrapCancel.setInstanceId(instanceId);
jgScrapCancel.setNextTaskId(nextTaskId);
jgScrapCancel.setNextExecuteUserIds(nextUserIds);
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_RECEIVE.getPass()));
} else {
jgScrapCancel.setAuditStatus(String.valueOf(WorkFlowStatusEnum.CANCEL_SUBMIT.getPass()));
}
List<JgScrapCancelEq> jgScrapCancelEqList = equipList.stream().map(t -> {
List<JgScrapCancel> collect = list.stream().filter(item -> t.getEquipTransferId().equals(item.getApplyNo())).collect(Collectors.toList());
Long sequenceNbr = collect.get(0).getSequenceNbr();
return t.setEquipTransferId(String.valueOf(sequenceNbr));
}).collect(Collectors.toList());
jgScrapCancelEqService.saveBatch(jgScrapCancelEqList);
jgScrapCancel.setUseUnitCode(reginParams.getCompany().getCompanyCode());
jgScrapCancel.setUseUnitName(reginParams.getCompany().getCompanyName());
jgScrapCancel.setCreateUserId(RequestContext.getExeUserId());
this.save(jgScrapCancel);
// 新增代办
this.createTaskModel(jgScrapCancel, taskName[0], submitType, nextUserIds);
jgRelationEquip.setEquipTransferId(String.valueOf(jgScrapCancel.getSequenceNbr()));
jgScrapCancelEqService.save(jgRelationEquip);
}
private void createTaskModel(JgScrapCancel scrapCancel, String taskName, String submitType, String nextUserIds) {
......@@ -329,7 +310,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
lambda.eq(JgScrapCancel::getSequenceNbr, id);
JgScrapCancel jgScrapCancel = this.baseMapper.selectOne(lambda);
//删除代办消息
commonService.deleteTaskModel(jgScrapCancel.getInstanceId());
commonService.deleteTaskModel(String.valueOf(jgScrapCancel.getSequenceNbr()));
//更新jgScrapCancel数据
jgScrapCancel.setIsDelete(true);
this.updateById(jgScrapCancel);
......@@ -415,17 +396,20 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
jgScrapCancelEq.setEquId(jgScrapCancelDto.getRecord());
jgScrapCancelEqMapper.update(jgScrapCancelEq, updateWrapper);
} else {
LambdaQueryWrapper<OtherInfo> otherLambda = new QueryWrapper<OtherInfo>().lambda();
otherLambda.eq(OtherInfo::getRecord, jgScrapCancelDto.getSEQUENCE_NBR());
OtherInfo otherInfo = otherInfoMapper.selectOne(otherLambda);
String supervisoryCode = otherInfo.getSupervisoryCode();
jgScrapCancelDto.setSupervisoryCode(supervisoryCode);
if (!ObjectUtils.isEmpty(jgScrapCancelDto.getSEQUENCE_NBR()) && !"null".equals(jgScrapCancelDto.getSEQUENCE_NBR())) {
LambdaQueryWrapper<OtherInfo> otherLambda = new QueryWrapper<OtherInfo>().lambda();
otherLambda.eq(OtherInfo::getRecord, jgScrapCancelDto.getSEQUENCE_NBR());
OtherInfo otherInfo = otherInfoMapper.selectOne(otherLambda);
String supervisoryCode = otherInfo.getSupervisoryCode();
jgScrapCancelDto.setSupervisoryCode(supervisoryCode);
}
//更新操作
JgScrapCancel bean = new JgScrapCancel();
BeanUtils.copyProperties(jgScrapCancelDto, bean);
bean.setCancelCertificate(JSON.toJSONString(jgScrapCancelDto.getCancelCertificateList()));
this.updateById(bean);
LambdaUpdateWrapper<JgScrapCancelEq> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(JgScrapCancelEq::getEquipTransferId, bean.getSequenceNbr());
updateWrapper.eq(JgScrapCancelEq::getEquipTransferId, jgScrapCancelDto.getSequenceNbr());
JgScrapCancelEq jgScrapCancelEq = new JgScrapCancelEq();
jgScrapCancelEq.setEquId(jgScrapCancelDto.getRecord());
jgScrapCancelEqMapper.update(jgScrapCancelEq, updateWrapper);
......@@ -528,18 +512,23 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
LambdaQueryWrapper<JgScrapCancelEq> lambdaEq = new QueryWrapper<JgScrapCancelEq>().lambda();
lambdaEq.eq(JgScrapCancelEq::getEquipTransferId, sequenceNbr);
JgScrapCancelEq jgScrapCancelEq = jgScrapCancelEqMapper.selectOne(lambdaEq);
// 设备信息
installationInfo.put("record", jgScrapCancelEq.getEquId());
LambdaQueryWrapper<IdxBizJgRegisterInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizJgRegisterInfo::getRecord, jgScrapCancelEq.getEquId());
queryWrapper.last("limit 1");
IdxBizJgRegisterInfo one = idxBizJgRegisterInfoMapper.selectOne(queryWrapper);
installationInfo.put("equCode", one.getEquCode());
Map<String, Object> detailFieldCamelCaseByRecord = idxBizJgRegisterInfoService.getDetailFieldCamelCaseByRecord(jgScrapCancelEq.getEquId());
BeanUtil.copyProperties(installationInfo, detailFieldCamelCaseByRecord);
if (!ValidationUtil.isNull(jgScrapCancelEq.getEquId()) && !"null".equals(jgScrapCancelEq.getEquId())) {
// 设备信息
installationInfo.put("record", jgScrapCancelEq.getEquId());
LambdaQueryWrapper<IdxBizJgRegisterInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IdxBizJgRegisterInfo::getRecord, jgScrapCancelEq.getEquId());
queryWrapper.last("limit 1");
IdxBizJgRegisterInfo one = idxBizJgRegisterInfoMapper.selectOne(queryWrapper);
installationInfo.put("equCode", one.getEquCode());
Map<String, Object> detailFieldCamelCaseByRecord = idxBizJgRegisterInfoService.getDetailFieldCamelCaseByRecord(jgScrapCancelEq.getEquId());
BeanUtil.copyProperties(installationInfo, detailFieldCamelCaseByRecord);
return new HashMap<String, Object>() {{
this.put(PAGE_KEY, detailFieldCamelCaseByRecord);
}};
}
return new HashMap<String, Object>() {{
this.put(PAGE_KEY, detailFieldCamelCaseByRecord);
this.put(PAGE_KEY, installationInfo);
}};
}
......
......@@ -19,13 +19,14 @@ import java.util.List;
@AllArgsConstructor
public enum BizTypeEnum {
SUPERVISE("supervise", "监督检验"),
FIRST_INSPECTION("firstinspect", "定检"),
DETECTION("detection", "检测"),
BUSINESS_OPEN("businessOpen", "开通");
SUPERVISE("supervise", "监督检验","115"),
FIRST_INSPECTION("firstinspect", "定检","116"),
DETECTION("detection", "检测","117"),
BUSINESS_OPEN("businessOpen", "检验业务开通","114");
private String code;
private String name;
private String num;
public static List<String> getEnumNameList() {
List<String> codeList = new ArrayList<String>();
......@@ -44,4 +45,22 @@ public enum BizTypeEnum {
}
return null;
}
public static String getNumByCode(String code) {
for (BizTypeEnum c : BizTypeEnum.values()) {
if (c.getCode().equals(code)){
return c.getNum();
}
}
return null;
}
public static String getNameByNum(String num) {
for (BizTypeEnum c : BizTypeEnum.values()) {
if (c.getCode().equals(num)){
return c.getName();
}
}
return null;
}
}
package com.yeejoin.amos.boot.module.jyjc.api.enums;
/**
* 业务类型枚举
*
* @author Administrator
*/
public enum BusinessTypeEnum {
/**
* 业务类型枚举
*/
JG_EQUIPMENT_HANDOVER("101", "设备移交"),
JG_INSTALLATION_NOTIFICATION("102", "安装告知"),
JG_MODIFICATION_NOTIFICATION("103", "改造告知"),
JG_MAINTENANCE_NOTIFICATION("104", "维修告知"),
JG_ADVICE_REMOVAL("105", "移装告知"),
JG_MAINTENANCE_RECORD("106", "维保备案"),
JG_USAGE_REGISTRATION("107", "使用登记"),
JG_NAME_CHANGE_REGISTRATION("108", "更名变更登记"),
JG_COMPANY_CHANGE_REGISTRATION("109", "单位变更登记"),
JG_CHANGE_REGISTRATION("110", "移装变更登记"),
JG_RENOVATION_REGISTRATION("111", "改造变更登记"),
JG_EQUIPMENT_START("112-1", "设备启用"),
JG_EQUIPMENT_STOP("112-2", "设备停用"),
JG_EQUIPMENT_MOVE("113-1", "移装报废"),
JG_EQUIPMENT_CANCEL("113-2", "注销报废"),
JY_OPENING_APPLICATION("114", "业务开通"),
JY_INSPECTION_APPLICATION_JD("115", "监督检验"),
JY_INSPECTION_APPLICATION_DS("116", "定(首)检验"),
JY_INSPECTION_APPLICATION_CHECK("117", "检验(含安全阀效验)");
private final String code;
private final String name;
BusinessTypeEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getNameByType(String code) {
String name = null;
for (BusinessTypeEnum enumOne : BusinessTypeEnum.values()) {
if (enumOne.getCode().equals(code)) {
name = enumOne.getName();
break;
}
}
return name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
......@@ -165,7 +165,7 @@ public class JyjcInspectionApplicationModel extends BaseModel {
private String nextTaskId;
@ApiModelProperty(value = "下一步执行人Ids")
private String nextExcuteUserIds;
private String nextExecuteUserIds;
@ApiModelProperty(value = "下一步任务名称")
private String nextTaskName;
......
......@@ -58,4 +58,6 @@ public class TaskMessageDto {
* 设备id、使用登记使用
*/
String equipId;
String processKey;
}
......@@ -41,6 +41,12 @@ public class JyjcInspectionApplicationController extends BaseController {
@Autowired
JyjcInspectionApplicationServiceImpl jyjcInspectionApplicationServiceImpl;
// 业务通用发起——基本信息
private static final String basic = "basic";
// 业务通用发起——设备信息
private static final String equipPageInfo = "equipPageInfo";
// 业务通用发起——技术参数-
private static final String filePageData = "filePageData";
/**
* 新增
......@@ -51,7 +57,17 @@ public class JyjcInspectionApplicationController extends BaseController {
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionApplicationModel> save(@RequestBody JSONObject model) {
if (model.containsKey(basic)) {
JSONObject finallyJson = new JSONObject();
Map<String, Object> basicObj = (Map<String, Object>) model.get(basic);
Map<String, Object> equipPageInfoObj = (Map<String, Object>) model.get(equipPageInfo);
Map<String, Object> filePageDataObj = (Map<String, Object>) model.get(filePageData);
finallyJson.putAll(model);
finallyJson.putAll(basicObj);
finallyJson.putAll(equipPageInfoObj);
finallyJson.putAll(filePageDataObj);
model = finallyJson;
}
ReginParams selectedOrgInfo = getSelectedOrgInfo();
model.put("applicationUnitCode",selectedOrgInfo.getCompany().getCompanyCode());
......@@ -65,22 +81,6 @@ public class JyjcInspectionApplicationController extends BaseController {
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionApplicationModel> updateBySequenceNbrJyjcInspectionApplication(@RequestBody JyjcInspectionApplicationModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
*
......
package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
......@@ -56,9 +57,10 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcOpeningApplicationModel> save(@RequestBody JyjcOpeningApplicationModel model) {
model = jyjcOpeningApplicationServiceImpl.saveOrUpdateModel(model, false);
return ResponseHelper.buildResponse(model);
public ResponseModel<JyjcOpeningApplicationModel> save(@RequestBody JSONObject model) {
JyjcOpeningApplicationModel jyjcOpeningApplicationModel = new JyjcOpeningApplicationModel();
BeanUtil.copyProperties(model.get("applyInfo"),jyjcOpeningApplicationModel);
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.saveOrUpdateModel(jyjcOpeningApplicationModel, false));
}
/**
......@@ -78,7 +80,9 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/submit")
@ApiOperation(httpMethod = "PUT", value = "保存并提交", notes = "保存并提交")
public ResponseModel<JyjcOpeningApplicationModel> updateBySequenceNbrAndStartFlow(@RequestBody JyjcOpeningApplicationModel model, @RequestParam(value = "sequenceNbr", required = false) Long sequenceNbr) {
public ResponseModel<JyjcOpeningApplicationModel> updateBySequenceNbrAndStartFlow(@RequestBody JSONObject jsonObject, @RequestParam(value = "sequenceNbr", required = false) Long sequenceNbr) {
JyjcOpeningApplicationModel model = new JyjcOpeningApplicationModel();
BeanUtil.copyProperties(jsonObject.get("applyInfo"),model);
model.setSequenceNbr(sequenceNbr);
if (sequenceNbr != null) {
JyjcOpeningApplicationModel jyjcOpeningApplicationModel = jyjcOpeningApplicationServiceImpl.queryDetail(sequenceNbr);
......@@ -217,7 +221,7 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "撤回业务开通申请", notes = "撤回业务开通申请")
@GetMapping(value = "/rollBackFlow")
public ResponseModel<JSONObject> overflow(@RequestParam("sequenceNbr") String sequenceNbr) {
public ResponseModel<Object> overflow(@RequestParam("sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.stopFlow(sequenceNbr));
}
......
......@@ -108,7 +108,7 @@ public class TaskModelServiceImpl {
model.setFlowCreateDate(new Date());
model.setTaskStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode());
model.setTaskTitle("有一条待提交的草稿");
model.setTaskName(BizTypeEnum.getNameByCode(obj.getTaskType()));
model.setTaskName(BizTypeEnum.getNameByNum(obj.getTaskType()));
model.setTaskTypeLabel(BizTypeEnum.getNameByCode(obj.getTaskType()));
// model.setTaskContent("【申请单号:"+obj.getTaskCode()+"】待提交");
}else {
......
......@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sun.org.apache.bcel.internal.generic.NEW;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
......@@ -18,6 +19,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.*;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.ResultStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper;
......@@ -26,6 +28,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.*;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler.JyjcInspectionApplicationHandlerFactory;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
......@@ -34,13 +37,12 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import com.yeejoin.amos.feign.workflow.model.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
......@@ -98,6 +100,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
WorkflowFeignService workflowFeignService;
@Autowired
CommonserviceImpl commonservice;
@Autowired
CmWorkflowServiceImpl cmWorkflowService;
@Value("classpath:/json/bizTypeInfo.json")
private Resource bizTypeInfo;
......@@ -109,6 +113,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
private RedisUtils redisUtils;
@Autowired
TaskModelServiceImpl taskModelService;
public JyjcInspectionApplicationModel save(@RequestBody JSONObject obj) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
......@@ -118,38 +125,40 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model.setOperationType("2");
}
ArrayList<String> roleListAll = new ArrayList<>();
ArrayList<String> roleListNext = new ArrayList<>();
if (!model.getOperationType().equals("2")) {
String taskName = "";
if (model.getOperationType().equals("0")) {
List<ProcessTaskDTO> processTasks = new ArrayList<>();
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey( model.getProcessKey());
dto.setBusinessKey(buildOrderNo());
try {
//开启报检流程工作流
FeignClientResult ajaxResult = Workflow.taskV2Client.startByVariable(dto);
String id = JSON.parseObject(JSON.toJSONString(ajaxResult.getResult())) .get("id").toString();
// String id = ((Map) ajaxResult.getResult()).get("id").toString();
model.setProcessInstanceId(id);
execueFlow(MapBuilder.<String, Object>create().put("op", "提交").put("instanceId", id).put("comments", "").build());
// region 获取下一个流程节点的数据
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(model.getProcessInstanceId());
String role = (String) nextNodeInfo.get("role");
taskName = (String) nextNodeInfo.get("taskName");
model.setNextExecuteIds(role);
if (!org.springframework.util.ObjectUtils.isEmpty(model.getWorkflowRole())) {
model.setWorkflowRole(model.getWorkflowRole() + "," + role);
} else {
model.setWorkflowRole(role);
}
} catch (Exception e) {
e.printStackTrace();
dto.setProcessDefinitionKey(model.getProcessKey());
dto.setBusinessKey(String.valueOf(new Date().getTime()));
dto.setCompleteFirstTask(true);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
dto.setNextExecuteUserCompanyCode(model.getInspectionUnitCode());
processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO);
String instanceId = processTasks.get(0).getProcessInstance().getId();
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
taskName = processTasks.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = taskModelService.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
String nextExcuteIds = workflowResultDtos.get(0).getNextExecutorRoleIds();
model.setProcessInstanceId(instanceId);
if (!org.springframework.util.ObjectUtils.isEmpty(model.getWorkflowRole())) {
model.setWorkflowRole(model.getWorkflowRole() + "," + nextExcuteIds);
} else {
model.setWorkflowRole(nextExcuteIds);
}
model.setStatus(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode())); //6611 对应数据字典 检验流程状态 待受理
model.setNextExecuteIds(nextExcuteIds);
model.setNextTaskId(nextTaskId);
model.setNextTaskName(taskName);
model.setNextExecuteUserIds(nextUserIds);
model.setStatus(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode())); //6611 对应数据字典 检验流程状态 待受理
} else if (model.getOperationType().equals("1")) {
model.setStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
}
......@@ -184,48 +193,39 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
// equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfos.add(equipInfo);
}
model.setEquList(model.getEquip().get(0).getOrDefault("EQU_LIST","").toString());
model.setSupervisoryCode(model.getEquip().get(0).getOrDefault("SUPERVISORY_CODE","").toString());
}
model.setCreateUserId(reginParams.getUserModel().getUserId());
model.setNumberOfEquip(equipInfos.size());
// endregion
if (null == model.getSequenceNbr()){
model = this.createWithModel(model);
}else {
model = this.updateWithModel(model);
}
String json = null;
try {
json = IOUtils.toString(bizTypeInfo.getInputStream(), java.lang.String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
List<Map> list = parseArray(json, Map.class);
String url = null;
for (Map map : list) {
if (map.get("type").equals(model.getBizType() )&& "look".equals(map.get("pageType"))){
url = map.get("url").toString();
}
}
// Map<String, Object> userOrgRoleMap = FeignUtil.remoteCall(() -> Privilege.userOrgRoleClient.getme());
// List<String> userOrgRoleList = (List<String>) userOrgRoleMap.get("roleId");
// String roleIds = String.join(",", userOrgRoleList);
String urlParams = null;
try {
model.setEquip(null);
urlParams = commonservice.toQueryParams(model);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (StringUtils.isNotBlank(model.getProcessInstanceId())){
commonservice.buildTaskModel(MapBuilder.<String, Object>create().put("instanceId", model.getProcessInstanceId()).put("startDate",new Date())
.put("agencyCode",reginParams.getUserModel().getAgencyCode()).put("userId",reginParams.getUserModel().getUserId()).put("startUser",reginParams.getUserModel().getUserId()).put("startUserId",reginParams.getUserModel().getUserId())
.put("taskStatus",FlowStatusEnum.TO_BE_PROCESSED.getCode()).put("taskStatusLabel",FlowStatusEnum.TO_BE_PROCESSED.getName()).put("taskName",taskName).put("taskType", model.getBizType()).put("taskTypeLabel", BizTypeEnum.getNameByCode(model.getBizType())).put("taskContent","")
.put("taskTitle",reginParams.getUserModel().getUserName()+"发起了"+taskName).put("taskDesc","").put("taskCode",model.getApplicationNo())
.put("extras",JSON.toJSONString(model)).put("createUserId",reginParams.getUserModel().getUserName()).put("startUserId",reginParams.getUserModel().getUserId())
.put("routePath",url.replace("{userId}",reginParams.getUserModel().getUserId()).replace("{roleIds}",model.getNextExecuteIds())+"&"+urlParams)
.build());
this.createdTaskModel(model);
}else {
TaskModelDto dto = new TaskModelDto();
TaskMessageDto ta = new TaskMessageDto();
ta.setInstanceId(model.getProcessInstanceId());
ta.setStatus(model.getStatus());
ta.setPromoter(model.getPromoter());
ta.setNextExecuteUserIds(model.getNextExecuteUserIds());
ta.setSequenceNbr(model.getSequenceNbr());
dto.setModel(ta);
//摘要 按原有规则组装
dto.setTaskContent("来自"+model.getEquList()+"【"+model.getSupervisoryCode()+"】的业务办理,【申请单号:"+model.getApplicationNo()+"】");
//申请单号
dto.setTaskCode(model.getApplicationNo());
//业务类型枚举code值
dto.setTaskType(BizTypeEnum.getNumByCode(model.getBizType()));
////业务主键
dto.setRelationId(model.getSequenceNbr()+"");
taskModelService.buildTaskModel(Arrays.asList(dto));
}
//保存报检装备监管码
......@@ -273,6 +273,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
equipInfo.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationEquipService.save(equipInfo);
}
model.setEquList(model.getEquip().get(0).getOrDefault("EQU_LIST","").toString());
model.setSupervisoryCode(model.getEquip().get(0).getOrDefault("SUPERVISORY_CODE","").toString());
}
// Map<String, Object> map = BeanUtil.beanToMap(model);
......@@ -291,58 +293,45 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
}
}
model.setStatus(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode())); //6611 对应数据字典 检验流程状态 待受理
execueFlow(MapBuilder.<String, Object>create().put("op", "提交").put("instanceId", model.getProcessInstanceId()).put("comments", "").build());
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(model.getProcessInstanceId());
String role = (String) nextNodeInfo.get("role");
String taskName = (String) nextNodeInfo.get("taskName");
model.setNextExecuteIds(role);
model.setPromoter(reginParams.getUserModel().getUserId());
ArrayList<String> roleList = new ArrayList<>();
String taskId = model.getNextTaskId();
//组装信息
TaskResultDTO task = new TaskResultDTO();
task.setResultCode("approvalStatus");
task.setTaskId(taskId);
task.setComment("");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", "提交");
task.setVariable(map);
//执行流程
task.setNextExecuteUserCompanyCode(model.getInspectionUnitCode());
ProcessTaskDTO processTaskDTO = cmWorkflowService.complete(taskId, task);
String taskCode = FlowStatusEnum.TO_SUBMITTED.getName();
String taskName1 = "";
String nextTaskId = "";
this.buildRoleList(Collections.singletonList(processTaskDTO), roleList, roleListAll);
List<WorkflowResultDto> workflowResultDtos = taskModelService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
if(processTaskDTO != null && processTaskDTO.getNextTask() != null && processTaskDTO.getNextTask().size() >0){
taskCode = processTaskDTO.getNextTask().get(0).getKey();
taskName1 = processTaskDTO.getNextTask().get(0).getName();
nextTaskId = processTaskDTO.getNextTask().get(0).getId();
}
model.setNextExecuteIds(String.join(",", roleList));
if (!org.springframework.util.ObjectUtils.isEmpty(model.getWorkflowRole())) {
model.setWorkflowRole(model.getWorkflowRole() + "," + role);
model.setWorkflowRole(model.getWorkflowRole() + "," + String.join(",", roleList));
} else {
model.setWorkflowRole(role);
model.setWorkflowRole(String.join(",", roleList));
}
model.setNextTaskId(nextTaskId);
model.setPromoter(RequestContext.getExeUserId());
model.setStatus(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode()));
model.setStatusName(FlowStatusEnum.TO_SUBMITTED.getName());
model.setNextTaskName(taskName1);
executeOneStep(model, taskName1, nextUserIds);
model.setNextExecuteIds(nextUserIds);
this.updateWithModel(model);
String json = null;
try {
json = IOUtils.toString(bizTypeInfo.getInputStream(), java.lang.String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
List<Map> list = parseArray(json, Map.class);
String url = null;
for (Map map : list) {
if (map.get("type").equals(model.getBizType() )&& "look".equals(map.get("pageType"))){
url = map.get("url").toString();
}
}
Map<String,Object> params = new HashMap<>();
params.put("relationId",model.getProcessInstanceId());
params.put("taskStatus",FlowStatusEnum.TO_BE_FINISHED.getCode());
params.put("taskStatusLabel",FlowStatusEnum.TO_BE_FINISHED.getName());
TaskV2Model taskV2Model = commonservice.updateTaskModel(params);
// Map<String, Object> userOrgRoleMap = FeignUtil.remoteCall(() -> Privilege.userOrgRoleClient.getme());
// List<String> userOrgRoleList = (List<String>) userOrgRoleMap.get("roleId");
// String roleIds = String.join(",", userOrgRoleList);
String urlParams = null;
try {
model.setEquip(null);
urlParams = commonservice.toQueryParams(model);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
commonservice.buildTaskModel(MapBuilder.<String, Object>create().put("instanceId", model.getProcessInstanceId()).put("startDate",new Date())
.put("agencyCode",reginParams.getUserModel().getAgencyCode()).put("userId",reginParams.getUserModel().getUserId()).put("startUser",reginParams.getUserModel().getUserId()).put("startUserId",reginParams.getUserModel().getUserId())
.put("taskStatus",FlowStatusEnum.TO_BE_PROCESSED.getCode()).put("taskStatusLabel",FlowStatusEnum.TO_BE_PROCESSED.getName()).put("taskName",taskName).put("taskType", model.getBizType()).put("taskTypeLabel", BizTypeEnum.getNameByCode(model.getBizType())).put("taskContent","")
.put("taskTitle",reginParams.getUserModel().getUserName()+"发起了"+taskName).put("taskDesc","").put("taskCode",model.getApplicationNo())
.put("extras",JSON.toJSONString(model)).put("createUserId",reginParams.getUserModel().getUserName()).put("startUserId",reginParams.getUserModel().getUserId())
.put("routePath",url.replace("{userId}",reginParams.getUserModel().getUserId()).replace("{roleIds}",model.getNextExecuteIds())+"&"+urlParams)
// .put("routePath",url.replace("{sequenceNbr}",String.valueOf(model.getSequenceNbr())).replace("{userId}",reginParams.getUserModel().getUserId()).replace("{roleIds}",roleIds))
.build());
}
return model;
}
......@@ -592,21 +581,45 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
log.warn("JyjcInspectionApplicationModel Not Found!sequenceNbr => " + sequenceNbr);
return false;
}
try {
// 撤回流程
JSONObject jsonObject = workflowHelper.rollBack(inspectionApplicationModel.getProcessInstanceId());
if (ObjectUtils.isEmpty(jsonObject) || 200 != jsonObject.getInteger("status")) {
log.error("撤回工作流错误, => {}", jsonObject);
return false;
}
updateModelByInstanceId(inspectionApplicationModel.getSequenceNbr(), inspectionApplicationModel.getProcessInstanceId(), MapBuilder.<String, Object>create().put("status", FlowStatusEnum.ROLLBACK.getCode() + "").build(), true);
commonservice.deleteTaskModel(inspectionApplicationModel.getProcessInstanceId());
return true;
} catch (Exception e) {
e.printStackTrace();
log.error("撤回工作流错误, => {}", inspectionApplicationModel.getProcessInstanceId(), e);
return false;
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
String[] taskName = new String[]{"流程结束"};
// FeignClientResult ajaxResult = Workflow.taskV2Client.rollBack(noticeDto.getInstanceId());
List<String> roleListNext = new ArrayList<>();
List<String> roleListAll = new ArrayList<>();
ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(inspectionApplicationModel.getProcessInstanceId());
String nextTaskId = processTaskDTO.getNextTask().get(0).getId();
this.buildRoleList(Collections.singletonList(processTaskDTO), roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = taskModelService.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
if (!org.springframework.util.ObjectUtils.isEmpty(inspectionApplicationModel.getWorkflowRole())) {
inspectionApplicationModel.setWorkflowRole(inspectionApplicationModel.getWorkflowRole() + "," + roleListAll);
} else {
inspectionApplicationModel.setWorkflowRole(inspectionApplicationModel.getWorkflowRole());
}
// 待调整
taskCode = processTaskDTO.getNextTask().get(0).getKey();
inspectionApplicationModel.setStatus(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()));
inspectionApplicationModel.setStatusName(FlowStatusEnum.ROLLBACK.getName());
inspectionApplicationModel.setPromoter("");
inspectionApplicationModel.setNextTaskId(nextTaskId);
inspectionApplicationModel.setNextExecuteUserIds(workflowResultDtos.get(0).getNextExecutorUserIds());
inspectionApplicationModel.setNextExecuteIds(String.join(",", roleListNext));
JyjcInspectionApplication jyjcInspectionApplication = new JyjcInspectionApplication();
BeanUtils.copyProperties(inspectionApplicationModel,jyjcInspectionApplication);
this.getBaseMapper().updateById(jyjcInspectionApplication);
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(inspectionApplicationModel));
jsonObject.put("nextTaskId", inspectionApplicationModel.getNextTaskId());
jsonObject.put("nextExecuteUser", inspectionApplicationModel.getNextExecuteIds());
jsonObject.put("taskType", BizTypeEnum.getNumByCode(inspectionApplicationModel.getBizType()));
jsonObject.put("flowStatus",FlowStatusEnum.ROLLBACK.getCode());
jsonObject.put("flowStatusLabel",FlowStatusEnum.ROLLBACK.getName());
taskModelService.rollbackTask(inspectionApplicationModel.getProcessInstanceId(), jsonObject);
return true;
}
public void updateModelByInstanceId(Long sequenceNbr, String instanceId, Map<String, Object> params, Boolean rollBack) {
......@@ -656,4 +669,96 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
this.updateById(entity);
}
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());
});
}
private void createdTaskModel(JyjcInspectionApplicationModel model){
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
TaskModelDto dto = new TaskModelDto();
TaskMessageDto ta = new TaskMessageDto();
ta.setInstanceId(model.getProcessInstanceId());
ta.setStatus(model.getStatus());
ta.setPromoter(model.getPromoter());
ta.setNextExecuteUserIds(model.getNextExecuteUserIds());
ta.setSequenceNbr(model.getSequenceNbr());
ta.setProcessKey(model.getProcessKey());
dto.setModel(ta);
dto.setFlowCreateDate(new Date());
dto.setTaskName(model.getNextTaskName());
dto.setFlowCode(model.getNextTaskId());
dto.setTaskContent("来自"+model.getEquList()+"【"+model.getSupervisoryCode()+"】的业务办理,【申请单号:"+model.getApplicationNo()+"】");
dto.setTaskCode(model.getApplicationNo());
dto.setTaskType(BizTypeEnum.getNumByCode(model.getBizType()));
dto.setTaskTypeLabel(BizTypeEnum.getNameByCode(model.getBizType()));
dto.setRelationId(model.getInstanceId());
dto.setExecuteUserIds(model.getNextExecuteUserIds());
dto.setTaskStatusLabel("未处理");
dto.setFlowStatus(Integer.valueOf(model.getStatus()));
dto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
dto.setStartUserId(RequestContext.getExeUserId());
dto.setStartUser(model.getCreateUserId());
dto.setStartUserCompanyName(reginParams.getCompany().getCompanyName());
dto.setStartDate(new Date());
dto.setNextExecuteUser(model.getNextExecuteIds());
taskModelService.buildTaskModel(Arrays.asList(dto));
}
private void executeOneStep(JyjcInspectionApplicationModel model, String taskName, String nextUserIds) {
// 先更新之前的待办
TaskV2Model taskV2Model = updateTaskModel(model);
taskV2Model.setTaskDesc("");
taskV2Model.setTaskName(taskName);
taskV2Model.setTaskCode(model.getApplicationNo());
taskV2Model.setExecuteUserIds(nextUserIds);
taskV2Model.setRelationId(model.getProcessInstanceId());
taskV2Model.setTaskStatus(Integer.valueOf(model.getStatus()));
taskV2Model.setTaskStatusLabel(model.getStatusName());
taskV2Model.setFlowStatus(Integer.valueOf(model.getStatus()));
taskV2Model.setFlowStatusLabel(model.getStatusName());
// taskV2Model.setTaskType(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getCode());
// taskV2Model.setStartUser(jgChangeRegistrationName.getCreateUserName());
// taskV2Model.setTaskTypeLabel(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
// taskV2Model.setStartDate(jgChangeRegistrationName.getCreateDate());
// taskV2Model.setStartUserId(jgChangeRegistrationName.getCreateUserId());
// taskV2Model.setStartUserCompanyName(jgChangeRegistrationName.getUseUnitName());
taskV2Model.setExecuteUserIds(nextUserIds);
TaskModelDto modelDto = new TaskModelDto();
BeanUtil.copyProperties(taskV2Model, modelDto);
modelDto.setNextExecuteUser(model.getNextExecuteIds());
if (model.getStatus().equals(FlowStatusEnum.REJECTED.getCode())){
modelDto.setPageType("edit");
}
TaskMessageDto obj = new TaskMessageDto();
obj.setInstanceId(model.getProcessInstanceId());
obj.setStatus(model.getStatus());
obj.setPromoter(model.getPromoter());
obj.setNextExecuteUserIds(model.getNextExecuteUserIds());
obj.setSequenceNbr(model.getSequenceNbr());
modelDto.setModel(obj);
// 再插入新代办、数据待定
taskModelService.buildTaskModel(Collections.singletonList(modelDto));
}
private TaskV2Model updateTaskModel(JyjcInspectionApplicationModel model) {
Map<String, Object> params = new HashMap<>();
params.put("relationId",model.getInstanceId());
params.put("taskStatus", model.getStatus());
params.put("taskStatusLabel", model.getStatusName());
params.put("flowStatus",model.getStatus());
params.put("flowStatusLabel",model.getStatusName());
params.put("model",model);
return taskModelService.updateTaskModel(params);
}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
......@@ -43,6 +44,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ObjectUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
......@@ -124,8 +126,20 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
isUpdate = true;
}
}
List<String> codes = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1).getResult();
model.setApplicationSeq(codes.get(0));
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
model.setPromoter(reginParams.getUserModel().getUserId());
if (!isUpdate) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCodeName(companyBo.getCompanyName());
model.setCreateUserId(reginParams.getUserModel().getUserId());
this.createWithModel(model);
}
if (enableStartFlow) {
model.setStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
model.setApplyTime(new Date());
if (StringUtils.isBlank(instanceId)) {
// 未开启过工作流则进行开启 startProcess
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
......@@ -146,65 +160,63 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
model.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
model.setNextTaskId(workflowResultDto.getNextTaskId());
model.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
// 创建代办
buildTask(model, workflowResultDto);
}
} else {
// 存在流程,执行
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(model.getNextTaskId());
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", "提交");
dto.setVariable(map);
ProcessTaskDTO complete = cmWorkflowService.complete(model.getNextTaskId(), dto);
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResult = resultDto.get(0);
model.setWorkflowProstanceId(workflowResult.getInstanceId());
model.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
model.setNextTaskId(workflowResult.getNextTaskId());
model.setNextExecuteUserIds(workflowResult.getNextExecutorUserIds());
}
map.put("sequenceNbr",model.getSequenceNbr());
map.put("op", "1");
execueFlow(map);
// TaskResultDTO dto = new TaskResultDTO();
// dto.setResultCode("approvalStatus");
// dto.setTaskId(model.getNextTaskId());
// HashMap<String, Object> map = new HashMap<>();
// map.put("approvalStatus", "提交");
// dto.setVariable(map);
// ProcessTaskDTO complete = cmWorkflowService.complete(model.getNextTaskId(), dto);
// ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
// processTaskDTOS.add(complete);
// List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
// if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
// WorkflowResultDto workflowResult = resultDto.get(0);
// model.setWorkflowProstanceId(workflowResult.getInstanceId());
// model.setNextExecuteIds(workflowResult.getNextExecutorRoleIds());
// model.setNextTaskId(workflowResult.getNextTaskId());
// model.setNextExecuteUserIds(workflowResult.getNextExecutorUserIds());
// model.setPromoter(reginParams.getUserModel().getUserId());
// // 更新代办
// }
}
model.setStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode() + "");
model.setApplyTime(new Date());
} else {
// 只有第一次改为待提交
if (entity == null) {
model.setStatus(FlowStatusEnum.TO_BE_SUBMITTED.getCode() + "");
// 暂存生成代办逻辑
ArrayList<TaskModelDto> list = new ArrayList<>();
TaskModelDto dto = new TaskModelDto();
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(model, taskMessageDto);
// 数据参数
dto.setModel(taskMessageDto);
// 摘要
dto.setTaskContent(String.format("检验检测业务开通办理,【申请单号:%s】", model.getApplicationSeq()));
// 申请单号
dto.setTaskCode(model.getApplicationSeq());
// 业务类型
dto.setTaskType("114");
// 业务主键
dto.setRelationId(String.valueOf(model.getSequenceNbr()));
dto.setNextExecuteUser("");
dto.setTaskName("");
list.add(dto);
commonServiceImpl.buildTaskModel(list);
}
}
if (!isUpdate) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCodeName(companyBo.getCompanyName());
List<String> codes = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1).getResult();
model.setApplicationSeq(codes.get(0));
model.setCreateUserId(reginParams.getUserModel().getUserId());
model = this.createWithModel(model);
// 暂存生成代办逻辑
ArrayList<TaskModelDto> list = new ArrayList<>();
TaskModelDto dto = new TaskModelDto();
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(model, taskMessageDto);
// 数据参数
dto.setModel(taskMessageDto);
// 摘要
dto.setTaskContent(String.format("检验检测业务开通办理,【申请单号:%s】", model.getApplicationSeq()));
// 申请单号
dto.setTaskCode(model.getApplicationSeq());
// 业务类型
dto.setTaskType(String.valueOf(BizTypeEnum.BUSINESS_OPEN.getCode()));
// 业务主键
dto.setRelationId(String.valueOf(model.getSequenceNbr()));
dto.setNextExecuteUser("");
list.add(dto);
commonServiceImpl.buildTaskModel(list);
return model;
} else {
return this.updateWithModel(model);
}
return this.updateWithModel(model);
}
......@@ -504,89 +516,44 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
* 接收/驳回通知检验单
*/
public void execueFlow(Map<String, Object> params) {
String role = "";
String taskName = "流程结束";
Long sequenceNbr = Long.parseLong(params.get("sequenceNbr") + "");
String op = params.get("op").toString();
String instanceId = params.get("instanceId").toString();
String comments = params.get("comments").toString();
try {
AjaxResult ajaxResult = Workflow.taskClient.getTaskNoAuth(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
if (!ValidationUtil.isEmpty(dataObject)) {
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
HashMap<String, Object> varibalble = new HashMap<>();
varibalble.put("approvalStatus", op);
dto.setVariable(varibalble);
dto.setComment(comments);
//执行流程
Workflow.taskClient.completeByTask(taskId, dto);
// 查询下节点任务
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(instanceId);
if ("0".equals(op) && ObjectUtils.isNotEmpty(params.get("originalDataId"))) {
String originalDataId = params.get("originalDataId").toString();
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationMapper.selectById(originalDataId);
List<String> detectionRegion = (List<String>) params.get("detectionRegion");
// String detectionRegionName = params.get("detectionRegionName").toString();
if(!detectionRegion.isEmpty()){
jyjcOpeningApplication.setDetectionRegion(detectionRegion);
}
// jyjcOpeningApplication.setDetectionRegionName(detectionRegionName);
// if(ObjectUtils.isEmpty(jyjcOpeningApplication.getAcceptDate())){
// jyjcOpeningApplication.setAcceptDate(new Date());
// }
jyjcOpeningApplicationMapper.updateById(jyjcOpeningApplication);
}
role = (String) nextNodeInfo.get("role");
taskName = (String) nextNodeInfo.get("taskName");
}
String status;
JyjcOpeningApplication data = jyjcOpeningApplicationMapper.selectById(sequenceNbr);
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(data.getNextTaskId());
dto.setComment(params.get("comments").toString());
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
dto.setVariable(map);
ProcessTaskDTO complete = cmWorkflowService.complete(data.getNextTaskId(), dto);
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
if (!org.springframework.util.ObjectUtils.isEmpty(resultDto) && !org.springframework.util.ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
if ("1".equals(op)) {
// 如果是回退, 则业务状态改为驳回
status = FlowStatusEnum.REJECTED.getCode() + "";
params.put("relationId",instanceId);
params.put("taskStatus",FlowStatusEnum.TO_BE_FINISHED.getCode());
params.put("taskStatusLabel",FlowStatusEnum.TO_BE_FINISHED.getName());
TaskV2Model taskV2Model = commonservice.updateTaskModel(params);
String json = null;
try {
json = IOUtils.toString(bizTypeInfo.getInputStream(), java.lang.String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
List<Map> list = parseArray(json, Map.class);
String url = null;
for (Map map : list) {
if (map.get("type").equals("opening" )&& "edit".equals(map.get("pageType"))){
url = map.get("url").toString();
}
}
taskV2Model.setRoutePath(url);
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(instanceId);
String roles = (String) nextNodeInfo.get("role");
taskV2Model.setExecuteUserIds(roles);
commonservice.buildTaskModel(BeanUtil.beanToMap(taskV2Model));
// 驳回
data.setStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
data.setPromoter("");
// 更新代办
updateTask(data, workflowResultDto);
} else {
if ("流程结束".equals(taskName)) {
status = FlowStatusEnum.TO_BE_FINISHED.getCode() + "";
params.put("taskStatus",FlowStatusEnum.TO_BE_FINISHED.getCode());
params.put("taskStatusLabel",FlowStatusEnum.TO_BE_FINISHED.getName());
TaskV2Model taskV2Model = commonservice.updateTaskModel(params);
} else {
status = FlowStatusEnum.TO_BE_PROCESSED.getCode() + "";
}
// 流程结束
data.setStatus(String.valueOf(FlowStatusEnum.TO_BE_FINISHED.getCode()));
// 更新代办
HashMap<String, Object> taskParams = new HashMap<>();
taskParams.put("relationId", data.getWorkflowProstanceId());
taskParams.put("flowStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
taskParams.put("flowStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
taskParams.put("taskStatus", FlowStatusEnum.TO_BE_FINISHED.getCode());
taskParams.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
taskParams.put("model", data);
commonServiceImpl.updateTaskModel(taskParams);
}
Boolean rollBack = "1".equals(op) ? true : false;
updateModelByInstanceId(sequenceNbr, instanceId, status, role, rollBack);
} catch (Exception e) {
e.printStackTrace();
log.error("execueFlow error:{}", e);
}
jyjcOpeningApplicationMapper.updateById(data);
}
......@@ -594,24 +561,14 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
/**
* 撤回流程办理单
*/
public JSONObject stopFlow(String sequenceNbr) {
JSONObject jsonObject= new JSONObject();
public JyjcOpeningApplication stopFlow(String sequenceNbr) {
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationMapper.selectById(sequenceNbr);
try {
//撤回流程
jsonObject = workflowFeignClient.rollBack(jyjcOpeningApplication.getWorkflowProstanceId());
if (ObjectUtils.isEmpty(jsonObject)) {
}
Map<String, Object> nextNodeInfo = workflowHelper.getNextWorkflowNode(jyjcOpeningApplication.getWorkflowProstanceId());
String role = (String) nextNodeInfo.get("role");
Long id = Long.parseLong(sequenceNbr);
commonservice.deleteTaskModel(jyjcOpeningApplication.getWorkflowProstanceId());
updateModelByInstanceId(id, jyjcOpeningApplication.getWorkflowProstanceId(), FlowStatusEnum.ROLLBACK.getCode() + "", role, true);
} catch (Exception e) {
throw new BadRequest("撤回流程失败,请联系管理员!");
}
return jsonObject;
//撤回流程
ProcessTaskDTO processTaskDTO = cmWorkflowService.rollBack(jyjcOpeningApplication.getWorkflowProstanceId());
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(processTaskDTO);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
return jyjcOpeningApplication;
}
private String getWorkflowStatus(JSONObject dataObject) {
......@@ -672,4 +629,61 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return jyjcOpeningApplicationMapper.selectOverdueData();
}
public void buildTask(JyjcOpeningApplicationModel model, WorkflowResultDto workflowResultDto) {
ReginParams reginParams = commonserviceImpl.getReginParamsOfCurrentUser();
// 代办消息
ArrayList<TaskModelDto> list = new ArrayList<>();
TaskModelDto dto = new TaskModelDto();
dto.setTaskType("114");
dto.setTaskTypeLabel(BizTypeEnum.BUSINESS_OPEN.getName());
dto.setFlowCreateDate(model.getRecDate());
dto.setTaskName(workflowResultDto.getNextTaskName());
dto.setTaskCode(workflowResultDto.getNextTaskCode());
dto.setTaskContent(String.format("检验检测业务开通办理,【申请单号:%s】", model.getApplicationSeq()));
dto.setRelationId(workflowResultDto.getInstanceId());
dto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
dto.setTaskStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
dto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
dto.setFlowStatus(FlowStatusEnum.TO_BE_PROCESSED.getCode());
dto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
dto.setStartUserId(reginParams.getUserModel().getUserId());
dto.setStartUser(reginParams.getUserModel().getRealName());
dto.setStartUserCompanyName(reginParams.getCompany().getCompanyCode());
dto.setStartDate(new Date());
model.setWorkflowProstanceId(workflowResultDto.getInstanceId());
model.setNextExecuteIds(workflowResultDto.getNextExecutorRoleIds());
dto.setModel(model);
dto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
list.add(dto);
commonServiceImpl.buildTaskModel(list);
}
public void updateTask(JyjcOpeningApplication model, WorkflowResultDto workflowResultDto) {
// 更新代办状态
HashMap<String, Object> params = new HashMap<>();
params.put("relationId", model.getWorkflowProstanceId());
params.put("flowStatus", model.getStatus());
params.put("flowStatusLabel", model.getStatus());
params.put("taskStatus", model.getStatus());
params.put("taskStatusLabel", model.getStatus());
TaskV2Model taskV2Model = commonServiceImpl.updateTaskModel(params);
// 创建新的代办
if (!ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
taskModelDto.setModel(model);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
commonServiceImpl.buildTaskModel(Collections.singletonList(taskModelDto));
} else {
JyjcOpeningApplicationModel applicationModel = new JyjcOpeningApplicationModel();
BeanUtil.copyProperties(model, applicationModel);
buildTask(applicationModel, workflowResultDto);
}
}
}
\ No newline at end of file
[
[ {
"type":"supervise",
"pageType": "draft",
"url": "/mixuap?appId=1742358052905971713&id=1734576595978448898&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"firstinspect",
"pageType": "draft",
"url": "/mixuap?appId=1742358052905971713&id=1736728282272919554&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"detection",
"pageType": "draft",
"url": "/mixuap?appId=1742358052905971713&id=1736733779709423618&roleIds={roleIds}&userId={userId}&pageType=edit"
},
{
"type":"supervise",
"pageType": "look",
......@@ -24,15 +36,15 @@
"pageType": "edit",
"url": "/mixuap?appId=1742358052905971713&id=1736733779709423618&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"businessOpen",
"type":"114",
"pageType": "draft",
"url": "/mixuap?appId=1742358052905971713&id=1734569644833927170&roleIds={roleIds}&userId={userId}&pageType=edit"
"url": "/mixuap?appId=1742358052905971713&id=1737319295022559234&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"businessOpen",
"type":"114",
"pageType": "look",
"url": "/mixuap?appId=1742358052905971713&id=1735201757841092609&roleIds={roleIds}&userId={userId}&pageType=edit"
}, {
"type":"businessOpen",
"type":"114",
"pageType": "edit",
"url": "/mixuap?appId=1742358052905971713&id=1735201757841092609&roleIds={roleIds}&userId={userId}&pageType=edit"
}
......
......@@ -51,4 +51,6 @@ public interface IGenerateCodeService {
* @return 7位监管编码生成
*/
String createSupervisoryCode(String key);
String initCode();
}
......@@ -5,10 +5,7 @@ import com.yeejoin.amos.boot.module.ymt.api.service.IGenerateCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
......@@ -66,4 +63,14 @@ public class GenerateCodeController extends BaseController {
public ResponseModel<String> createUseRegistrationCode(@RequestParam("key") String key) {
return ResponseHelper.buildResponse(generateCodeService.createUseRegistrationCode(key));
}
/**
* 初始化96333和监管码到Redis
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/init-code")
@ApiOperation(httpMethod = "GET", value = "初始化96333和监管码到Redis", notes = "初始化96333和监管码到Redis")
public ResponseModel<String> initCode() {
return ResponseHelper.buildResponse(generateCodeService.initCode());
}
}
......@@ -3,9 +3,11 @@ package com.yeejoin.amos.boot.module.ymt.biz.service.impl;
import com.yeejoin.amos.boot.module.ymt.api.common.DateUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentCategoryEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.service.IGenerateCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
......@@ -33,12 +35,15 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
private static final String SEQUENCE_TYPE = "%07d";
private static final long LOCK_EXPIRATION_SECONDS = 60;
private final RedisTemplate<String, String> redisTemplate;
private final StringRedisTemplate stringRedisTemplate;
private final CategoryOtherInfoMapper categoryOtherInfoMapper;
private String rulePrefix = "";
public GenerateCodeServiceImpl(RedisTemplate<String, String> redisTemplate) {
public GenerateCodeServiceImpl(RedisTemplate<String, String> redisTemplate, StringRedisTemplate stringRedisTemplate, CategoryOtherInfoMapper categoryOtherInfoMapper) {
this.redisTemplate = redisTemplate;
this.stringRedisTemplate = stringRedisTemplate;
this.categoryOtherInfoMapper = categoryOtherInfoMapper;
}
/**
* 生成申请单编号(13位,GZ20231214000)
*
......@@ -93,6 +98,15 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
return (key.length() == 5) ? generateSupervisorySequence(key) : "生成码规则不对!";
}
@Override
public String initCode() {
categoryOtherInfoMapper.selectSupervisorCodeMaxValue().forEach(vo ->
stringRedisTemplate.opsForValue().set(vo.getName(), String.valueOf(vo.getValue())));
categoryOtherInfoMapper.selectElevatorCodeMaxValue().forEach(vo ->
stringRedisTemplate.opsForValue().set(vo.getName(), String.valueOf(vo.getValue())));
return "ok";
}
private String generateSupervisorySequence(String sequenceKey) {
// 使用分布式锁,确保在并发情况下只有一个线程能够生成顺序码
Boolean lockAcquired = obtainLock(GenerateCodeServiceImpl.LOCK_KEY_SUPERVISORY);
......@@ -102,7 +116,7 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
String currentSequenceStr = valueOps.get(sequenceKey);
// 如果为空,则初始化为0
Long currentSequence = (currentSequenceStr != null) ? Long.parseLong(currentSequenceStr) : 0L;
Long currentSequence = (currentSequenceStr != null) ? Long.parseLong(currentSequenceStr) : this.initRedis(sequenceKey);
log.info("===================>获取《{}》当前顺序码:{}<===================", sequenceKey, currentSequenceStr);
currentSequence++;
......@@ -121,6 +135,18 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
}
/**
* 监管码为空的话,初始化Redis
* @param sequenceKey key
* @return 顺序码
*/
private Long initRedis(String sequenceKey) {
categoryOtherInfoMapper.selectSupervisorCodeMaxValue().forEach(vo ->
stringRedisTemplate.opsForValue().set(vo.getName(), String.valueOf(vo.getValue())));
return Long.parseLong(Objects.requireNonNull(redisTemplate.opsForValue().get(sequenceKey)));
}
/**
* 校验枚举合法性
*
* @param value value
......
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