From 1cc419302feee61996ef6312c64ad999becfcc8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Mon, 5 Jun 2023 10:35:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8process=5Fdict=E5=AD=97=E5=85=B8=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/TicketProcessConstant.java | 5 +- .../controller/ProcessDictController.java | 44 ++++++++ .../ticket/processflow/entity/ProcessDict.java | 113 +++++++++++++++++++++ .../processflow/mapper/ProcessDictMapper.java | 14 +++ .../processflow/mapper/xml/ProcessTypeMapper.xml | 5 - .../processflow/service/ProcessDictService.java | 22 ++++ .../service/impl/ProcessDictServiceImpl.java | 33 ++++++ .../serviceimpl/OneTicketProcessServiceImpl.java | 15 ++- .../service/impl/TicketProcessServiceImpl.java | 16 ++- .../service/impl/WorkTicketInfoServiceImpl.java | 2 +- .../ticket/src/main/resources/application.yml | 1 + .../mapper/processflow/ProcessDictMapper.xml | 5 + .../mapper/processflow/ProcessTypeMapper.xml | 5 + 13 files changed, 267 insertions(+), 13 deletions(-) create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/controller/ProcessDictController.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/ProcessDictMapper.java delete mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/xml/ProcessTypeMapper.xml create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/ProcessDictService.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/impl/ProcessDictServiceImpl.java create mode 100644 hzims-service/ticket/src/main/resources/mapper/processflow/ProcessDictMapper.xml create mode 100644 hzims-service/ticket/src/main/resources/mapper/processflow/ProcessTypeMapper.xml diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java index 46a48bc..7bef5ea 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java @@ -10,5 +10,8 @@ package com.hnac.hzims.ticket.processflow.constant; */ public class TicketProcessConstant { - public final static String STARTEVENT = "workTicketFlow"; + /** + * 第一种工作票的key + */ + public static final String FIRST_TICKET_KEY = "networking"; } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/controller/ProcessDictController.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/controller/ProcessDictController.java new file mode 100644 index 0000000..f6b6fdf --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/controller/ProcessDictController.java @@ -0,0 +1,44 @@ +package com.hnac.hzims.ticket.processflow.controller; + +import com.hnac.hzims.ticket.processflow.entity.ProcessDict; +import com.hnac.hzims.ticket.processflow.service.ProcessDictService; +import groovy.util.logging.Slf4j; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/6/5 9:35 + */ + +@Slf4j +@RequestMapping("/process-dict") +@RestController +@RequiredArgsConstructor +public class ProcessDictController { + + + private final ProcessDictService processDictService; + + + + + @GetMapping("/test") + public void test(){ + ProcessDict processDict = new ProcessDict(); + processDict.setDictKey("networking"); + processDict.setDictSort(0); + processDict.setDictValue("workTicketFlow"); + processDict.setDictLabel("第一种工作票"); + processDict.setIsDefault("Y"); + processDict.setRemark("第一种工作票"); + processDict.setDictType("工作票"); + processDictService.save(processDict); + } + + +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java new file mode 100644 index 0000000..d2240cb --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java @@ -0,0 +1,113 @@ +package com.hnac.hzims.ticket.processflow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tenant.mp.TenantEntity; + +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 票据字典表 + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/6/5 8:33 + */ +@Data +@ApiModel(value = "ProcessDict",description = "票据字典表") +@Accessors(chain = true) +public class ProcessDict { + + + /** + * 票据编码 + */ + @TableId(value = "dictCode",type = IdType.AUTO) + @ApiModelProperty("票据编码") + private Long dictCode; + + + /** + *票据排序 + */ + @ApiModelProperty("票据排序") + private Integer dictSort; + + + /** + *票据字典码 + */ + @ApiModelProperty("票据字典码") + private String dictKey; + + + /** + *票据流程标识 + */ + @ApiModelProperty("票据流程标识") + private String dictValue; + + + + /** + *票据标签 + */ + @ApiModelProperty("票据标签") + private String dictLabel; + + /** + *票据类型 + */ + @ApiModelProperty("票据类型") + private String dictType; + + /** + *是否默认(Y是 N否) + */ + @ApiModelProperty("是否默认(Y是 N否)") + private String isDefault; + + + /** + *状态(0正常 1停用) + */ + @ApiModelProperty("状态(0正常 1停用)") + private Integer status; + + + + /** + * 所属机构 + */ + @ApiModelProperty("所属机构") + private Long createDept; + + + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; + + + + /** + * 票据备注 + */ + @ApiModelProperty("票据备注") + private String remark; +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/ProcessDictMapper.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/ProcessDictMapper.java new file mode 100644 index 0000000..2bb86f5 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/ProcessDictMapper.java @@ -0,0 +1,14 @@ +package com.hnac.hzims.ticket.processflow.mapper; + +import com.hnac.hzims.ticket.processflow.entity.ProcessDict; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/6/5 8:49 + */ +public interface ProcessDictMapper extends UserDataScopeBaseMapper { + +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/xml/ProcessTypeMapper.xml b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/xml/ProcessTypeMapper.xml deleted file mode 100644 index 39ffa8c..0000000 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/mapper/xml/ProcessTypeMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/ProcessDictService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/ProcessDictService.java new file mode 100644 index 0000000..7113a06 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/ProcessDictService.java @@ -0,0 +1,22 @@ +package com.hnac.hzims.ticket.processflow.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hnac.hzims.ticket.processflow.entity.ProcessDict; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/6/5 8:52 + */ +public interface ProcessDictService extends IService { + + + /** + * 根据字典key查询字典value + */ + String selectDictValueByKey(String dictKey); + + + +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/impl/ProcessDictServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/impl/ProcessDictServiceImpl.java new file mode 100644 index 0000000..84fbfd9 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/service/impl/ProcessDictServiceImpl.java @@ -0,0 +1,33 @@ +package com.hnac.hzims.ticket.processflow.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hnac.hzims.ticket.processflow.entity.ProcessDict; +import com.hnac.hzims.ticket.processflow.mapper.ProcessDictMapper; +import com.hnac.hzims.ticket.processflow.service.ProcessDictService; +import groovy.util.logging.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/6/5 8:59 + */ +@Slf4j +@Service +public class ProcessDictServiceImpl extends ServiceImpl implements ProcessDictService { + /** + * 根据字典key查询字典value + * + * @param dictKey + */ + @Override + public String selectDictValueByKey(String dictKey) { + LambdaQueryChainWrapper processDictLambdaQueryChainWrapper = new LambdaQueryChainWrapper<>(baseMapper); + processDictLambdaQueryChainWrapper.eq(ProcessDict::getDictKey,dictKey); + return processDictLambdaQueryChainWrapper.one().getDictValue(); + } +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/strategy/serviceimpl/OneTicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/strategy/serviceimpl/OneTicketProcessServiceImpl.java index 82f64ce..1255079 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/strategy/serviceimpl/OneTicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/strategy/serviceimpl/OneTicketProcessServiceImpl.java @@ -1,6 +1,7 @@ package com.hnac.hzims.ticket.processflow.strategy.serviceimpl; import com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant; +import com.hnac.hzims.ticket.processflow.service.ProcessDictService; import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; import com.hnac.hzims.ticket.processflow.strategy.abstracts.ProcessAbstractService; import com.hnac.hzims.ticket.processflow.strategy.entity.WorkflowQueue; @@ -9,6 +10,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import static com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant.FIRST_TICKET_KEY; + /** * 开工作票流程实现类 * @@ -27,6 +30,15 @@ public class OneTicketProcessServiceImpl extends ProcessAbstractService { private final TicketProcessService ticketProcessService; + + private final ProcessDictService processDictService; + + + + + + + /** * 设置执行那种实现类 * @@ -36,7 +48,8 @@ public class OneTicketProcessServiceImpl extends ProcessAbstractService { @Override public Boolean isWorkflowProcess(WorkflowQueue flowQueue) { log.info("是否执行开第一种工作票流程环节操作~~~~,流程ticket: {}", flowQueue); - if (TicketProcessConstant.STARTEVENT.equals(flowQueue.getProcessDefinitionKey())) { + String dictValue = processDictService.selectDictValueByKey(FIRST_TICKET_KEY); + if (dictValue.equals(flowQueue.getProcessDefinitionKey())) { log.info("已执行第一种开工作票流程环节操作~~~~"); return true; } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index 73bd986..2c8d482 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -18,6 +18,7 @@ import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.feign.IStationClient; import com.hnac.hzims.ticket.constants.TicketConstants; import com.hnac.hzims.ticket.constants.WorkTicketConstants; +import com.hnac.hzims.ticket.processflow.service.ProcessDictService; import com.hnac.hzims.ticket.processflow.strategy.core.ProcessIdWorker; import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; import com.hnac.hzims.ticket.twoTicket.constant.TicketConstant; @@ -68,6 +69,8 @@ import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; +import static com.hnac.hzims.ticket.processflow.constant.TicketProcessConstant.FIRST_TICKET_KEY; + /** * 开票处理流程实现类 @@ -112,8 +115,6 @@ public class TicketProcessServiceImpl implements TicketProcessService { private final IAccessTaskClient accessTaskClient; - private String newFirstWorkTicketFlowKey = "workTicketFlow"; - private final IStationClient stationClient; @@ -141,6 +142,9 @@ public class TicketProcessServiceImpl implements TicketProcessService { private final TicketInfoDangerService ticketInfoDangerService; + private final ProcessDictService processDictService; + + /** * 启动开票流程 * @@ -188,9 +192,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { this.saveSafetyMeasures(workTicketVo.getSafetyMeasuresList(), workTicketVo.getWorkTicket()); //5. 保存工作任务 this.saveWorkTicketContentDto(workTicketVo.getWorkTicketContentDtoList(), workTicketVo.getWorkTicket()); - //6. 开启动作流 - this.dealProcess(newFirstWorkTicketFlowKey, workTicketVo); - //7. 处理任务 + //6. 查询第一种工作票值 + String dictValue = processDictService.selectDictValueByKey(FIRST_TICKET_KEY); + //7. 开启动作流 + this.dealProcess(dictValue, workTicketVo); + //8. 处理任务 this.returnTicket(workTicketVo); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java index 1da1885..0105a3d 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java @@ -256,7 +256,7 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl { User user = UserCache.getUser(item.getCreateUser()); if (user != null) { - item.setCreateUserName(UserCache.getUser(item.getCreateUser()).getName()); + item.setCreateUserName(user.getName()); } }); diff --git a/hzims-service/ticket/src/main/resources/application.yml b/hzims-service/ticket/src/main/resources/application.yml index 9341ce3..1de0a34 100644 --- a/hzims-service/ticket/src/main/resources/application.yml +++ b/hzims-service/ticket/src/main/resources/application.yml @@ -16,6 +16,7 @@ swagger: + #ticket: # workTickets: # - status: 1 diff --git a/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessDictMapper.xml b/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessDictMapper.xml new file mode 100644 index 0000000..1882427 --- /dev/null +++ b/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessDictMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessTypeMapper.xml b/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessTypeMapper.xml new file mode 100644 index 0000000..39ffa8c --- /dev/null +++ b/hzims-service/ticket/src/main/resources/mapper/processflow/ProcessTypeMapper.xml @@ -0,0 +1,5 @@ + + + + + From 6368d17363e42c211eaf894ca71bfad637b9fec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Mon, 5 Jun 2023 18:03:32 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8=E9=A2=84=E8=A7=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ticket/processflow/entity/ProcessDict.java | 4 +- .../ticket/twoTicket/entity/WorkTicketFinish.java | 4 ++ .../service/impl/TicketProcessServiceImpl.java | 67 +++++++++++++++------ .../service/impl/WorkTicketFinishServiceImpl.java | 5 +- .../hzims/ticket/twoTicket/utils/WordHelper.java | 6 +- ...工作票危险点分析及控制措施票.docx | Bin 28979 -> 30611 bytes .../template/电气第一种工作票模版.docx | Bin 43033 -> 42691 bytes 7 files changed, 61 insertions(+), 25 deletions(-) diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java index d2240cb..185fef7 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/entity/ProcessDict.java @@ -2,6 +2,7 @@ package com.hnac.hzims.ticket.processflow.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,13 +23,14 @@ import java.util.Date; @Data @ApiModel(value = "ProcessDict",description = "票据字典表") @Accessors(chain = true) +@TableName("process_dict") public class ProcessDict { /** * 票据编码 */ - @TableId(value = "dictCode",type = IdType.AUTO) + @TableId(type = IdType.AUTO) @ApiModelProperty("票据编码") private Long dictCode; diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java index 145b692..b785073 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; @@ -124,6 +126,8 @@ public class WorkTicketFinish implements Serializable { /** * 结束时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime workEndTime; diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index 2c8d482..15ce51e 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -5,9 +5,11 @@ import cn.afterturn.easypoi.word.WordExportUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; @@ -250,16 +252,21 @@ public class TicketProcessServiceImpl implements TicketProcessService { e.printStackTrace(); } //更新安全措施 - List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); - if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { - log.info("获取安全措施的数据:{}", safetyMeasuresList); - safetyMeasuresList.forEach(item -> { - if (ObjectUtils.isNotEmpty(item.getTicketId())) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WorkTicketSafetyMeasureEntity::getTicketId, item.getTicketId()); - workTicketSafetyMeasureService.update(item, queryWrapper); + try { + List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); + if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { + log.info("获取安全措施的数据:{}", safetyMeasuresList); + for (WorkTicketSafetyMeasureEntity item : safetyMeasuresList) { + if (ObjectUtils.isNotEmpty(item.getId())) { + workTicketSafetyMeasureService.updateById(item); + }else { + item.setTicketId(workTicketInfo.getId()); + workTicketSafetyMeasureService.save(item); + } } - }); + } + } catch (Exception e) { + e.printStackTrace(); } //工作票工作任务组 // List workTicketContentDtoList = workTicketVo.getWorkTicketContentDtoList(); @@ -299,7 +306,9 @@ public class TicketProcessServiceImpl implements TicketProcessService { //工作结束 WorkTicketFinish workTicketFinish = workTicketVo.getWorkTicketFinish(); try { - if (ObjectUtils.isNotEmpty(workTicketFinish) && 99 == workTicket.getFlowStatus().intValue()) { + + log.info("工作结束==============>"+ (workTicket.getFlowStatus().intValue())); + if (ObjectUtils.isNotEmpty(workTicketFinish)) { WorkTicketFinish ticketFinish = workTicketFinishService.selectByTicketId(workTicketInfo.getId()); log.info("获取工作结束:{}", workTicketFinish); if (ObjectUtils.isEmpty(workTicketFinish.getId()) || ObjectUtils.isEmpty(ticketFinish)) { @@ -427,6 +436,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicket.setFlowTaskName("结束"); workTicket.setNextStepOperator(" "); workTicket.setStepOperator(" "); + workTicket.setFlowStatus(999); } else { workTicket.setFlowTaskId(taskId); workTicket.setFlowTaskName(response.getTaskName()); @@ -856,7 +866,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { WorkTicketDelayEntity workTicketDelay = workTicketVo.getWorkTicketDelay(); log.info("工作票延期: {}", workTicketDelay); if (ObjectUtils.isNotEmpty(workTicketDelay)) { - result.putAll(PdfUtils.objectToMapResult(workTicket, result)); + result.putAll(PdfUtils.objectToMapResult(workTicketDelay, result)); } else { result.putAll(PdfUtils.objectToMapResult(new WorkTicketDelayEntity(), result)); } @@ -973,12 +983,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { //负责人 String licensorName = WordHelper.toMapAsString(result, "principalName", 10); result.put("principalName2", licensorName); - }else { + } else { WordHelper.putMap(result, "principalName2", 10); } //许可人确认工作票终结 - if (WordHelper.isNoneBlank(result, "workEndTime")) { log.info("许可人确认工作票终结"); //负责人 @@ -987,7 +996,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { //许可人 String licensorName = WordHelper.toMapAsString(result, "licensorName", 10); result.put("licensorName2", licensorName); - }else { + } else { WordHelper.putMap(result, "principalName3", 10); WordHelper.putMap(result, "licensorName2", 10); } @@ -1065,12 +1074,32 @@ public class TicketProcessServiceImpl implements TicketProcessService { * @param maps 新的Map * @param i 索引 */ - private static void listWichMap(List> matterLibraryListFive, List> matterLibraryListFlow, List> maps, int i) { - Map stringObjectMap = matterLibraryListFive.get(i); - Map stringObjectMap1 = matterLibraryListFlow.get(i); + private static void listWichMap(List> matterLibraryListFive, + List> matterLibraryListFlow, List> maps, int i) { HashMap objectObjectHashMap = new HashMap<>(); - objectObjectHashMap.put("safetyMeasure", stringObjectMap.get("safetyMeasure")); - objectObjectHashMap.put("safetyMeasure1", stringObjectMap1.get("safetyMeasure")); + if (matterLibraryListFive.size() > 0) { + if (matterLibraryListFive.size() <= i) { + objectObjectHashMap.put("safetyMeasure", ""); + } else { + Map stringObjectMap = matterLibraryListFive.get(i); + objectObjectHashMap.put("safetyMeasure", stringObjectMap.get("safetyMeasure")); + } + } else { + objectObjectHashMap.put("safetyMeasure", ""); + } + + + if (matterLibraryListFlow.size() > 0) { + if (matterLibraryListFlow.size() <= i) { + objectObjectHashMap.put("safetyMeasure1", ""); + } else { + Map stringObjectMap = matterLibraryListFive.get(i); + objectObjectHashMap.put("safetyMeasure1", stringObjectMap.get("safetyMeasure")); + } + }else { + objectObjectHashMap.put("safetyMeasure1", ""); + } + maps.add(objectObjectHashMap); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/WorkTicketFinishServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/WorkTicketFinishServiceImpl.java index f6e0b8e..83519ba 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/WorkTicketFinishServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/WorkTicketFinishServiceImpl.java @@ -2,6 +2,7 @@ package com.hnac.hzims.ticket.twoTicket.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish; import com.hnac.hzims.ticket.twoTicket.mapper.WorkTicketFinishMapper; @@ -34,8 +35,8 @@ public class WorkTicketFinishServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(WorkTicketFinish::getTicketId, ticketId); queryWrapper.orderByDesc(WorkTicketFinish::getCreateTime); - queryWrapper.last("limit 1"); - return this.getOne(queryWrapper); + List list = this.list(queryWrapper); + return CollectionUtils.isNotEmpty(list) ? list.get(0) : null; } /** diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/utils/WordHelper.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/utils/WordHelper.java index 8147ea9..e8505ad 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/utils/WordHelper.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/utils/WordHelper.java @@ -71,8 +71,7 @@ public class WordHelper extends StringUtils { * 判断map不为为空 */ public static boolean isNoneBlank(Map result, String key) { - String value = WordHelper.toString(result.get(key)).trim(); - System.out.println(value.length()); + String value = WordHelper.toString(result.get(key)); if (StringUtils.isNoneBlank(value)) { return true; } @@ -116,6 +115,7 @@ public class WordHelper extends StringUtils { */ private static void isContainsKey(Map params, Map result) { + if (params.containsKey("principalName1")) { result.put("principalName1", params.get("principalName1")); params.remove("principalName1"); @@ -219,7 +219,7 @@ public class WordHelper extends StringUtils { Object newValue = StringUtils.isNoneBlank(toString(value).trim()) ? value : "\u00A0" + printSpace(count); result.put(key, newValue); } else { - Object newValue = StringUtils.isNoneBlank(toString(value).trim()) ? value : "\u00A0"; + Object newValue = StringUtils.isNoneBlank(toString(value).trim()) ? value : "\u00A0" + printSpace(4); result.put(key, newValue); } } diff --git a/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx b/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx index 591306f4dd39a664c81e9ae1a1e23d5978d32aad..5e86dca86b0163cacad3efb447dfa0409a3c8538 100644 GIT binary patch delta 17416 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 diff --git a/hzims-service/ticket/src/main/resources/template/电气第一种工作票模版.docx b/hzims-service/ticket/src/main/resources/template/电气第一种工作票模版.docx index f2760d0ff4c335bd1cbe226286a379ecaa2612e6..4684a3555ba8bf2649e184cd12c55b0e33cf7bd8 100644 GIT binary patch delta 17003 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 From 3a41ebfaccacd052a049d70356c899ab66035bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Tue, 6 Jun 2023 11:31:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E7=A5=A8=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hnac/hzims/message/MessageConstants.java | 1 + .../service/impl/TicketProcessServiceImpl.java | 59 ++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java index e6a42b3..7b7fbdb 100644 --- a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java +++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java @@ -53,6 +53,7 @@ public class MessageConstants { DUTY("duty","值班消息"), SAFE("safe","安全消息"), ACCESS("access","检修消息"), + TICKETMESSAGE("ticket-message","工作票消息"), ; @Getter private String key; diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index 15ce51e..15202c8 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -11,6 +11,9 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.hnac.hzims.common.logs.utils.StringUtils; +import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.dto.MessagePushRecordDto; +import com.hnac.hzims.message.fegin.IMessageClient; import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; import com.hnac.hzims.operational.feign.IAccessTaskClient; @@ -54,6 +57,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.flow.core.entity.BladeFlow; import org.springblade.flow.core.feign.IFlowClient; +import org.springblade.system.feign.ISysClient; import org.springblade.system.user.cache.UserCache; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; @@ -147,6 +151,13 @@ public class TicketProcessServiceImpl implements TicketProcessService { private final ProcessDictService processDictService; + + private final IMessageClient messageClient; + + + private final ISysClient sysClient; + + /** * 启动开票流程 * @@ -306,15 +317,16 @@ public class TicketProcessServiceImpl implements TicketProcessService { //工作结束 WorkTicketFinish workTicketFinish = workTicketVo.getWorkTicketFinish(); try { - log.info("工作结束==============>"+ (workTicket.getFlowStatus().intValue())); if (ObjectUtils.isNotEmpty(workTicketFinish)) { WorkTicketFinish ticketFinish = workTicketFinishService.selectByTicketId(workTicketInfo.getId()); log.info("获取工作结束:{}", workTicketFinish); if (ObjectUtils.isEmpty(workTicketFinish.getId()) || ObjectUtils.isEmpty(ticketFinish)) { + log.info("获取工作结束保存成功"); workTicketFinish.setTicketId(workTicketInfo.getId()); workTicketFinishService.save(workTicketFinish); } else { + log.info("获取工作结束更新成功"); workTicketDelay.setInitialTime(LocalDateTime.now()); workTicketFinishService.updateByTicketId(workTicketFinish); } @@ -384,6 +396,47 @@ public class TicketProcessServiceImpl implements TicketProcessService { } catch (Exception e) { e.printStackTrace(); } + + + + //推送消息 + MessagePushRecordDto message = new MessagePushRecordDto(); + message.setBusinessClassify("business"); + message.setBusinessKey(MessageConstants.BusinessClassifyEnum.TICKETMESSAGE.getKey()); + message.setSubject(MessageConstants.BusinessClassifyEnum.TICKETMESSAGE.getDescription()); + message.setTaskId(workTicketInfo.getId()); + message.setTenantId("200000"); + message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); + message.setPushType(MessageConstants.IMMEDIATELY); + //您有一张工作票待审批,工作内容:*****,审批环节:*****; + String countent = + "您有一张工作票待审批,工作内容:".concat(workTicketInfo.getWorkContent()) + .concat(",审批环节:") + .concat(response.getTaskName()); + message.setContent(countent); + message.setDeptId(workTicketInfo.getCreateDept()); + R deptName = sysClient.getDeptName(workTicketInfo.getCreateDept()); + if (deptName.isSuccess()) { + message.setDeptName(deptName.getData()); + } + String userIds = response.getUserId(); + if (StringUtils.isBlank(userIds)){ + log.error("推送的消息不能为空哦,{}",userIds); + return; + } + String[] split = userIds.split(","); + for (String userId : split) { + message.setPusher(userId); + User user = UserCache.getUser(NumberUtils.toLong(userId)); + if (ObjectUtils.isNotEmpty(user)) { + message.setPusherName(user.getName()); + } + message.setAccount(userId); + + message.setCreateUser(NumberUtils.toLong(userId)); + messageClient.sendMessage(message); + } + } @@ -432,7 +485,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { String taskId = response.getTaskId(); if (StringUtils.isEmpty(taskId)) { workTicket.setFlowDescription("结束"); - workTicket.setFlowTaskId(" "); + // workTicket.setFlowTaskId(" "); workTicket.setFlowTaskName("结束"); workTicket.setNextStepOperator(" "); workTicket.setStepOperator(" "); @@ -1165,8 +1218,6 @@ public class TicketProcessServiceImpl implements TicketProcessService { dataConversion.put(key, BooleanUtils.toBoolean(newValue) ? "☑" : "□"); } } - - }