吉安感知网项目-后端
linwei
2026-01-30 17c0ce8a4db799aabf9ea1e12b284e24188efc3b
工单状态优化
4 files modified
85 ■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdWorkOrderEntity.java 7 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdWorkOrderMapper.java 7 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdWorkOrderMapper.xml 26 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java 45 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdWorkOrderEntity.java
@@ -122,5 +122,10 @@
    @ApiModelProperty(value = "拒绝原因(审核拒绝时必填)")
    @TableField("reject_reason")
    private String rejectReason;
    /**
     * 快照
     */
    @ApiModelProperty(value = "快照")
    @TableField("full_snapshot")
    private String fullSnapshot;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdWorkOrderMapper.java
@@ -72,4 +72,11 @@
     * @return
     */
    Integer updateWorkOrderById(@Param("workOrderParam") GdWorkOrderEntity workOrderParam);
    /**
     * 根据ID获取工单信息(不包含geom字段)
     * @param id 工单ID
     * @return 工单实体
     */
    GdWorkOrderEntity getWorkOrderByIdWithoutGeom(@Param("id") Long id);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdWorkOrderMapper.xml
@@ -52,6 +52,32 @@
        where id = #{id}
    </select>
    <select id="getWorkOrderByIdWithoutGeom" resultType="org.sxkj.gd.workorder.entity.GdWorkOrderEntity">
        select id,
               work_order_name,
               work_order_code,
               work_order_type,
               device_load_demand,
               recommend_device_ids,
               work_order_status,
               execute_start_time,
               execute_end_time,
               service_party,
               remark,
               ST_AsText(geom) geom,
               reject_reason,
               area_code,
               create_user,
               create_dept,
               create_time,
               update_user,
               update_time,
               status,
               is_deleted
        from ja_gd_work_order
        where id = #{id}
    </select>
    <select id="selectGdWorkOrderPage" resultMap="gdWorkOrderResultMap">
        select
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java
@@ -1,5 +1,7 @@
package org.sxkj.gd.workorder.service.impl;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -56,11 +58,11 @@
    @Override
    public IPage<GdWorkOrderVO> selectGdWorkOrderPage(IPage<GdWorkOrderVO> page, WorkOrderPageParam gdWorkOrder) {
        if(gdWorkOrder.getIsQueryAll()){
        if (gdWorkOrder.getIsQueryAll()) {
            List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
            gdWorkOrder.setDeptList(deptList);
        }
         return page.setRecords(baseMapper.selectGdWorkOrderPage(page, gdWorkOrder));
        return page.setRecords(baseMapper.selectGdWorkOrderPage(page, gdWorkOrder));
    }
@@ -112,18 +114,22 @@
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getCode());
                    newStatusEnum = WorkOrderStatusEnum.PUBLISHING_ACCEPTING;
                    break;
                case "24": // 响应中_拒绝取消 → 响应中_申请取消
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getCode());
                    newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL;
                    break;
                // case "24": // 响应中_拒绝取消 → 响应中_申请取消
                //     entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getCode());
                //     newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL;
                //     break;
                case "20": // 响应中_待拆分 → 响应中_申请修改
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode());
                    newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY;
                    // 生成快照
                    GdWorkOrderEntity orderEntity = baseMapper.getWorkOrderByIdWithoutGeom(entity.getId());
                    // 直接生成快照,无需处理geom字段
                    entity.setFullSnapshot(JSON.toJSONString(orderEntity));
                    break;
                case "25": // 响应中_拒绝修改 → 响应中_申请修改
                    entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode());
                    newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY;
                    break;
                // case "25": // 响应中_拒绝修改 → 响应中_申请修改
                //     entity.setWorkOrderStatus(WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode());
                //     newStatusEnum = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY;
                //     break;
            }
            saveResult = updateById(entity);
        } else {
@@ -221,11 +227,20 @@
        // 4. 更新工单状态
        Date now = new Date();
        workOrder.setWorkOrderStatus(newStatusEnum.getCode());
        workOrder.setUpdateUser(AuthUtil.getUserId());
        workOrder.setUpdateTime(now);
        workOrder.setGeom(null);
        workOrder.setRejectReason(statusParam.getRejectReason());
        if (operationType == 8) {
            // 不同意修改,需要把快照回滚
            GdWorkOrderEntity snapshotEntity = (GdWorkOrderEntity) JSON.parseObject(workOrder.getFullSnapshot(), GdWorkOrderEntity.class);
            snapshotEntity.setId(workOrder.getId()); // 保持原ID
            snapshotEntity.setUpdateUser(AuthUtil.getUserId());
            snapshotEntity.setUpdateTime(now);
            workOrder = snapshotEntity;
        } else {
            workOrder.setWorkOrderStatus(newStatusEnum.getCode());
            workOrder.setUpdateUser(AuthUtil.getUserId());
            workOrder.setUpdateTime(now);
            workOrder.setGeom(null);
            workOrder.setRejectReason(statusParam.getRejectReason());
        }
        boolean updateResult = updateById(workOrder);
        // 5. 保存流转记录