pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import org.apache.ibatis.annotations.Mapper; /** @@ -24,4 +25,11 @@ int updateByPrimaryKeySelective(OpeWorkOrder record); int updateByPrimaryKey(OpeWorkOrder record); /** * 根据主键获取工单视图对象 * @param workOrderId * @return */ VoWorkOrder getWorkOrderById(Long workOrderId); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java
New file @@ -0,0 +1,82 @@ package com.dy.pipIrrGlobal.voOp; import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.dy.common.po.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.Data; import java.util.Date; /** * @author ZhuBaoMin * @date 2024-11-06 15:46 * @LastEditTime 2024-11-06 15:46 * @Description 工单视图对象 */ @Data @JsonPropertyOrder({"dispatcherId", "dispatcher", "inspectorId", "inspector", "taskTypeId", "taskType", "taskContent", "completeCriteria", "deadLine", "dispatchTime", "rejectTimes"}) public class VoWorkOrder implements BaseEntity { public static final long serialVersionUID = 202411061524001L; /** * 派单人ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long dispatcherId; /** * 派单人姓名 */ private String dispatcher; /** * 巡检员ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long inspectorId; /** * 巡检员姓名 */ private String inspector; /** * 任务类型ID */ //@JSONField(serializeUsing= ObjectWriterImplToString.class) //private Long taskTypeId; /** * 任务类型 */ private String taskType; /** * 任务内容 */ private String taskContent; /** * 完成标准 */ private String completeCriteria; /** * 要求完成时间;精确到分 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date deadLine; /** * 派单时间 */ private Date dispatchTime; /** * 驳回次数 */ private Integer rejectTimes; } pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -381,4 +381,4 @@ #虚拟卡配置参数 vc: #虚拟卡最低余额报警值 alarmValue: 10 alarmValue: 10 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
@@ -183,4 +183,24 @@ deleted = #{deleted,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} </update> <!--根据主键获取工单视图对象--> <select id="getWorkOrderById" resultType="com.dy.pipIrrGlobal.voOp.VoWorkOrder"> SELECT ord.dispatcher_id AS dispatcherId, us1.name AS dispatcher, ord.inspector_id AS inspectorId, us2.name AS inspector, typ.task_type AS taskType, ord.task_content AS taskContent, ord.complete_criteria AS completeCriteria, ord.dead_line AS deadLine, ord.dispatch_time AS dispatchTime, ord.reject_times AS rejectTimes FROM ope_work_order ord INNER JOIN ba_user us1 ON us1.id = ord.dispatcher_id INNER JOIN ba_user us2 ON us2.id = ord.inspector_id INNER JOIN ope_task_type typ ON typ.id = ord.task_type_id WHERE ord.deleted = 0 AND ord.id = #{workOrderId} </select> </mapper> pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/ConsumerListener_push.java
File was deleted pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
@@ -1,6 +1,12 @@ package com.dy.pipIrrApp.workOrder; import com.alibaba.fastjson2.JSON; import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.exception.MQBrokerException; @@ -11,12 +17,17 @@ import org.apache.rocketmq.remoting.exception.RemotingException; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.nio.charset.StandardCharsets; import java.util.Objects; /** * @author ZhuBaoMin @@ -35,26 +46,69 @@ @Autowired private RocketMQTemplate rocketMQTemplate; @Value("${rocketmq.name-server}") protected String nameServer; @GetMapping("/sendWorkOrder") @Value("${rocketmq.producer.group}") protected String producerGroup; @Value("${rocketmq.topic}") protected String topic; /** * 创建工单 * @param po * @param bindingResult * @return */ @PostMapping(path = "addWorkOrder", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() public void sendWorkOrder() throws MQClientException, MQBrokerException, RemotingException, InterruptedException { ConsumerListener_push ConsumerListener_push = new ConsumerListener_push(); ConsumerListener_push.receiveMessage(); public BaseResponse<Boolean> addWorkOrder(@RequestBody @Valid OpeWorkOrder po, BindingResult bindingResult) throws MQBrokerException, RemotingException, InterruptedException, MQClientException { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } String topic = "workOrder"; String tag = "王五"; String key = "11"; String message = "Hello World"; //SendResult sendResult = rocketMQTemplate.syncSend(topic + ":" + tag, message); //System.out.println("send result:" + sendResult.toString()); Long workOrderId = workOrderSv.insertWorkOrder(po); if(workOrderId == null || workOrderId == 0) { return BaseResponseUtils.buildErrorMsg("创建工单失败"); } DefaultMQProducer producer = new DefaultMQProducer("producer_group"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); Message msg = new Message(topic,tag,"11",message.getBytes(StandardCharsets.UTF_8)); SendResult approveSendResult = producer.send(msg); System.out.println("send result:" + approveSendResult.toString()); VoWorkOrder voWorkOrder = workOrderSv.getWorkOrderById(workOrderId); if(voWorkOrder == null) { return BaseResponseUtils.buildErrorMsg("获取工单失败"); } if(!sendWorkOrder(voWorkOrder)) { return BaseResponseUtils.buildErrorMsg("工单推送失败"); } return BaseResponseUtils.buildSuccess(); } /** * 推送工单 * @param voWorkOrder * @throws MQClientException * @throws MQBrokerException * @throws RemotingException * @throws InterruptedException */ private Boolean sendWorkOrder(VoWorkOrder voWorkOrder) throws MQClientException, MQBrokerException, RemotingException, InterruptedException { String tag = voWorkOrder.getInspector(); String key = voWorkOrder.getInspectorId().toString(); String message = JSON.toJSONString(voWorkOrder); DefaultMQProducer producer = new DefaultMQProducer(producerGroup); producer.setNamesrvAddr(nameServer); producer.start(); Message msg = new Message(topic, tag, key, message.getBytes(StandardCharsets.UTF_8)); SendResult approveSendResult = producer.send(msg); if(!approveSendResult.getSendStatus().toString().equals("SEND_OK")) { return false; } return true; } } pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
@@ -1,7 +1,13 @@ package com.dy.pipIrrApp.workOrder; import com.dy.pipIrrGlobal.daoOp.OpeWorkOrderMapper; import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; /** * @author ZhuBaoMin @@ -13,4 +19,30 @@ @Slf4j @Service public class WorkOrderSv { @Autowired private OpeWorkOrderMapper opeWorkOrderMapper; /** * 添加工单记录 * @param po * @return */ public Long insertWorkOrder(OpeWorkOrder po) { po.setDispatchTime(new Date()); po.setState((byte)1); po.setRejectTimes(0); po.setDeleted(0L); opeWorkOrderMapper.insert(po); return po.getId(); } /** * 根据主键获取工单视图对象 * @param workOrderId * @return */ public VoWorkOrder getWorkOrderById(Long workOrderId) { return opeWorkOrderMapper.getWorkOrderById(workOrderId); } } pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
@@ -16,6 +16,7 @@ idSuffix: ${pipIrr.app.idSuffix} rocketmq: topic: "workOrder" consumer: group: consumer_group # 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值