Commit 7c744893 authored by 刘林's avatar 刘林

fix(jg):证流水记录表

parent f4647ffa
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2024-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JgCertificateChangeRecordDto", description="")
public class JgCertificateChangeRecordDto extends BaseModel {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "申请编号")
private String applyNo;
@ApiModelProperty(value = "接收机构")
private String receiveOrgName;
@ApiModelProperty(value = "办理日期")
private Date auditPassDate;
@ApiModelProperty(value = "登记类别")
private String regType;
@ApiModelProperty(value = "申请日期")
private Date regDate;
@ApiModelProperty(value = "变更内容")
private String changeContent;
@ApiModelProperty(value = "创建人ID")
private String createUserId;
@ApiModelProperty(value = "创建时间")
private Date createDate;
@ApiModelProperty(value = "使用登记编号")
private String useRegistrationCode;
@ApiModelProperty(value = "接收机构公司代码")
private String receiveCompanyCode;
@ApiModelProperty(value = "登记证书唯一码")
private String certificateNo;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
......@@ -17,7 +16,7 @@ import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JgUseRegistrationManageDto", description="")
public class JgUseRegistrationManageDto extends BaseModel {
public class JgUseRegistrationManageDto extends BaseDto {
private static final long serialVersionUID = 1L;
......
package com.yeejoin.amos.boot.module.jg.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2024-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_jg_certificate_change_record")
public class JgCertificateChangeRecord extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 申请编号
*/
@TableField("apply_no")
private String applyNo;
/**
* 接收机构
*/
@TableField("receive_org_name")
private String receiveOrgName;
/**
* 办理日期
*/
@TableField("audit_pass_date")
private Date auditPassDate;
/**
* 登记类别
*/
@TableField("reg_type")
private String regType;
/**
* 申请日期
*/
@TableField("reg_date")
private Date regDate;
/**
* 变更内容
*/
@TableField("change_content")
private String changeContent;
/**
* 创建人ID
*/
@TableField("create_user_id")
private String createUserId;
/**
* 创建时间
*/
@TableField("create_date")
private Date createDate;
/**
* 使用登记编号
*/
@TableField("use_registration_code")
private String useRegistrationCode;
/**
* 接收机构公司代码
*/
@TableField("receive_company_code")
private String receiveCompanyCode;
/**
* 登记证书唯一码
*/
@TableField("certificate_no")
private String certificateNo;
}
package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.yeejoin.amos.boot.module.jg.api.entity.JgCertificateChangeRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper 接口
*
* @author system_generator
* @date 2024-07-03
*/
public interface JgCertificateChangeRecordMapper extends BaseMapper<JgCertificateChangeRecord> {
}
package com.yeejoin.amos.boot.module.jg.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2024-07-03
*/
public interface IJgCertificateChangeRecordService {}
......@@ -119,4 +119,14 @@ public interface WorkFlowFeignService {
@DeleteMapping(value = "/v2/task/stopProcess/{processInstanceId}")
FeignClientResult<ProcessInstanceDTO> stopProcess(@PathVariable("processInstanceId") String processInstanceId, @RequestParam(required = false, value = "stopReason") String stopReason) throws Exception;
/**
* 处理审批错误历史数据
*
* @param processInstanceId processInstanceId
* @return ProcessTaskDTO
*/
@RequestMapping(value = "/v2/task/error/history/data/{processInstanceId}", method = RequestMethod.GET)
FeignClientResult<ProcessTaskDTO> handleErrorForm(@PathVariable("processInstanceId") String processInstanceId,
@RequestParam(value = "receiveCompanyCode") String receiveCompanyCode);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jg.api.mapper.JgCertificateChangeRecordMapper">
</mapper>
package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.JgCertificateChangeRecordDto;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgCertificateChangeRecordServiceImpl;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import java.util.List;
/**
*
* @author system_generator
* @date 2024-07-03
*/
@RestController
@Api(tags = "Api")
@RequestMapping(value = "/jg-certificate-change-record")
public class JgCertificateChangeRecordController extends BaseController {
@Autowired
JgCertificateChangeRecordServiceImpl jgCertificateChangeRecordServiceImpl;
/**
* 新增
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JgCertificateChangeRecordDto> save(@RequestBody JgCertificateChangeRecordDto dto) {
dto = jgCertificateChangeRecordServiceImpl.createWithModel(dto);
return ResponseHelper.buildResponse(dto);
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JgCertificateChangeRecordDto> updateBySequenceNbrJgCertificateChangeRecord(@RequestBody JgCertificateChangeRecordDto dto,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
dto.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jgCertificateChangeRecordServiceImpl.updateWithModel(dto));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(jgCertificateChangeRecordServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<JgCertificateChangeRecordDto> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jgCertificateChangeRecordServiceImpl.queryBySeq(sequenceNbr));
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "分页查询", notes = "分页查询")
public ResponseModel<Page<JgCertificateChangeRecordDto>> queryForPage(@RequestParam(value = "current") int current, @RequestParam
(value = "size") int size) {
Page<JgCertificateChangeRecordDto> page = new Page<JgCertificateChangeRecordDto>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jgCertificateChangeRecordServiceImpl.queryForJgCertificateChangeRecordPage(page));
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<JgCertificateChangeRecordDto>> selectForList() {
return ResponseHelper.buildResponse(jgCertificateChangeRecordServiceImpl.queryForJgCertificateChangeRecordList());
}
}
......@@ -247,4 +247,20 @@ public class JgUseRegistrationController extends BaseController {
jgUseRegistrationServiceImpl.correctWrongData(applayNoList);
return ResponseHelper.buildResponse("ok");
}
/**
* 使用登记流程错误数据处理
* @param sequenceNbr sequenceNbr
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/yunWei/handleErrorForm")
@ApiOperation(httpMethod = "POST", value = "使用登记流程错误数据处理", notes = "使用登记流程错误数据处理")
public ResponseModel<Object> handleErrorForm(@RequestParam("sequenceNbr") Long sequenceNbr,
@RequestParam("nextTaskId") String nextTaskId,
@RequestParam("instanceId") String instanceId
) {
jgUseRegistrationServiceImpl.handleErrorForm(sequenceNbr, instanceId, nextTaskId);
return ResponseHelper.buildResponse("ok");
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.JgCertificateChangeRecordDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgCertificateChangeRecord;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgCertificateChangeRecordMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgCertificateChangeRecordService;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 服务实现类
*
* @author system_generator
* @date 2024-07-03
*/
@Service
public class JgCertificateChangeRecordServiceImpl extends BaseService<JgCertificateChangeRecordDto,JgCertificateChangeRecord,JgCertificateChangeRecordMapper> implements IJgCertificateChangeRecordService {
/**
* 分页查询
*/
public Page<JgCertificateChangeRecordDto> queryForJgCertificateChangeRecordPage(Page<JgCertificateChangeRecordDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<JgCertificateChangeRecordDto> queryForJgCertificateChangeRecordList() {
return this.queryForList("" , false);
}
}
\ No newline at end of file
......@@ -107,8 +107,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private static final String DEFINITION_KEY = "useRegistration";
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废");
@Autowired
WorkFlowFeignService workFlowFeginService;
@Autowired
RedisUtils redisUtils;
@Autowired
TzsServiceFeignClient tzsServiceFeignClient;
......@@ -138,6 +136,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
@Autowired
CodeUtil codeUtil;
@Autowired
WorkFlowFeignService workFlowFeignService;
@Autowired
private IdxBizJgUseInfoMapper useInfoMapper;
@Autowired
private InspectionDetectionInfoMapper inspectionDetectionInfoMapper;
......@@ -215,6 +215,25 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
}
/**
* 将 年月日 日期转为 年月 格式返回
*
* @param originalDateStr
* @return
*/
private static String timeToMonths(String originalDateStr) {
if (StringUtils.isEmpty(originalDateStr)) {
return "";
}
// 定义输入的日期格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 将字符串解析为LocalDate对象
LocalDate date = LocalDate.parse(originalDateStr, inputFormatter);
// 定义输出的日期格式
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM", Locale.CHINA);
// 将LocalDate对象格式化为所需的字符串
return date.format(outputFormatter);
}
public Page<Map<String, Object>> getList(JgUseRegistrationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds) {
SortVo sortMap = commonServiceImpl.sortFieldConversion(sort);
......@@ -1650,26 +1669,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
/**
* 将 年月日 日期转为 年月 格式返回
*
* @param originalDateStr
* @return
*/
private static String timeToMonths(String originalDateStr) {
if (StringUtils.isEmpty(originalDateStr)){
return "";
}
// 定义输入的日期格式
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 将字符串解析为LocalDate对象
LocalDate date = LocalDate.parse(originalDateStr, inputFormatter);
// 定义输出的日期格式
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM", Locale.CHINA);
// 将LocalDate对象格式化为所需的字符串
return date.format(outputFormatter);
}
/**
* 气瓶数据
*
* @return
......@@ -2067,4 +2066,76 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
});
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public void handleErrorForm(Long sequenceNbr, String instanceId, String nextTaskId) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
}
// 流程执行时,状态及权限校验
commonService.checkForExecuteFlow(nextTaskId, instanceId);
JgUseRegistration jgUseRegistration = this.getBaseMapper().selectById(sequenceNbr);
ProcessTaskDTO complete = workFlowFeignService.handleErrorForm(jgUseRegistration.getInstanceId(), jgUseRegistration.getReceiveCompanyCode()).getResult();
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
String role = workflowResultDto.getNextExecutorRoleIds();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
if (!ObjectUtils.isEmpty(workflowResultDto.getNextTaskCode())) {
taskCode = workflowResultDto.getNextTaskCode();
}
jgUseRegistration.setNextTaskId(workflowResultDto.getNextTaskId());
jgUseRegistration.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgUseRegistration.setNextExecuteIds(role);
jgUseRegistration.setInstanceStatus(
Optional.ofNullable(jgUseRegistration.getInstanceStatus())
.map(status -> String.join(",", status, role))
.orElse(role)
);
jgUseRegistration.setStatus(Objects.requireNonNull(WorkFlowStatusEnum.getMessage(taskCode)).getPass());
jgUseRegistration.setPromoter(workflowResultDto.getStartUserId());
// 更新代办状态
HashMap<String, Object> params = new HashMap<>();
params.put("relationId", jgUseRegistration.getInstanceId());
params.put("flowStatus", commonServiceImpl.getDictionaryCodeByName(jgUseRegistration.getStatus()));
params.put("flowStatusLabel", jgUseRegistration.getStatus());
params.put("taskStatus", commonServiceImpl.getDictionaryCodeByName(jgUseRegistration.getStatus()));
params.put("taskStatusLabel", jgUseRegistration.getStatus());
TaskV2Model taskV2Model = commonServiceImpl.updateTaskModel(params);
// 创建新的代办
if (!ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(jgUseRegistration, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setStartUserId(workflowResultDto.getExecutorId());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
commonServiceImpl.buildTaskModel(Collections.singletonList(taskModelDto));
} else {
workflowResultDto.setInstanceId(jgUseRegistration.getInstanceId());
buildTask(jgUseRegistration, workflowResultDto);
}
}
this.getBaseMapper().updateById(jgUseRegistration);
this.clearDataForCheckEquipRepeatUsed(jgUseRegistration);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
}
\ 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