yang_shj
1 month ago
33 changed files with 1148 additions and 21 deletions
@ -0,0 +1,20 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.constants; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
public interface AccessTicketConstants { |
||||
|
||||
// 检修工作票流程key
|
||||
String ACCESS_TICKET_PROCESS_KEY = "access_ticket"; |
||||
|
||||
// 检修工作票流程表名
|
||||
String ACCESS_TICKET_TABLE = "access_work_ticket"; |
||||
|
||||
|
||||
// 检修完成
|
||||
String ACCESS_COMPLETE = "complete"; |
||||
|
||||
// 检修延期
|
||||
String ACCESS_EXTENSION = "extension"; |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.request; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketDetailReqDTO implements Serializable { |
||||
|
||||
@ApiModelProperty(value = "主键id") |
||||
private String processInstanceId; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.request; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketPageReqDTO implements Serializable { |
||||
|
||||
@ApiModelProperty("开始时间 : YYYY-MM-DD HH:MM:SS") |
||||
private String startTime; |
||||
|
||||
@ApiModelProperty("结束时间 : YYYY-MM-DD HH:MM:SS") |
||||
private String endTime; |
||||
} |
@ -0,0 +1,32 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.request; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketStartProcessReqDTO implements Serializable { |
||||
|
||||
@ApiModelProperty("是否外部单位 : 0-非外部单位 1-外部单位") |
||||
private Integer isExternal; |
||||
|
||||
@ApiModelProperty("是否紧急 : 0-正常 1-紧急") |
||||
private Integer isEmergency; |
||||
|
||||
@ApiModelProperty("设备编号") |
||||
private String deviceCode; |
||||
|
||||
@ApiModelProperty("故障描述") |
||||
private String faultDescribe; |
||||
|
||||
@ApiModelProperty("图片") |
||||
private List<String> imgs; |
||||
|
||||
@ApiModelProperty("视频") |
||||
private List<String> videos; |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.response; |
||||
|
||||
import com.hnac.hzims.ticket.accessTicket.entity.AccessTicketEntity; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@Data |
||||
public class AccessTicketDetailRspDTO extends AccessTicketEntity { |
||||
|
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.response; |
||||
|
||||
import com.hnac.hzims.ticket.accessTicket.entity.AccessTicketEntity; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@EqualsAndHashCode(callSuper = true) |
||||
@Data |
||||
public class AccessTicketPageRspDTO extends AccessTicketEntity { |
||||
|
||||
} |
@ -0,0 +1,13 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.dto.response; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketStartProcessRspDTO implements Serializable { |
||||
|
||||
} |
@ -0,0 +1,118 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
import org.springblade.core.tenant.mp.TenantEntity; |
||||
|
||||
import java.io.Serializable; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
@ApiModel(value = "检修工作票",description = "检修工作票") |
||||
@TableName("access_work_ticket") |
||||
@EqualsAndHashCode(callSuper = false) |
||||
public class AccessTicketEntity extends TenantEntity implements Serializable { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
@ApiModelProperty("是否外部单位 : 0-非外部单位 1-外部单位") |
||||
private Integer isExternal; |
||||
|
||||
@ApiModelProperty("是否紧急 : 0-正常 1-紧急") |
||||
private Integer isEmergency; |
||||
|
||||
@ApiModelProperty("检修编号") |
||||
private String code; |
||||
|
||||
@ApiModelProperty("设备编号") |
||||
private String deviceCode; |
||||
|
||||
@ApiModelProperty("设备名称") |
||||
private String deviceName; |
||||
|
||||
@ApiModelProperty("设备地址") |
||||
private String deviceAddress; |
||||
|
||||
@ApiModelProperty("故障描述") |
||||
private String faultDescribe; |
||||
|
||||
@ApiModelProperty("检修内容") |
||||
private String accessContent; |
||||
|
||||
@ApiModelProperty("质量标准") |
||||
private String qualityStandard; |
||||
|
||||
@ApiModelProperty("危险作业类别: 存储作业类别字典,以逗号分隔") |
||||
private String dangerous; |
||||
|
||||
@ApiModelProperty("计划开始时间") |
||||
private Date planStartTime; |
||||
|
||||
@ApiModelProperty("计划结束时间") |
||||
private Date planEndTime; |
||||
|
||||
@ApiModelProperty("检修安全措施") |
||||
private String measures; |
||||
|
||||
@ApiModelProperty("检修安全措施确认人") |
||||
private String measuresConfirmPersonnel; |
||||
|
||||
@ApiModelProperty("危险因素") |
||||
private String riskFactors; |
||||
|
||||
@ApiModelProperty("学习确认危险点负责人") |
||||
private String studyHead; |
||||
|
||||
@ApiModelProperty("学习确认危险点成员") |
||||
private String studyMembers; |
||||
|
||||
@ApiModelProperty("签发时间") |
||||
private Date issueTime; |
||||
|
||||
@ApiModelProperty("签发人员") |
||||
private String issuePersonnel; |
||||
|
||||
@ApiModelProperty("实际开始时间") |
||||
private Date actStartTime; |
||||
|
||||
@ApiModelProperty("实际结束时间") |
||||
private Date actEndTime; |
||||
|
||||
@ApiModelProperty("延期时间") |
||||
private Date extensionTime; |
||||
|
||||
@ApiModelProperty("延期审核人") |
||||
private String extensionPersonnel; |
||||
|
||||
@ApiModelProperty("验收时间") |
||||
private Date checkTime; |
||||
|
||||
@ApiModelProperty("验收审核人") |
||||
private String checkPersonnel; |
||||
|
||||
@ApiModelProperty("备注") |
||||
private String memo; |
||||
|
||||
@ApiModelProperty("图片") |
||||
private String imgs; |
||||
|
||||
@ApiModelProperty("视频") |
||||
private String videos; |
||||
|
||||
@ApiModelProperty("当前任务名称") |
||||
private String taskName; |
||||
|
||||
@ApiModelProperty("当前步骤处理人员名称") |
||||
private String nextStepOperator; |
||||
|
||||
@ApiModelProperty("流程实例Id") |
||||
private String processInstanceId; |
||||
|
||||
|
||||
} |
@ -0,0 +1,17 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.feign; |
||||
|
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Component |
||||
public class AccessTicketClientFallback implements IAccessTicketClient { |
||||
|
||||
@Override |
||||
public R<Boolean> listener(ProcessWorkFlowResponse processWorkFlowResponse) { |
||||
return R.fail("执行失败!"); |
||||
} |
||||
} |
@ -0,0 +1,26 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.feign; |
||||
|
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.ticket.allTicket.fegin.TicketInfoAllClientFallback; |
||||
import com.hnac.hzims.ticket.constants.TicketConstants; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.cloud.openfeign.FeignClient; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@FeignClient( |
||||
value = TicketConstants.APP_NAME, |
||||
fallback = AccessTicketClientFallback.class |
||||
) |
||||
public interface IAccessTicketClient { |
||||
|
||||
String API_PREFIX = "/feign/accessTicket"; |
||||
|
||||
String ACCESS_TICKET_PROCESS_LISTENER = API_PREFIX + "/listener"; |
||||
|
||||
@PostMapping(ACCESS_TICKET_PROCESS_LISTENER) |
||||
R<Boolean> listener(@RequestBody ProcessWorkFlowResponse processWorkFlowResponse); |
||||
} |
@ -0,0 +1,17 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.vo; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketMeasureVo { |
||||
|
||||
@ApiModelProperty("检修措施字典编号") |
||||
private String code; |
||||
|
||||
@ApiModelProperty("措施描述") |
||||
private String measures; |
||||
} |
@ -0,0 +1,134 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.vo; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketPreviewVo { |
||||
|
||||
@ApiModelProperty("创建时间") |
||||
private String create; |
||||
|
||||
@ApiModelProperty("检修创建时间: 年") |
||||
private Integer cy; |
||||
|
||||
@ApiModelProperty("检修创建时间: 月") |
||||
private Integer cm; |
||||
|
||||
@ApiModelProperty("检修创建时间: 日") |
||||
private Integer cday; |
||||
|
||||
@ApiModelProperty("编号") |
||||
private String code; |
||||
|
||||
@ApiModelProperty("设备名称") |
||||
private String deviceName; |
||||
|
||||
@ApiModelProperty("检修内容") |
||||
private String content; |
||||
|
||||
@ApiModelProperty("质量标准") |
||||
private String standard; |
||||
|
||||
@ApiModelProperty("作业危险类别") |
||||
private String dangerous; |
||||
|
||||
@ApiModelProperty("备注") |
||||
private String memo; |
||||
|
||||
@ApiModelProperty("工作负责人签名") |
||||
private String studyHead; |
||||
|
||||
@ApiModelProperty("工作班组成员") |
||||
private String studyMembers; |
||||
|
||||
@ApiModelProperty("计划开始检修时间: 年") |
||||
private Integer psy; |
||||
|
||||
@ApiModelProperty("计划开始检修时间: 月") |
||||
private Integer psm; |
||||
|
||||
@ApiModelProperty("计划开始检修时间: 日") |
||||
private Integer psd; |
||||
|
||||
@ApiModelProperty("计划开始检修时间: 时") |
||||
private Integer psh; |
||||
|
||||
@ApiModelProperty("计划开始检修时间: 分") |
||||
private Integer psmi; |
||||
|
||||
@ApiModelProperty("计划结束检修时间: 年") |
||||
private Integer pey; |
||||
|
||||
@ApiModelProperty("计划结束检修时间: 月") |
||||
private Integer pem; |
||||
|
||||
@ApiModelProperty("计划结束检修时间: 日") |
||||
private Integer ped; |
||||
|
||||
@ApiModelProperty("计划结束检修时间: 时") |
||||
private Integer peh; |
||||
|
||||
@ApiModelProperty("计划结束检修时间: 分") |
||||
private Integer pemi; |
||||
|
||||
@ApiModelProperty("检修成员人数") |
||||
private Integer accessCount; |
||||
|
||||
@ApiModelProperty("签发人员") |
||||
private String issuePersonnel; |
||||
|
||||
@ApiModelProperty("签发时间: 年") |
||||
private Integer issy; |
||||
|
||||
@ApiModelProperty("签发时间: 月") |
||||
private Integer issm; |
||||
|
||||
@ApiModelProperty("签发时间: 日") |
||||
private Integer issd; |
||||
|
||||
@ApiModelProperty("签发时间: 时") |
||||
private Integer issh; |
||||
|
||||
@ApiModelProperty("签发时间: 分") |
||||
private Integer issmi; |
||||
|
||||
@ApiModelProperty("延期审核人") |
||||
private String extensionPersonnel; |
||||
|
||||
@ApiModelProperty("延期审核时间: 年") |
||||
private String ey; |
||||
|
||||
@ApiModelProperty("延期审核时间: 月") |
||||
private String em; |
||||
|
||||
@ApiModelProperty("延期审核时间: 日") |
||||
private String ed; |
||||
|
||||
@ApiModelProperty("延期审核时间: 时") |
||||
private String eh; |
||||
|
||||
@ApiModelProperty("延期审核时间: 分") |
||||
private String emi; |
||||
|
||||
@ApiModelProperty("验收审核人") |
||||
private String checkPersonnel; |
||||
|
||||
@ApiModelProperty("验收时间: 年") |
||||
private Integer chy; |
||||
|
||||
@ApiModelProperty("验收时间: 月") |
||||
private Integer chm; |
||||
|
||||
@ApiModelProperty("验收时间: 日") |
||||
private Integer chd; |
||||
|
||||
@ApiModelProperty("验收时间: 时") |
||||
private Integer chh; |
||||
|
||||
@ApiModelProperty("验收时间: 分") |
||||
private Integer chmi; |
||||
} |
@ -0,0 +1,20 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.vo; |
||||
|
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Data |
||||
public class AccessTicketRiskFactorsVo { |
||||
|
||||
@ApiModelProperty("危险因素字典编号") |
||||
private String code; |
||||
|
||||
@ApiModelProperty("控制措施") |
||||
private String controlMeasures; |
||||
|
||||
@ApiModelProperty("票据编号") |
||||
private String ticketCode; |
||||
} |
@ -0,0 +1,60 @@
|
||||
package com.hnac.hzims.middle.processflow.strategy.serviceimpl; |
||||
|
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.middle.processflow.service.ProcessDictService; |
||||
import com.hnac.hzims.middle.processflow.strategy.abstracts.ProcessAbstractService; |
||||
import com.hnac.hzims.middle.processflow.strategy.entity.WorkflowQueue; |
||||
import com.hnac.hzims.ticket.accessTicket.feign.IAccessTicketClient; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.log.exception.ServiceException; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import static com.hnac.hzims.middle.process.constant.TicketProcessConstant.ACCESS_TICKET; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Slf4j |
||||
@Service |
||||
@RequiredArgsConstructor |
||||
public class AccessTicketServiceImpl extends ProcessAbstractService { |
||||
|
||||
|
||||
private final ProcessDictService processDictService; |
||||
|
||||
|
||||
private final IAccessTicketClient accessTicketClient; |
||||
|
||||
/** |
||||
* 比对流程key |
||||
* @param flowQueue |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public Boolean isWorkflowProcess(WorkflowQueue flowQueue) { |
||||
String dictValue = processDictService.selectDictValueByKey(ACCESS_TICKET); |
||||
if (dictValue.equals(flowQueue.getProcessDefinitionKey())) { |
||||
log.info("确认检修工作票流程程环节操作"); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 回调业务流程feign接口 |
||||
* @param response |
||||
*/ |
||||
@Override |
||||
public void calculate(ProcessWorkFlowResponse response) { |
||||
log.info("检修工作票流程消费参数 :" + response); |
||||
R result = accessTicketClient.listener(response); |
||||
if (!result.isSuccess()){ |
||||
log.info("检修工作票流程处理失败"); |
||||
throw new ServiceException("检修工作票流程消费失败"); |
||||
} |
||||
log.info("检修工作票流程消费成功"); |
||||
} |
||||
} |
@ -0,0 +1,68 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.controller; |
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketDetailReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketPageReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketStartProcessReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketDetailRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketPageRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.service.AccessTicketService; |
||||
import io.swagger.annotations.Api; |
||||
import io.swagger.annotations.ApiOperation; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.boot.ctrl.BladeController; |
||||
import org.springblade.core.mp.support.Query; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Api(value = "检修工作票",tags = "检修工作票管理") |
||||
@RestController |
||||
@RequestMapping("/access/ticket") |
||||
@AllArgsConstructor |
||||
@Slf4j |
||||
public class AccessTicketController extends BladeController { |
||||
|
||||
private final AccessTicketService accessTicketService; |
||||
|
||||
@PostMapping("/startProcess") |
||||
@ApiOperationSupport(order = 1) |
||||
@ApiOperation(value = "检修工作票流程开启") |
||||
public R<Boolean> startProcess(@RequestBody AccessTicketStartProcessReqDTO param) { |
||||
return R.status(accessTicketService.startProcess(param)); |
||||
} |
||||
|
||||
|
||||
@GetMapping("/page") |
||||
@ApiOperationSupport(order = 2) |
||||
@ApiOperation(value = "检修工作票列表查询") |
||||
public R<IPage<AccessTicketPageRspDTO>> pageCondition(AccessTicketPageReqDTO param,Query query) { |
||||
return R.data(accessTicketService.pageCondition(param,query)); |
||||
} |
||||
|
||||
@PostMapping("/detail") |
||||
@ApiOperationSupport(order = 3) |
||||
@ApiOperation(value = "检修工作票详情信息") |
||||
public R<AccessTicketDetailRspDTO> pageCondition(@RequestBody AccessTicketDetailReqDTO param) { |
||||
return R.data(accessTicketService.detail(param)); |
||||
} |
||||
|
||||
@GetMapping(value = "/preview") |
||||
@ApiOperationSupport(order = 4) |
||||
@ApiOperation(value = "检修工作票预览") |
||||
public void preview(@RequestParam("id") Long id ) { |
||||
accessTicketService.preview(id); |
||||
} |
||||
|
||||
@GetMapping("/revoke") |
||||
@ApiOperationSupport(order = 5) |
||||
@ApiOperation(value = "撤销报修") |
||||
public R<Boolean> revoke(@RequestParam("ticketId") Long ticketId) { |
||||
return R.status(accessTicketService.revoke(ticketId)); |
||||
} |
||||
} |
@ -0,0 +1,27 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.feign; |
||||
|
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.ticket.accessTicket.service.AccessTicketService; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@RestController |
||||
@Slf4j |
||||
@AllArgsConstructor |
||||
public class AccessTicketClient implements IAccessTicketClient { |
||||
|
||||
private final AccessTicketService accessTicketService; |
||||
|
||||
@Override |
||||
@PostMapping(ACCESS_TICKET_PROCESS_LISTENER) |
||||
public R<Boolean> listener(@RequestBody ProcessWorkFlowResponse processWorkFlowResponse) { |
||||
return R.status(accessTicketService.listener(processWorkFlowResponse)); |
||||
} |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketPageReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketPageRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.entity.AccessTicketEntity; |
||||
import org.apache.ibatis.annotations.Param; |
||||
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
public interface AccessTicketMapper extends UserDataScopeBaseMapper<AccessTicketEntity> { |
||||
|
||||
IPage<AccessTicketPageRspDTO> pageCondition(IPage page, @Param("param") AccessTicketPageReqDTO param); |
||||
} |
@ -0,0 +1,18 @@
|
||||
<?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.hnac.hzims.ticket.accessTicket.mapper.AccessTicketMapper"> |
||||
|
||||
<select id="pageCondition" resultType="com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketPageRspDTO"> |
||||
SELECT * FROM ACCESS_WORK_TICKET |
||||
<where> |
||||
IS_DELETED = 0 |
||||
<if test="param.startTime != null and para.startTime != ''"> |
||||
AND CREATE_TIME >= #{param.startTime} |
||||
</if> |
||||
<if test="param.endTime != null and para.endTime != ''"> |
||||
AND CREATE_TIME <= #{param.endTime} |
||||
</if> |
||||
</where> |
||||
ORDER BY CREATE_TIME DESC |
||||
</select> |
||||
</mapper> |
@ -0,0 +1,32 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.service; |
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketDetailReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketPageReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketStartProcessReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketDetailRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketPageRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.entity.AccessTicketEntity; |
||||
import org.springblade.core.mp.support.Query; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
public interface AccessTicketService extends IService<AccessTicketEntity> { |
||||
|
||||
boolean startProcess(AccessTicketStartProcessReqDTO param); |
||||
|
||||
boolean listener(ProcessWorkFlowResponse processWorkFlowResponse); |
||||
|
||||
IPage<AccessTicketPageRspDTO> pageCondition(AccessTicketPageReqDTO param,Query query); |
||||
|
||||
AccessTicketDetailRspDTO detail(AccessTicketDetailReqDTO param); |
||||
|
||||
boolean revoke(Long ticketId); |
||||
|
||||
void preview(Long id); |
||||
} |
@ -0,0 +1,441 @@
|
||||
package com.hnac.hzims.ticket.accessTicket.service.impl; |
||||
|
||||
import com.alibaba.fastjson.JSONObject; |
||||
import com.alibaba.fastjson.TypeReference; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.hnac.hzims.common.logs.utils.StringUtils; |
||||
import com.hnac.hzims.common.utils.Condition; |
||||
import com.hnac.hzims.equipment.entity.EmInfoEntity; |
||||
import com.hnac.hzims.equipment.feign.IEmInfoClient; |
||||
import com.hnac.hzims.middle.process.to.ProcessWorkFlowResponse; |
||||
import com.hnac.hzims.ticket.accessTicket.constants.AccessTicketConstants; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketDetailReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketPageReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.request.AccessTicketStartProcessReqDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketDetailRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.dto.response.AccessTicketPageRspDTO; |
||||
import com.hnac.hzims.ticket.accessTicket.entity.AccessTicketEntity; |
||||
import com.hnac.hzims.ticket.accessTicket.mapper.AccessTicketMapper; |
||||
import com.hnac.hzims.ticket.accessTicket.service.AccessTicketService; |
||||
import com.hnac.hzims.ticket.accessTicket.vo.AccessTicketPreviewVo; |
||||
import com.hnac.hzims.ticket.utils.AsposeUtil; |
||||
import com.hnac.hzims.ticket.utils.PdfUtils; |
||||
import com.hnac.hzims.ticket.utils.WordUtils; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.core.log.exception.ServiceException; |
||||
import org.springblade.core.mp.support.Query; |
||||
import org.springblade.core.secure.utils.AuthUtil; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.*; |
||||
import org.springblade.flow.core.entity.BladeFlow; |
||||
import org.springblade.flow.core.feign.IFlowClient; |
||||
import org.springblade.system.cache.DictCache; |
||||
import org.springblade.system.entity.Dict; |
||||
import org.springblade.system.user.entity.User; |
||||
import org.springblade.system.user.feign.IUserClient; |
||||
import org.springframework.beans.factory.annotation.Value; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.web.context.request.RequestContextHolder; |
||||
import org.springframework.web.context.request.ServletRequestAttributes; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
import java.util.*; |
||||
|
||||
/** |
||||
* @author ysj |
||||
*/ |
||||
@Slf4j |
||||
@Service |
||||
@RequiredArgsConstructor |
||||
public class AccessTicketServiceImpl extends ServiceImpl<AccessTicketMapper, AccessTicketEntity> implements AccessTicketService { |
||||
|
||||
|
||||
private final IUserClient userClient; |
||||
|
||||
private final IFlowClient flowClient; |
||||
|
||||
private final IEmInfoClient deviceClient; |
||||
|
||||
@Value("${hzims.ticket.accessTicket.save.pdf}") |
||||
private String savePdfPath; |
||||
|
||||
@Value("${hzims.ticket.accessTicket.save.work}") |
||||
private String saveWorkPath; |
||||
|
||||
/** |
||||
* 检修工作票开启流程 |
||||
* @param param |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public boolean startProcess(AccessTicketStartProcessReqDTO param) { |
||||
// 保存检修工作票
|
||||
AccessTicketEntity entity = this.saveAccessTicket(param); |
||||
|
||||
// 开启流程
|
||||
return this.start(entity); |
||||
} |
||||
|
||||
/** |
||||
* 检修工作票流程回调监听 |
||||
* @param processWorkFlowResponse |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public boolean listener(ProcessWorkFlowResponse processWorkFlowResponse) { |
||||
Map<String, Object> variables = (Map<String, Object>) processWorkFlowResponse.getVariables(); |
||||
AccessTicketEntity entity = JSONObject.parseObject(JSONObject.toJSONString(variables), new TypeReference<AccessTicketEntity>(){}); |
||||
// 当前流程名称
|
||||
entity.setTaskName(processWorkFlowResponse.getTaskName()); |
||||
// 流程阶段执行人员名称
|
||||
entity.setNextStepOperator(processWorkFlowResponse.getNextStepOperator()); |
||||
|
||||
// 流程步骤
|
||||
if(variables.containsKey("processReversalStep")){ |
||||
String reversal = variables.get("processReversalStep").toString(); |
||||
// 受理 reversal = 1
|
||||
|
||||
// 检修安全措施 reversal = 2
|
||||
if("2".equals(reversal)){ |
||||
if(variables.containsKey("measures")){ |
||||
entity.setMeasures(variables.get("measures").toString()); |
||||
} |
||||
if(variables.containsKey("measuresConfirmPersonnel")){ |
||||
entity.setMeasuresConfirmPersonnel(variables.get("measuresConfirmPersonnel").toString()); |
||||
} |
||||
} |
||||
|
||||
|
||||
// 危害因素及措施 reversal = 3
|
||||
if("3".equals(reversal) && variables.containsKey("riskFactors")){ |
||||
entity.setRiskFactors(variables.get("riskFactors").toString()); |
||||
} |
||||
|
||||
// 学习确认危险点 reversal = 4
|
||||
if("4".equals(reversal)){ |
||||
if(variables.containsKey("studyHead")){ |
||||
entity.setStudyHead(variables.get("studyHead").toString()); |
||||
} |
||||
if(variables.containsKey("studyMembers")){ |
||||
entity.setStudyMembers(variables.get("studyMembers").toString()); |
||||
} |
||||
} |
||||
|
||||
// 审批签发 reversal = 5
|
||||
if("5".equals(reversal) && variables.containsKey("issuePersonnel")){ |
||||
entity.setIssueTime(new Date()); |
||||
entity.setIssuePersonnel(variables.get("issuePersonnel").toString()); |
||||
} |
||||
|
||||
// 实际检修 reversal = 6
|
||||
if("6".equals(reversal)){ |
||||
if(ObjectUtil.isNotEmpty(variables.get("access"))){ |
||||
// 检修延期
|
||||
if((Boolean) variables.get("access")){ |
||||
if(variables.containsKey("actStartTime")){ |
||||
entity.setActStartTime(DateUtil.parse(variables.get("actStartTime").toString(),DateUtil.PATTERN_DATETIME)); |
||||
} |
||||
if(variables.containsKey("actEndTime")){ |
||||
entity.setActEndTime(DateUtil.parse(variables.get("actEndTime").toString(),DateUtil.PATTERN_DATETIME)); |
||||
} |
||||
}else{ |
||||
if(variables.containsKey("extensionTime")){ |
||||
entity.setExtensionTime(DateUtil.parse(variables.get("extensionTime").toString(),DateUtil.PATTERN_DATETIME)); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// 检修延期 reversal = 7
|
||||
if("7".equals(reversal) && variables.containsKey("extensionPersonnel")){ |
||||
entity.setExtensionPersonnel(variables.get("extensionPersonnel").toString()); |
||||
} |
||||
|
||||
// 检修验收 reversal = 8
|
||||
if("8".equals(reversal) && variables.containsKey("checkPersonnel")){ |
||||
entity.setCheckTime(new Date()); |
||||
entity.setCheckPersonnel(variables.get("checkPersonnel").toString()); |
||||
entity.setTaskName("流程结束"); |
||||
entity.setNextStepOperator("流程结束,无需人员处理"); |
||||
} |
||||
|
||||
} |
||||
return this.updateById(entity); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 保存检修工作票 |
||||
* @param param |
||||
*/ |
||||
private AccessTicketEntity saveAccessTicket(AccessTicketStartProcessReqDTO param) { |
||||
// 查询设备信息
|
||||
R<EmInfoEntity> device = deviceClient.getEmInfoByEmCode(param.getDeviceCode()); |
||||
if(!device.isSuccess() || ObjectUtil.isEmpty(device.getData())){ |
||||
throw new ServiceException("设备信息不存在!"); |
||||
} |
||||
AccessTicketEntity entity = new AccessTicketEntity(); |
||||
entity.setCode(UUID.randomUUID().toString()); |
||||
entity.setIsExternal(param.getIsExternal()); |
||||
entity.setIsEmergency(param.getIsEmergency()); |
||||
entity.setDeviceCode(param.getDeviceCode()); |
||||
entity.setDeviceName(device.getData().getName()); |
||||
entity.setDeviceAddress(device.getData().getInsLocation()); |
||||
entity.setFaultDescribe(param.getFaultDescribe()); |
||||
// 图片
|
||||
if(CollectionUtil.isNotEmpty(param.getImgs())){ |
||||
entity.setImgs(JSONObject.toJSONString(param.getImgs())); |
||||
} |
||||
// 视频
|
||||
if(CollectionUtil.isNotEmpty(param.getVideos())){ |
||||
entity.setVideos(JSONObject.toJSONString(param.getVideos())); |
||||
} |
||||
entity.setStatus(0); |
||||
this.save(entity); |
||||
return entity; |
||||
} |
||||
|
||||
/** |
||||
* 开启流程 |
||||
* @param entity |
||||
*/ |
||||
private boolean start(AccessTicketEntity entity) { |
||||
/* 并行人员设置 |
||||
// 项目负责人
|
||||
User header = queryRoleUser("200000", Long.valueOf(AuthUtil.getDeptId()), "accessTicketHead"); |
||||
variables.put("charge","taskUser_" + header.getId()); |
||||
// 许可人
|
||||
User licensor = queryRoleUser("200000", Long.valueOf(AuthUtil.getDeptId()), "accessTicketLicensor"); |
||||
variables.put("licensor","taskUser_" + licensor.getId()); |
||||
// 外部单位负责人
|
||||
User external = queryRoleUser("200000", Long.valueOf(AuthUtil.getDeptId()), "external"); |
||||
variables.put("external","taskUser_" + external.getId()); |
||||
// 设备负责人
|
||||
User manage = queryRoleUser("200000", Long.valueOf(AuthUtil.getDeptId()), "deviceManage"); |
||||
variables.put("manage","taskUser_" + manage.getId()); |
||||
|
||||
variables.put("persons", Arrays.asList("taskUser_" + header.getId(),"taskUser_" + licensor.getId(),"taskUser_" + external.getId(),"taskUser_" + manage.getId())); |
||||
*/ |
||||
|
||||
Map<String, Object> variables = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(entity,DateUtil.PATTERN_DATETIME), Map.class); |
||||
R<BladeFlow> result = flowClient.startProcessInstanceContainNameByKey(AccessTicketConstants.ACCESS_TICKET_PROCESS_KEY, |
||||
StringUtil.format("{}:{}",AccessTicketConstants.ACCESS_TICKET_TABLE, entity.getId()), DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME) +"_" + entity.getDeviceName() + "_检修工作票", variables); |
||||
log.info("access_ticket : start_process_result _ {}",result); |
||||
// 更新任务流程Id
|
||||
if (!result.isSuccess() || 200 != result.getCode()) { |
||||
throw new ServiceException("开启流程失败!"); |
||||
} |
||||
entity.setProcessInstanceId(result.getData().getProcessInstanceId()); |
||||
return this.updateById(entity); |
||||
} |
||||
|
||||
/** |
||||
* 获取当前机构指定角色的用户 |
||||
* @param tenantId |
||||
* @param deptId |
||||
* @param alias |
||||
* @return |
||||
*/ |
||||
public User queryRoleUser(String tenantId, Long deptId, String alias){ |
||||
if(Func.isEmpty(tenantId)){ |
||||
tenantId = AuthUtil.getTenantId(); |
||||
} |
||||
R<List<User>> result = userClient.relationUserListByRoleAlias(tenantId, deptId, alias); |
||||
if(!result.isSuccess()){ |
||||
throw new ServiceException("查询角色用户信息失败!"); |
||||
} |
||||
return result.getData().get(0); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 检修工作票列表分页查询 |
||||
* @param param |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public IPage<AccessTicketPageRspDTO> pageCondition(AccessTicketPageReqDTO param, Query query) { |
||||
return super.baseMapper.pageCondition(Condition.getPage(query),param); |
||||
} |
||||
|
||||
/** |
||||
* 检修工作票详情查询 |
||||
* @param param |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public AccessTicketDetailRspDTO detail(AccessTicketDetailReqDTO param) { |
||||
if(StringUtil.isEmpty(param.getProcessInstanceId())){ |
||||
throw new ServiceException("参数错误!"); |
||||
} |
||||
AccessTicketEntity entity = this.getOne(Wrappers.<AccessTicketEntity>lambdaQuery() |
||||
.eq(AccessTicketEntity::getProcessInstanceId,param.getProcessInstanceId()) |
||||
); |
||||
return BeanUtil.copyProperties(entity,AccessTicketDetailRspDTO.class); |
||||
} |
||||
|
||||
/** |
||||
* 检修工作票预览 |
||||
* @param id |
||||
*/ |
||||
@Override |
||||
public void preview(Long id) { |
||||
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
||||
HttpServletResponse response = servletRequestAttributes.getResponse(); |
||||
// 查询检修工作票记录
|
||||
AccessTicketPreviewVo preview = this.previewParams(id); |
||||
// 参数对象
|
||||
Map<String,Object> params = new HashMap<>(); |
||||
try { |
||||
params = PdfUtils.objectToMap(preview); |
||||
log.info("preview_to_map : {}",params); |
||||
}catch (Exception e) { |
||||
log.info("转换对象失败!"); |
||||
} |
||||
String fileName = preview.getDeviceName() + "_检修工作票.docx"; |
||||
// 上传word文件至服务器
|
||||
String path = WordUtils.uploadWord("/template/accessTicket/",saveWorkPath,params,"access_ticket_template",fileName); |
||||
// pdf文件存放路径
|
||||
String pdfPath = savePdfPath + preview.getDeviceName() + "_检修工作票.pdf"; |
||||
// 转换pdf
|
||||
AsposeUtil.wordToPdf(path,pdfPath); |
||||
// 将文件流存放至response
|
||||
PdfUtils.readPdf(response,pdfPath); |
||||
} |
||||
|
||||
/** |
||||
* 检修工作票预览参数 |
||||
* @param id |
||||
* @return |
||||
*/ |
||||
private AccessTicketPreviewVo previewParams(Long id) { |
||||
AccessTicketEntity access = this.getById(id); |
||||
if(ObjectUtil.isEmpty(access)){ |
||||
throw new ServiceException("未查询到检修工作票预览信息!"); |
||||
} |
||||
AccessTicketPreviewVo params = new AccessTicketPreviewVo(); |
||||
// 基础内容
|
||||
params.setCode(access.getCode()); |
||||
params.setDeviceName(access.getDeviceName()); |
||||
params.setContent(access.getAccessContent()); |
||||
params.setStandard(access.getQualityStandard()); |
||||
params.setMemo(access.getMemo()); |
||||
params.setStudyHead(access.getStudyHead()); |
||||
// 作业危险类别
|
||||
List<Dict> dicts = DictCache.getList("jobHazardCategory"); |
||||
if(CollectionUtil.isNotEmpty(dicts)){ |
||||
StringBuilder dangerous = new StringBuilder(); |
||||
for (Dict dict : dicts){ |
||||
if(StringUtils.isNotEmpty(access.getDangerous())){ |
||||
if(access.getDangerous().contains(dict.getDictKey())){ |
||||
dangerous.append(" ☑").append(dict.getDictValue()); |
||||
}else{ |
||||
dangerous.append(" □").append(dict.getDictValue()); |
||||
} |
||||
}else{ |
||||
dangerous.append(" □").append(dict.getDictValue()); |
||||
} |
||||
} |
||||
params.setDangerous(dangerous.toString()); |
||||
} |
||||
|
||||
|
||||
// 检修成员人数
|
||||
if(StringUtils.isNotEmpty(access.getStudyMembers())){ |
||||
String[] members = access.getStudyMembers().split(","); |
||||
params.setAccessCount(members.length); |
||||
params.setStudyMembers(access.getStudyMembers()); |
||||
} |
||||
// 检修工作票创建时间
|
||||
Calendar create = Calendar.getInstance(); |
||||
create.setTime(access.getCreateTime()); |
||||
params.setCreate(DateUtil.format(access.getCreateTime(),DateUtil.PATTERN_DATETIME)); |
||||
params.setCy(create.get(Calendar.YEAR)); |
||||
params.setCm(create.get(Calendar.MONTH)); |
||||
params.setCday(create.get(Calendar.DAY_OF_MONTH)); |
||||
// 计划开始检修时间
|
||||
Calendar start = Calendar.getInstance(); |
||||
start.setTime(access.getPlanStartTime()); |
||||
params.setPsy(start.get(Calendar.YEAR)); |
||||
params.setPsm(start.get(Calendar.MONTH)); |
||||
params.setPsd(start.get(Calendar.DAY_OF_MONTH)); |
||||
params.setPsh(start.get(Calendar.HOUR_OF_DAY)); |
||||
params.setPsmi(start.get(Calendar.MINUTE)); |
||||
// 计划结束检修时间
|
||||
Calendar end = Calendar.getInstance(); |
||||
end.setTime(access.getPlanEndTime()); |
||||
params.setPey(end.get(Calendar.YEAR)); |
||||
params.setPem(end.get(Calendar.MONTH)); |
||||
params.setPed(end.get(Calendar.DAY_OF_MONTH)); |
||||
params.setPeh(end.get(Calendar.HOUR_OF_DAY)); |
||||
params.setPemi(end.get(Calendar.MINUTE)); |
||||
// 签发时间
|
||||
params.setIssuePersonnel(access.getIssuePersonnel()); |
||||
Calendar issue = Calendar.getInstance(); |
||||
issue.setTime(access.getIssueTime()); |
||||
params.setIssy(issue.get(Calendar.YEAR)); |
||||
params.setIssm(issue.get(Calendar.MONTH)); |
||||
params.setIssd(issue.get(Calendar.DAY_OF_MONTH)); |
||||
params.setIssh(issue.get(Calendar.HOUR_OF_DAY)); |
||||
params.setIssmi(issue.get(Calendar.MINUTE)); |
||||
// 延期时间
|
||||
if(StringUtils.isEmpty(access.getExtensionPersonnel())){ |
||||
params.setExtensionPersonnel("/"); |
||||
}else { |
||||
params.setExtensionPersonnel(access.getExtensionPersonnel()); |
||||
} |
||||
if(ObjectUtil.isEmpty(access.getExtensionTime())){ |
||||
params.setEy("/"); |
||||
params.setEm("/"); |
||||
params.setEd("/"); |
||||
params.setEh("/"); |
||||
params.setEmi("/"); |
||||
}else { |
||||
Calendar extens = Calendar.getInstance(); |
||||
params.setIssuePersonnel(access.getIssuePersonnel()); |
||||
extens.setTime(access.getExtensionTime()); |
||||
params.setEy(String.valueOf(extens.get(Calendar.YEAR))); |
||||
params.setEm(String.valueOf(extens.get(Calendar.MONTH))); |
||||
params.setEd(String.valueOf(extens.get(Calendar.DAY_OF_MONTH))); |
||||
params.setEh(String.valueOf(extens.get(Calendar.HOUR_OF_DAY))); |
||||
params.setEmi(String.valueOf(extens.get(Calendar.MINUTE))); |
||||
} |
||||
// 验收时间
|
||||
params.setCheckPersonnel(access.getCheckPersonnel()); |
||||
Calendar check = Calendar.getInstance(); |
||||
check.setTime(access.getCheckTime()); |
||||
params.setChy(check.get(Calendar.YEAR)); |
||||
params.setChm(check.get(Calendar.MONTH)); |
||||
params.setChd(check.get(Calendar.DAY_OF_MONTH)); |
||||
params.setChh(check.get(Calendar.HOUR_OF_DAY)); |
||||
params.setChmi(check.get(Calendar.MINUTE)); |
||||
return params; |
||||
} |
||||
|
||||
/** |
||||
* 撤销报修 |
||||
* @param ticketId |
||||
* @return |
||||
*/ |
||||
@Override |
||||
public boolean revoke(Long ticketId) { |
||||
AccessTicketEntity entity = this.getOne(Wrappers.<AccessTicketEntity>lambdaQuery() |
||||
.eq(AccessTicketEntity::getId,ticketId)); |
||||
if(ObjectUtil.isEmpty(entity)){ |
||||
throw new ServiceException("未查询到报修单信息!"); |
||||
} |
||||
if(entity.getStatus() == 1){ |
||||
throw new ServiceException("报修单已撤销,请勿重复撤销!"); |
||||
} |
||||
if(!"受理 (工作负责人)".equals(entity.getTaskName())){ |
||||
throw new ServiceException("报修单已受理,无法撤销!"); |
||||
} |
||||
return this.update(Wrappers.<AccessTicketEntity>lambdaUpdate() |
||||
.set(AccessTicketEntity::getStatus,1) |
||||
.eq(AccessTicketEntity::getId,ticketId) |
||||
); |
||||
} |
||||
} |
Binary file not shown.
Loading…
Reference in new issue