pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeProcessingResultMapper.java
@@ -24,4 +24,11 @@ int updateByPrimaryKeySelective(OpeProcessingResult record); int updateByPrimaryKey(OpeProcessingResult record); /** * 根据workOrderId获取未删除的处理结果数量,添加结果上报前判断使用 * @param workOrderId * @return */ Integer getValidResultCount(Long workOrderId); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
@@ -4,11 +4,15 @@ import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * @author ZhuBaoMin * @date 2024-11-06 11:33 * @LastEditTime 2024-11-06 11:33 * @date 2024-11-07 15:38 * @LastEditTime 2024-11-07 15:38 * @Description */ @@ -32,4 +36,34 @@ * @return */ VoWorkOrder getWorkOrderById(Long workOrderId); /** * 获取指定派单人的指定未删除工单,删除工单前判断使用使用 * @param dispatcherId * @param workOrderId * @return */ OpeWorkOrder getWorkOrder(@Param("dispatcherId")Long dispatcherId, @Param("workOrderId")Long workOrderId); /** * 逻辑删除一个未删除的工单 * @param workOrderId * @return */ Integer deleteWorkOrder(Long workOrderId); /** * 根据指定条件获取工单数量 * @param params * @return */ Long getWorkOrdersCount(Map<?, ?> params); /** * 根据指定条件获取工单 * @param params * @return */ List<VoWorkOrder> getWorkOrders(Map<?, ?> params); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeProcessingResult.java
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.dy.common.po.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.NotNull; import lombok.*; import java.math.BigDecimal; @@ -42,12 +43,14 @@ * 工单ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) @NotNull(message = "必须选择一个工单") private Long workOrderId; /** * 巡检员ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) @NotNull(message = "巡检员不能为空") private Long inspectorId; /** @@ -87,6 +90,7 @@ * 任务完成时间;精确到分 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") @NotNull(message = "任务完成时间不能为空") private Date completeTime; /** @@ -96,7 +100,7 @@ private Date reportTime; /** * 状态;1-草稿,2-已上报,3-已通过,4-已驳回 * 状态;1-已上报,2-已通过,3-已驳回 */ private Byte state; pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
@@ -28,71 +28,81 @@ public static final long serialVersionUID = 202411061136001L; /** * 主键 */ * 主键 */ @JSONField(serializeUsing= ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) private Long id; /** * 派单人ID */ * 派单人ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long dispatcherId; /** * 巡检员ID */ * 巡检员ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long inspectorId; /** * 任务类型ID */ * 任务类型ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long taskTypeId; /** * 任务内容 */ * 任务内容 */ private String taskContent; /** * 完成标准 */ * 完成标准 */ private String completeCriteria; /** * 要求完成时间;精确到分 */ * 要求完成时间;精确到分 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date deadLine; /** * 任务完成时间;精确到分 */ * 任务完成时间;精确到分 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date completeTime; /** * 派单时间 */ * 派单时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date dispatchTime; /** * 状态;1-未完成,2-已完成 */ * 农户问题上报ID */ private Long clientReportId; /** * 巡检员问题上报ID */ private Long inspectorReportId; /** * 状态;1-未完成,2-已完成 */ private Byte state; /** * 驳回次数 */ * 驳回次数 */ private Integer rejectTimes; /** * 逻辑删除标识;未删除为0,已删除为删除时间 */ * 逻辑删除标识;未删除为0,已删除为删除时间 */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long deleted; } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VoWorkOrder.java
@@ -17,9 +17,15 @@ */ @Data @JsonPropertyOrder({"dispatcherId", "dispatcher", "inspectorId", "inspector", "taskTypeId", "taskType", "taskContent", "completeCriteria", "deadLine", "dispatchTime", "rejectTimes"}) @JsonPropertyOrder({"workOrderId", "dispatcherId", "dispatcher", "inspectorId", "inspector", "taskTypeId", "taskType", "taskContent", "completeCriteria", "deadLine", "clientReportId", "inspectorReportId", "completeTime", "dispatchTime", "rejectTimes", "state", "processingState"}) public class VoWorkOrder implements BaseEntity { public static final long serialVersionUID = 202411061524001L; /** * 工单ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long workOrderId; /** * 派单人ID @@ -71,12 +77,41 @@ private Date deadLine; /** * 农户问题上报ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long clientReportId; /** * 巡检员问题上报ID */ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long inspectorReportId; /** * 任务完成时间;精确到分 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date completeTime; /** * 派单时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date dispatchTime; /** * 驳回次数 */ private Integer rejectTimes; /** * 工单状态 */ private String state; /** * 处理状态 */ private String processingState; } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/Vofeedback.java
File was deleted pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voOp/VofeedbackReply.java
File was deleted pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeProcessingResultMapper.xml
@@ -194,4 +194,9 @@ deleted = #{deleted,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} </update> <!--根据workOrderId获取未删除的处理结果数量,添加结果上报前判断使用--> <select id="getValidResultCount" resultType="java.lang.Integer"> SELECT COUNT(*) FROM ope_processing_result WHERE deleted = 0 AND work_order_id = #{workOrderId} </select> </mapper> pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
@@ -13,6 +13,8 @@ <result column="dead_line" jdbcType="TIMESTAMP" property="deadLine" /> <result column="complete_time" jdbcType="TIMESTAMP" property="completeTime" /> <result column="dispatch_time" jdbcType="TIMESTAMP" property="dispatchTime" /> <result column="client_report_id" jdbcType="BIGINT" property="clientReportId" /> <result column="inspector_report_id" jdbcType="BIGINT" property="inspectorReportId" /> <result column="state" jdbcType="TINYINT" property="state" /> <result column="reject_times" jdbcType="INTEGER" property="rejectTimes" /> <result column="deleted" jdbcType="BIGINT" property="deleted" /> @@ -20,7 +22,8 @@ <sql id="Base_Column_List"> <!--@mbg.generated--> id, dispatcher_id, inspector_id, task_type_id, task_content, complete_criteria, dead_line, complete_time, dispatch_time, `state`, reject_times, deleted complete_time, dispatch_time, client_report_id, inspector_report_id, `state`, reject_times, deleted </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -39,13 +42,13 @@ insert into ope_work_order (id, dispatcher_id, inspector_id, task_type_id, task_content, complete_criteria, dead_line, complete_time, dispatch_time, `state`, reject_times, deleted ) client_report_id, inspector_report_id, `state`, reject_times, deleted) values (#{id,jdbcType=BIGINT}, #{dispatcherId,jdbcType=BIGINT}, #{inspectorId,jdbcType=BIGINT}, #{taskTypeId,jdbcType=BIGINT}, #{taskContent,jdbcType=VARCHAR}, #{completeCriteria,jdbcType=VARCHAR}, #{deadLine,jdbcType=TIMESTAMP}, #{completeTime,jdbcType=TIMESTAMP}, #{dispatchTime,jdbcType=TIMESTAMP}, #{state,jdbcType=TINYINT}, #{rejectTimes,jdbcType=INTEGER}, #{deleted,jdbcType=BIGINT} ) #{clientReportId,jdbcType=BIGINT}, #{inspectorReportId,jdbcType=BIGINT}, #{state,jdbcType=TINYINT}, #{rejectTimes,jdbcType=INTEGER}, #{deleted,jdbcType=BIGINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder"> <!--@mbg.generated--> @@ -77,6 +80,12 @@ </if> <if test="dispatchTime != null"> dispatch_time, </if> <if test="clientReportId != null"> client_report_id, </if> <if test="inspectorReportId != null"> inspector_report_id, </if> <if test="state != null"> `state`, @@ -115,6 +124,12 @@ </if> <if test="dispatchTime != null"> #{dispatchTime,jdbcType=TIMESTAMP}, </if> <if test="clientReportId != null"> #{clientReportId,jdbcType=BIGINT}, </if> <if test="inspectorReportId != null"> #{inspectorReportId,jdbcType=BIGINT}, </if> <if test="state != null"> #{state,jdbcType=TINYINT}, @@ -155,6 +170,12 @@ <if test="dispatchTime != null"> dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP}, </if> <if test="clientReportId != null"> client_report_id = #{clientReportId,jdbcType=BIGINT}, </if> <if test="inspectorReportId != null"> inspector_report_id = #{inspectorReportId,jdbcType=BIGINT}, </if> <if test="state != null"> `state` = #{state,jdbcType=TINYINT}, </if> @@ -178,6 +199,8 @@ dead_line = #{deadLine,jdbcType=TIMESTAMP}, complete_time = #{completeTime,jdbcType=TIMESTAMP}, dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP}, client_report_id = #{clientReportId,jdbcType=BIGINT}, inspector_report_id = #{inspectorReportId,jdbcType=BIGINT}, `state` = #{state,jdbcType=TINYINT}, reject_times = #{rejectTimes,jdbcType=INTEGER}, deleted = #{deleted,jdbcType=BIGINT} @@ -187,6 +210,7 @@ <!--根据主键获取工单视图对象--> <select id="getWorkOrderById" resultType="com.dy.pipIrrGlobal.voOp.VoWorkOrder"> SELECT ord.id AS workOrderId, ord.dispatcher_id AS dispatcherId, us1.name AS dispatcher, ord.inspector_id AS inspectorId, @@ -195,12 +219,117 @@ ord.task_content AS taskContent, ord.complete_criteria AS completeCriteria, ord.dead_line AS deadLine, ord.client_report_id AS clientReportId, ord.inspector_report_id AS inspectorReportId, ord.complete_time AS completeTime, ord.dispatch_time AS dispatchTime, ord.reject_times AS rejectTimes ord.reject_times AS rejectTimes, CASE WHEN ord.state = 1 THEN '未完成' WHEN ord.state = 2 THEN '已完成' END AS state, CASE WHEN res.state = 1 THEN '已上报' WHEN res.state = 2 THEN '已通过' WHEN res.state = 3 THEN '已驳回' ELSE '未上报' END AS processingState 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 LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id WHERE ord.deleted = 0 AND ord.id = #{workOrderId} </select> <!--获取指定派单人的指定未删除工单,删除工单前判断使用使用--> <select id="getWorkOrder" resultType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder"> SELECT * FROM ope_work_order WHERE deleted = 0 AND id = #{workOrderId} AND dispatcher_id = #{dispatcherId} LIMIT 1 </select> <!--逻辑删除一个未删除的工单--> <update id="deleteWorkOrder"> UPDATE ope_work_order SET deleted = UNIX_TIMESTAMP() WHERE deleted = 0 AND id = #{workOrderId} </update> <!-- 根据指定条件获取工单数量--> <select id="getWorkOrdersCount" resultType="java.lang.Long"> select COUNT(*) AS recordCount 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 LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id <where> AND ord.deleted = 0 <if test = "dispatcher != null and dispatcher !=''"> AND us1.name like CONCAT('%',#{dispatcher},'%') </if> <if test = "inspector != null and inspector !=''"> AND us2.name like CONCAT('%',#{inspector},'%') </if> <if test = "timeStart != null and timeStop != null"> AND ord.dispatch_time BETWEEN #{timeStart} AND #{timeStop} </if> </where> </select> <select id="getWorkOrders" resultType="com.dy.pipIrrGlobal.voOp.VoWorkOrder"> SELECT ord.id AS workOrderId, 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.client_report_id AS clientReportId, ord.inspector_report_id AS inspectorReportId, ord.complete_time AS completeTime, ord.dispatch_time AS dispatchTime, ord.reject_times AS rejectTimes, CASE WHEN ord.state = 1 THEN '未完成' WHEN ord.state = 2 THEN '已完成' END AS state, CASE WHEN res.state = 1 THEN '已上报' WHEN res.state = 2 THEN '已通过' WHEN res.state = 3 THEN '已驳回' ELSE '未上报' END AS processingState 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 LEFT JOIN ope_processing_result res ON res.work_order_id = ord.id <where> AND ord.deleted = 0 <if test = "dispatcher != null and dispatcher !=''"> AND us1.name like CONCAT('%',#{dispatcher},'%') </if> <if test = "inspector != null and inspector !=''"> AND us2.name like CONCAT('%',#{inspector},'%') </if> <if test = "timeStart != null and timeStop != null"> AND ord.dispatch_time BETWEEN #{timeStart} AND #{timeStop} </if> </where> ORDER BY ord.dispatch_time DESC <trim prefix="limit " > <if test="start != null and count != null"> #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} </if> </trim> </select> </mapper> pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderCtrl.java
@@ -1,9 +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.common.webUtil.QueryResultVo; import com.dy.pipIrrApp.workOrder.dto.DtoDeleteWorkOrder; import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder; import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult; import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import jakarta.validation.Valid; @@ -21,12 +24,10 @@ import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; 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 org.springframework.web.bind.annotation.*; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Objects; /** @@ -69,6 +70,10 @@ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } if(po.getClientReportId() != null && po.getInspectorReportId() != null) { return BaseResponseUtils.buildErrorMsg("工单仅能关联一个问题上报"); } Long workOrderId = workOrderSv.insertWorkOrder(po); if(workOrderId == null || workOrderId == 0) { return BaseResponseUtils.buildErrorMsg("创建工单失败"); @@ -79,7 +84,7 @@ return BaseResponseUtils.buildErrorMsg("获取工单失败"); } if(!sendWorkOrder(voWorkOrder)) { if(!sendWorkOrder(voWorkOrder, workOrderId)) { return BaseResponseUtils.buildErrorMsg("工单推送失败"); } @@ -87,17 +92,20 @@ } /** * 推送工单 * @param voWorkOrder * 通过RocketMQ推送工单主键 * @param voWorkOrder 工单视图对象 * @param workOrderId 工单ID * @return * @throws MQClientException * @throws MQBrokerException * @throws RemotingException * @throws InterruptedException */ private Boolean sendWorkOrder(VoWorkOrder voWorkOrder) throws MQClientException, MQBrokerException, RemotingException, InterruptedException { private Boolean sendWorkOrder(VoWorkOrder voWorkOrder, Long workOrderId) throws MQClientException, MQBrokerException, RemotingException, InterruptedException { String tag = voWorkOrder.getInspector(); String key = voWorkOrder.getInspectorId().toString(); String message = JSON.toJSONString(voWorkOrder); //String message = JSON.toJSONString(voWorkOrder); String message = workOrderId.toString(); DefaultMQProducer producer = new DefaultMQProducer(producerGroup); producer.setNamesrvAddr(nameServer); @@ -111,4 +119,88 @@ return true; } /** * 逻辑删除指定派单人的指定未删除工单 * 先判断指定派单人、未删除的指定工单是否存在 * @param deleteWorkOrder 删除工单传输类 * @param bindingResult * @return */ @PostMapping(path = "deleteWorkOrder") @SsoAop() public BaseResponse<Boolean> deleteWorkOrder(@RequestBody @Valid DtoDeleteWorkOrder deleteWorkOrder, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } OpeWorkOrder workOrder = workOrderSv.getWorkOrder(deleteWorkOrder.getDispatcherId(), deleteWorkOrder.getWorkOrderId()); if(workOrder == null) { return BaseResponseUtils.buildErrorMsg("您要删除的工单不存在"); } if(workOrderSv.deleteWorkOrder(deleteWorkOrder.getWorkOrderId()) == 0) { return BaseResponseUtils.buildErrorMsg("工单删除失败"); } return BaseResponseUtils.buildSuccess(); } /** * 根据指定条件获取未删除的工单列表 * @param qo * @return */ @GetMapping(path = "/getWorkOrders") @SsoAop() public BaseResponse<QueryResultVo<List<VoWorkOrder>>> getWorkOrders(QoWorkOrder qo){ try { return BaseResponseUtils.buildSuccess(workOrderSv.getWorkOrders(qo)); } catch (Exception e) { return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取工单详情 * @param workOrderId * @return */ @GetMapping(path = "/getOneWorkOrder") public BaseResponse<VoWorkOrder> getOneWorkOrder(@RequestParam("workOrderId") Long workOrderId) { try { return BaseResponseUtils.buildSuccess(workOrderSv.getWorkOrderById(workOrderId)); } catch (Exception e) { log.error("获取工单详情异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 上报工单处理结果 * 判断该工单是否存在有效的处理结果,如果存在则提示用户该工单已存在处理结果 * 添加处理结果回复 * @param po * @param bindingResult * @return */ @PostMapping(path = "addProcessingResult") @Transactional(rollbackFor = Exception.class) public BaseResponse<Boolean> addProcessingResult(@RequestBody @Valid OpeProcessingResult po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } if(workOrderSv.hasValidProcessingResult(po.getWorkOrderId())) { return BaseResponseUtils.buildErrorMsg("该工单存在有效的处理结果"); } Long processingResultId = workOrderSv.insertProcessingResult(po); if(processingResultId == null) { return BaseResponseUtils.buildErrorMsg("上报工单处理结果失败"); } return BaseResponseUtils.buildSuccess(true) ; } } pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/WorkOrderSv.java
@@ -1,13 +1,20 @@ package com.dy.pipIrrApp.workOrder; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrApp.workOrder.qo.QoWorkOrder; import com.dy.pipIrrGlobal.daoOp.OpeProcessingResultMapper; import com.dy.pipIrrGlobal.daoOp.OpeWorkOrderMapper; import com.dy.pipIrrGlobal.pojoOp.OpeProcessingResult; import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder; import com.dy.pipIrrGlobal.voOp.VoWorkOrder; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; /** * @author ZhuBaoMin @@ -22,6 +29,9 @@ @Autowired private OpeWorkOrderMapper opeWorkOrderMapper; @Autowired private OpeProcessingResultMapper opeProcessingResultMapper; /** * 添加工单记录 * @param po @@ -29,7 +39,7 @@ */ public Long insertWorkOrder(OpeWorkOrder po) { po.setDispatchTime(new Date()); po.setState((byte)1); po.setState((byte) 1); po.setRejectTimes(0); po.setDeleted(0L); @@ -38,11 +48,75 @@ } /** * 根据主键获取工单视图对象 * 获取指定派单人的指定未删除工单,删除工单前判断使用使用 * @param dispatcherId * @param workOrderId * @return */ public OpeWorkOrder getWorkOrder(Long dispatcherId, Long workOrderId) { return opeWorkOrderMapper.getWorkOrder(dispatcherId, workOrderId); } /** * 逻辑删除一个未删除的工单 * @param workOrderId * @return */ public Integer deleteWorkOrder(Long workOrderId) { return opeWorkOrderMapper.deleteWorkOrder(workOrderId); } /** * 根据指定条件获取工单 * @param qo * @return */ public QueryResultVo<List<VoWorkOrder>> getWorkOrders(QoWorkOrder qo) { qo.completionTime() ; Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); Long itemTotal = opeWorkOrderMapper.getWorkOrdersCount(params); QueryResultVo<List<VoWorkOrder>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = opeWorkOrderMapper.getWorkOrders(params); return rsVo ; } /** * 根据工单主键获取工单视图对象 * @param workOrderId * @return */ public VoWorkOrder getWorkOrderById(Long workOrderId) { return opeWorkOrderMapper.getWorkOrderById(workOrderId); } /** * 根据workOrderId获取未删除的处理结果数量,添加结果上报前判断使用 * @param workOrderId * @return */ public Boolean hasValidProcessingResult(Long workOrderId) { if (opeProcessingResultMapper.getValidResultCount(workOrderId) == 0) { return false; } return true; } /** * 上报工单处理结果 * @param po * @return */ public Long insertProcessingResult(OpeProcessingResult po) { po.setReportTime(new Date()); po.setState((byte)1); po.setDeleted(0L); opeProcessingResultMapper.insert(po); return po.getId(); } } pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/dto/DtoDeleteWorkOrder.java
New file @@ -0,0 +1,28 @@ package com.dy.pipIrrApp.workOrder.dto; import jakarta.validation.constraints.NotNull; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-11-07 13:43 * @LastEditTime 2024-11-07 13:43 * @Description 删除工单传输类 */ @Data public class DtoDeleteWorkOrder { public static final long serialVersionUID = 202411071344001L; /** * 派单人ID */ @NotNull(message = "派单人不能为空") private Long dispatcherId; /** * 工单ID */ @NotNull(message = "工单不能为空") private Long workOrderId; } pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/workOrder/qo/QoWorkOrder.java
New file @@ -0,0 +1,44 @@ package com.dy.pipIrrApp.workOrder.qo; import com.dy.common.webUtil.QueryConditionVo; import lombok.Data; /** * @author ZhuBaoMin * @date 2024-11-07 17:07 * @LastEditTime 2024-11-07 17:07 * @Description */ @Data public class QoWorkOrder extends QueryConditionVo { /** * 派单人姓名 */ private String dispatcher; /** * 巡检员姓名 */ private String inspector; /** * 查询开始时间 */ private String timeStart; /** * 查询结束时间 */ private String timeStop; public void completionTime(){ if(this.timeStart != null && !this.timeStart.trim().equals("")) { this.timeStart = timeStart + " 00:00:00"; } if(this.timeStop != null && !this.timeStart.trim().equals("")) { this.timeStop = timeStop + " 23:59:59"; } } }