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