吉安感知网项目-后端
linwei
2026-01-31 8261ceda58718fe8becb795d09e152a3b61a6f22
Merge remote-tracking branch 'origin/master'
4 files modified
5 files renamed
4 files copied
21 files added
5 files deleted
2215 ■■■■ changed files
README.md 3 ●●●● patch | view | raw | blame | history
drone-common/src/main/java/org/sxkj/common/constant/LauncherConstant.java 4 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdImplementListController.java 123 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdMaterialController.java 121 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdImplementListDTO.java 101 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdMaterialDTO.java 69 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdThingListMaterialRelDTO.java 13 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdImplementListEntity.java 94 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdMaterialEntity.java 64 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdThingListMaterialRelEntity.java 59 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdImplementListExcel.java 102 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdMaterialExcel.java 80 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdThingListMaterialRelExcel.java 75 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.java 24 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.xml 52 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdMaterialMapper.java 23 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdMaterialMapper.xml 32 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdThingListMaterialRelMapper.java 22 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdThingListMaterialRelMapper.xml 31 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/GdImplementListPageParam.java 39 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdImplementListService.java 24 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdMaterialService.java 23 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdThingListMaterialRelService.java 22 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdImplementListServiceImpl.java 60 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdMaterialServiceImpl.java 55 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdThingListMaterialRelServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdImplementListVO.java 102 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdMaterialVO.java 69 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdThingListMaterialRelVO.java 13 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdImplementListWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdMaterialWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdThingListMaterialRelWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/controller/GdImplementationListController.java 151 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/entity/GdImplementationListEntity.java 84 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.xml 36 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/impl/GdImplementationListServiceImpl.java 54 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/wrapper/GdImplementationListWrapper.java 50 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdManageDeviceServiceImpl.java 59 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java 78 ●●●●● patch | view | raw | blame | history
README.md
@@ -17,4 +17,5 @@
三、服务启动说明
1. 启动集成模块
drone-auth、drone-system、drone-gateway
2. 分别启动业务相关模块(按需启动)
2. 分别启动业务相关模块(按需启动)
3. 吉安服务器使用test环境、74.78使用prod环境
drone-common/src/main/java/org/sxkj/common/constant/LauncherConstant.java
@@ -43,13 +43,13 @@
    /**
     * nacos prod 地址
     */
    String NACOS_PROD_ADDR = "172.21.81.239:8899";
    String NACOS_PROD_ADDR = "127.0.0.1:8899";
    String NACOS_LOCAL_ADDR = "192.168.1.227:8848";
    /**
     * nacos test 地址
     */
    String NACOS_TEST_ADDR = "172.19.118.191:8899";
    String NACOS_TEST_ADDR = "192.168.1.36:18848";
    /**
     * sentinel dev 地址
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdImplementListController.java
New file
@@ -0,0 +1,123 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.sxkj.gd.common.GenericConverter;
import org.sxkj.gd.common.IdParam;
import org.sxkj.gd.implement.dto.GdImplementListDTO;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import org.sxkj.gd.implement.wrapper.GdImplementListWrapper;
import org.sxkj.gd.implement.service.IGdImplementListService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 实施清单主表 控制器
 *
 * @author Aix
 * @since 2026-01-31
 */
@RestController
@AllArgsConstructor
@RequestMapping("implement/gdImplementList")
@Api(value = "实施清单主表", tags = "实施清单主表接口")
public class GdImplementListController extends BladeController {
    private final IGdImplementListService gdImplementListService;
    /**
     * 实施清单主表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdImplementList")
    public R<GdImplementListVO> detail(IdParam idParam) {
        GdImplementListEntity detail = gdImplementListService.getOne(Condition.getQueryWrapper(GenericConverter.convert(idParam, GdImplementListEntity.class)));
        return R.data(GdImplementListWrapper.build().entityVO(detail));
    }
    /**
     * 实施清单主表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdImplementList")
    public R<IPage<GdImplementListVO>> page(GdImplementListPageParam param, Query query) {
        IPage<GdImplementListVO> pages = gdImplementListService.selectGdImplementListPage(
            Condition.getPage(query), param);
        return R.data(pages);
    }
    /**
     * 实施清单主表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入gdImplementList")
    public R submit(@Valid @RequestBody GdImplementListDTO gdImplementList) {
        return R.status(gdImplementListService.saveOrUpdate(GenericConverter.convert(gdImplementList, GdImplementListEntity.class)));
    }
    /**
     * 实施清单主表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdImplementListService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdImplementList")
    @ApiOperationSupport(order = 99)
    @ApiOperation(value = "导出数据", notes = "传入gdImplementList")
    @ApiIgnore
    public void exportGdImplementList(@ApiIgnore @RequestParam Map<String, Object> gdImplementList, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdImplementListEntity> queryWrapper = Condition.getQueryWrapper(gdImplementList, GdImplementListEntity.class);
        queryWrapper.lambda().eq(GdImplementListEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdImplementListExcel> list = gdImplementListService.exportGdImplementList(queryWrapper);
        ExcelUtil.export(response, "实施清单主表数据" + DateUtil.time(), "实施清单主表数据表", list, GdImplementListExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdMaterialController.java
New file
@@ -0,0 +1,121 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.sxkj.gd.common.GenericConverter;
import org.sxkj.gd.common.IdParam;
import org.sxkj.gd.implement.dto.GdMaterialDTO;
import org.sxkj.gd.implement.entity.GdMaterialEntity;
import org.sxkj.gd.implement.vo.GdMaterialVO;
import org.sxkj.gd.implement.excel.GdMaterialExcel;
import org.sxkj.gd.implement.wrapper.GdMaterialWrapper;
import org.sxkj.gd.implement.service.IGdMaterialService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * 材料信息表 控制器
 *
 * @author Aix
 * @since 2026-01-31
 */
@RestController
@AllArgsConstructor
@RequestMapping("implement/gdMaterial")
@Api(value = "材料信息表", tags = "材料信息表接口")
public class GdMaterialController extends BladeController {
    private final IGdMaterialService gdMaterialService;
    /**
     * 材料信息表 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入gdMaterial")
    public R<GdMaterialVO> detail(IdParam idParam) {
        GdMaterialEntity detail = gdMaterialService.getOne(Condition.getQueryWrapper(GenericConverter.convert(idParam, GdMaterialEntity.class)));
        return R.data(GdMaterialWrapper.build().entityVO(detail));
    }
    /**
     * 材料信息表 自定义分页
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入gdMaterial")
    public R<IPage<GdMaterialVO>> page(GdMaterialDTO gdMaterial, Query query) {
        IPage<GdMaterialVO> pages = gdMaterialService.selectGdMaterialPage(Condition.getPage(query), gdMaterial);
        return R.data(pages);
    }
    /**
     * 材料信息表 新增或修改
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入gdMaterial")
    public R submit(@Valid @RequestBody GdMaterialDTO gdMaterial) {
        return R.status(gdMaterialService.saveOrUpdate(GenericConverter.convert(gdMaterial, GdMaterialEntity.class)));
    }
    /**
     * 材料信息表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdMaterialService.deleteLogic(Func.toLongList(ids)));
    }
    /**
     * 导出数据
     */
    @GetMapping("/export-gdMaterial")
    @ApiOperationSupport(order = 99)
    @ApiOperation(value = "导出数据", notes = "传入gdMaterial")
    @ApiIgnore
    public void exportGdMaterial(@ApiIgnore @RequestParam Map<String, Object> gdMaterial, BladeUser bladeUser, HttpServletResponse response) {
        QueryWrapper<GdMaterialEntity> queryWrapper = Condition.getQueryWrapper(gdMaterial, GdMaterialEntity.class);
        queryWrapper.lambda().eq(GdMaterialEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
        List<GdMaterialExcel> list = gdMaterialService.exportGdMaterial(queryWrapper);
        ExcelUtil.export(response, "材料信息表数据" + DateUtil.time(), "材料信息表数据表", list, GdMaterialExcel.class);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdImplementListDTO.java
New file
@@ -0,0 +1,101 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * 实施清单主表 数据传输对象实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
public class GdImplementListDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 事项名称
     */
    @ApiModelProperty(value = "事项名称")
    private String matterName;
    /**
     * 事项编码
     */
    @ApiModelProperty(value = "事项编码")
    private String matterCode;
    /**
     * 所属区划编码
     */
    @ApiModelProperty(value = "所属区划编码")
    private String areaCode;
    /**
     * 所属区划名称
     */
    @ApiModelProperty(value = "所属区划名称")
    private String areaName;
    /**
     * 所属机构编码
     */
    @ApiModelProperty(value = "所属机构编码")
    private String orgCode;
    /**
     * 所属机构名称
     */
    @ApiModelProperty(value = "所属机构名称")
    private String orgName;
    /**
     * 目录编码
     */
    @ApiModelProperty(value = "目录编码")
    private String catalogCode;
    /**
     * 实施编码
     */
    @ApiModelProperty(value = "实施编码")
    private String implementCode;
    /**
     * 实施清单名称
     */
    @ApiModelProperty(value = "实施清单名称")
    private String implementName;
    /**
     * 流程定义主键
     */
    @ApiModelProperty(value = "流程定义主键")
    private String processDefinitionId;
    /**
     * 流程实例主键
     */
    @ApiModelProperty(value = "流程实例主键")
    private String processInstanceId;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdMaterialDTO.java
New file
@@ -0,0 +1,69 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
 * 材料信息表 数据传输对象实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
public class GdMaterialDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 材料名称(列表展示字段)
     */
    @ApiModelProperty(value = "材料名称(列表展示字段)")
    private String materialName;
    /**
     * 必要性:必填/可选/容缺
     */
    @ApiModelProperty(value = "必要性:必填/可选/容缺")
    private String necessity;
    /**
     * 是否适用全部情形:1是 0否
     */
    @ApiModelProperty(value = "是否适用全部情形:1是 0否")
    private Integer isAllScenario;
    /**
     * 材料说明
     */
    @ApiModelProperty(value = "材料说明")
    private String materialDesc;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdThingListMaterialRelDTO.java
File was renamed from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/dto/GdImplementationListDTO.java
@@ -14,22 +14,21 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.dto;
package org.sxkj.gd.implement.dto;
import java.io.Serializable;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 实施清单表(实时清单管理) 数据传输对象实体类
 * 实施清单-材料关联表(情形化配置) 数据传输对象实体类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdImplementationListDTO extends GdImplementationListEntity implements Serializable {
public class GdThingListMaterialRelDTO extends GdThingListMaterialRelEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdImplementListEntity.java
New file
@@ -0,0 +1,94 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.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.mp.base.BaseEntity;
/**
 * 实施清单主表 实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
@TableName("ja_gd_implement_list")
@ApiModel(value = "GdImplementList对象", description = "实施清单主表")
@EqualsAndHashCode(callSuper = true)
public class GdImplementListEntity extends BaseEntity {
    /**
     * 事项名称
     */
    @ApiModelProperty(value = "事项名称")
    private String matterName;
    /**
     * 事项编码
     */
    @ApiModelProperty(value = "事项编码")
    private String matterCode;
    /**
     * 所属区划编码
     */
    @ApiModelProperty(value = "所属区划编码")
    private String areaCode;
    /**
     * 所属区划名称
     */
    @ApiModelProperty(value = "所属区划名称")
    private String areaName;
    /**
     * 所属机构编码
     */
    @ApiModelProperty(value = "所属机构编码")
    private String orgCode;
    /**
     * 所属机构名称
     */
    @ApiModelProperty(value = "所属机构名称")
    private String orgName;
    /**
     * 目录编码
     */
    @ApiModelProperty(value = "目录编码")
    private String catalogCode;
    /**
     * 实施编码
     */
    @ApiModelProperty(value = "实施编码")
    private String implementCode;
    /**
     * 实施清单名称
     */
    @ApiModelProperty(value = "实施清单名称")
    private String implementName;
    /**
     * 流程定义主键
     */
    @ApiModelProperty(value = "流程定义主键")
    private String processDefinitionId;
    /**
     * 流程实例主键
     */
    @ApiModelProperty(value = "流程实例主键")
    private String processInstanceId;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdMaterialEntity.java
New file
@@ -0,0 +1,64 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.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.mp.base.BaseEntity;
/**
 * 材料信息表 实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
@TableName("ja_gd_material")
@ApiModel(value = "GdMaterial对象", description = "材料信息表")
@EqualsAndHashCode(callSuper = true)
public class GdMaterialEntity extends BaseEntity {
    /**
     * 材料名称(列表展示字段)
     */
    @ApiModelProperty(value = "材料名称(列表展示字段)")
    private String materialName;
    /**
     * 必要性:必填/可选/容缺
     */
    @ApiModelProperty(value = "必要性:必填/可选/容缺")
    private String necessity;
    /**
     * 是否适用全部情形:1是 0否
     */
    @ApiModelProperty(value = "是否适用全部情形:1是 0否")
    private Integer isAllScenario;
    /**
     * 材料说明
     */
    @ApiModelProperty(value = "材料说明")
    private String materialDesc;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/entity/GdThingListMaterialRelEntity.java
New file
@@ -0,0 +1,59 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.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.mp.base.BaseEntity;
/**
 * 实施清单-材料关联表(情形化配置) 实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
@TableName("ja_gd_thing_list_material_rel")
@ApiModel(value = "GdThingListMaterialRel对象", description = "实施清单-材料关联表(情形化配置)")
@EqualsAndHashCode(callSuper = true)
public class GdThingListMaterialRelEntity extends BaseEntity {
    /**
     * 关联实施清单ID
     */
    @ApiModelProperty(value = "关联实施清单ID")
    private Long implementListId;
    /**
     * 关联材料ID
     */
    @ApiModelProperty(value = "关联材料ID")
    private Long materialId;
    /**
     * 材料序号(列表展示字段)
     */
    @ApiModelProperty(value = "材料序号(列表展示字段)")
    private Integer sort;
    /**
     * 材料情形化配置:{"scenario_name":"情形1","is_need":1,"remark":"仅情形1需提供"}
     */
    @ApiModelProperty(value = "材料情形化配置:{\"scenario_name\":\"情形1\",\"is_need\":1,\"remark\":\"仅情形1需提供\"}")
    private String scenarioConfig;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdImplementListExcel.java
File was renamed from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/excel/GdImplementationListExcel.java
@@ -14,7 +14,7 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.excel;
package org.sxkj.gd.implement.excel;
import com.alibaba.excel.annotation.ExcelProperty;
@@ -27,73 +27,85 @@
/**
 * 实施清单表(实时清单管理) Excel实体类
 * 实施清单主表 Excel实体类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdImplementationListExcel implements Serializable {
public class GdImplementListExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 实施编码(唯一)
     * 事项名称
     */
    @ColumnWidth(20)
    @ExcelProperty("实施编码(唯一)")
    private String implementationCode;
    @ExcelProperty("事项名称")
    private String matterName;
    /**
     * 事项编码
     */
    @ColumnWidth(20)
    @ExcelProperty("事项编码")
    private String matterCode;
    /**
     * 所属区划编码
     */
    @ColumnWidth(20)
    @ExcelProperty("所属区划编码")
    private String areaCode;
    /**
     * 所属区划名称
     */
    @ColumnWidth(20)
    @ExcelProperty("所属区划名称")
    private String areaName;
    /**
     * 所属机构编码
     */
    @ColumnWidth(20)
    @ExcelProperty("所属机构编码")
    private String orgCode;
    /**
     * 所属机构名称
     */
    @ColumnWidth(20)
    @ExcelProperty("所属机构名称")
    private String orgName;
    /**
     * 目录编码
     */
    @ColumnWidth(20)
    @ExcelProperty("目录编码")
    private String catalogCode;
    /**
     * 实施编码
     */
    @ColumnWidth(20)
    @ExcelProperty("实施编码")
    private String implementCode;
    /**
     * 实施清单名称
     */
    @ColumnWidth(20)
    @ExcelProperty("实施清单名称")
    private String listName;
    private String implementName;
    /**
     * 所属区划
     * 流程定义主键
     */
    @ColumnWidth(20)
    @ExcelProperty("所属区划")
    private String belongArea;
    @ExcelProperty("流程定义主键")
    private String processDefinitionId;
    /**
     * 所属机构
     * 流程实例主键
     */
    @ColumnWidth(20)
    @ExcelProperty("所属机构")
    private String belongOrg;
    /**
     * 项目编码
     */
    @ColumnWidth(20)
    @ExcelProperty("项目编码")
    private String projectCode;
    /**
     * 材料数量
     */
    @ColumnWidth(20)
    @ExcelProperty("材料数量")
    private Integer materialQuantity;
    /**
     * 结果送达方式(短信方式等)
     */
    @ColumnWidth(20)
    @ExcelProperty("结果送达方式(短信方式等)")
    private String resultDeliveryMethod;
    /**
     * 受条件规则(已注册用户等)
     */
    @ColumnWidth(20)
    @ExcelProperty("受条件规则(已注册用户等)")
    private String acceptanceRules;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    @ExcelProperty("流程实例主键")
    private String processInstanceId;
    /**
     * 删除标志(0存在 1删除)
     */
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdMaterialExcel.java
New file
@@ -0,0 +1,80 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
/**
 * 材料信息表 Excel实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdMaterialExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 材料名称(列表展示字段)
     */
    @ColumnWidth(20)
    @ExcelProperty("材料名称(列表展示字段)")
    private String materialName;
    /**
     * 必要性:必填/可选/容缺
     */
    @ColumnWidth(20)
    @ExcelProperty("必要性:必填/可选/容缺")
    private String necessity;
    /**
     * 是否适用全部情形:1是 0否
     */
    @ColumnWidth(20)
    @ExcelProperty("是否适用全部情形:1是 0否")
    private Byte isAllScenario;
    /**
     * 材料说明
     */
    @ColumnWidth(20)
    @ExcelProperty("材料说明")
    private String materialDesc;
    /**
     * 区域编码
     */
    @ColumnWidth(20)
    @ExcelProperty("区域编码")
    private String areaCode;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/excel/GdThingListMaterialRelExcel.java
New file
@@ -0,0 +1,75 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
 * 实施清单-材料关联表(情形化配置) Excel实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class GdThingListMaterialRelExcel implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 关联实施清单ID
     */
    @ColumnWidth(20)
    @ExcelProperty("关联实施清单ID")
    private Long implementListId;
    /**
     * 关联材料ID
     */
    @ColumnWidth(20)
    @ExcelProperty("关联材料ID")
    private Long materialId;
    /**
     * 材料序号(列表展示字段)
     */
    @ColumnWidth(20)
    @ExcelProperty("材料序号(列表展示字段)")
    private Integer sort;
    /**
     * 材料情形化配置:{"scenario_name":"情形1","is_need":1,"remark":"仅情形1需提供"}
     */
    @ColumnWidth(20)
    @ExcelProperty("材料情形化配置:{\"scenario_name\":\"情形1\",\"is_need\":1,\"remark\":\"仅情形1需提供\"}")
    private String scenarioConfig;
    /**
     * 删除标志(0存在 1删除)
     */
    @ColumnWidth(20)
    @ExcelProperty("删除标志(0存在 1删除)")
    private Byte isDeleted;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.java
copy from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.java copy to drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.java
File was copied from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.java
@@ -14,11 +14,13 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.mapper;
package org.sxkj.gd.implement.mapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.dto.GdImplementListDTO;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,21 +28,21 @@
import java.util.List;
/**
 * 实施清单表(实时清单管理) Mapper 接口
 * 实施清单主表 Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface GdImplementationListMapper extends BaseMapper<GdImplementationListEntity> {
public interface GdImplementListMapper extends BaseMapper<GdImplementListEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdImplementList
     * @return
     */
    List<GdImplementationListVO> selectGdImplementationListPage(IPage page, GdImplementationListVO gdImplementationList);
    List<GdImplementListVO> selectGdImplementListPage(IPage page, GdImplementListPageParam gdImplementList);
    /**
@@ -49,6 +51,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(@Param("ew") Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdImplementListExcel> exportGdImplementList(@Param("ew") Wrapper<GdImplementListEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.xml
New file
@@ -0,0 +1,52 @@
<?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="org.sxkj.gd.implement.mapper.GdImplementListMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdImplementListResultMap" type="org.sxkj.gd.implement.vo.GdImplementListVO">
        <result column="id" property="id"/>
        <result column="matter_name" property="matterName"/>
        <result column="matter_code" property="matterCode"/>
        <result column="area_code" property="areaCode"/>
        <result column="area_name" property="areaName"/>
        <result column="org_code" property="orgCode"/>
        <result column="org_name" property="orgName"/>
        <result column="catalog_code" property="catalogCode"/>
        <result column="implement_code" property="implementCode"/>
        <result column="implement_name" property="implementName"/>
        <result column="process_definition_id" property="processDefinitionId"/>
        <result column="process_instance_id" property="processInstanceId"/>
    </resultMap>
    <select id="selectGdImplementListPage" resultMap="gdImplementListResultMap">
        select * from ja_gd_implement_list where is_deleted = 0
        <if test="param2.matterName != null and param2.matterName != ''">
            and matter_name like concat('%',#{param2.matterName},'%')
        </if>
        <if test="param2.matterCode != null and param2.matterCode != ''">
            and matter_code like concat('%',#{param2.matterCode},'%')
        </if>
        <if test="param2.areaCode != null and param2.areaCode != ''">
            and area_code like concat('%',#{param2.areaCode},'%')
        </if>
        <if test="param2.orgCode != null and param2.orgCode != ''">
            and org_code like concat('%',#{param2.orgCode},'%')
        </if>
        <if test="param2.catalogCode != null and param2.catalogCode != ''">
            and catalog_code like concat('%',#{param2.catalogCode},'%')
        </if>
        <if test="param2.deptList != null and param2.deptList.size > 0">
            AND create_dept in
            <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
                #{deptId}
            </foreach>
        </if>
    </select>
    <select id="exportGdImplementList" resultType="org.sxkj.gd.implement.excel.GdImplementListExcel">
        SELECT * FROM ja_gd_implement_list ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdMaterialMapper.java
File was renamed from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.java
@@ -14,11 +14,12 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.mapper;
package org.sxkj.gd.implement.mapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.dto.GdMaterialDTO;
import org.sxkj.gd.implement.entity.GdMaterialEntity;
import org.sxkj.gd.implement.vo.GdMaterialVO;
import org.sxkj.gd.implement.excel.GdMaterialExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,21 +27,21 @@
import java.util.List;
/**
 * 实施清单表(实时清单管理) Mapper 接口
 * 材料信息表 Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface GdImplementationListMapper extends BaseMapper<GdImplementationListEntity> {
public interface GdMaterialMapper extends BaseMapper<GdMaterialEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdMaterial
     * @return
     */
    List<GdImplementationListVO> selectGdImplementationListPage(IPage page, GdImplementationListVO gdImplementationList);
    List<GdMaterialVO> selectGdMaterialPage(IPage page, GdMaterialDTO gdMaterial);
    /**
@@ -49,6 +50,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(@Param("ew") Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdMaterialExcel> exportGdMaterial(@Param("ew") Wrapper<GdMaterialEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdMaterialMapper.xml
New file
@@ -0,0 +1,32 @@
<?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="org.sxkj.gd.implement.mapper.GdMaterialMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdMaterialResultMap" type="org.sxkj.gd.implement.vo.GdMaterialVO">
        <result column="id" property="id"/>
        <result column="material_name" property="materialName"/>
        <result column="necessity" property="necessity"/>
        <result column="is_all_scenario" property="isAllScenario"/>
        <result column="material_desc" property="materialDesc"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdMaterialPage" resultMap="gdMaterialResultMap">
        select * from ja_gd_material where is_deleted = 0
    </select>
    <select id="exportGdMaterial" resultType="org.sxkj.gd.implement.excel.GdMaterialExcel">
        SELECT * FROM ja_gd_material ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdThingListMaterialRelMapper.java
copy from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.java copy to drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdThingListMaterialRelMapper.java
File was copied from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.java
@@ -14,11 +14,11 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.mapper;
package org.sxkj.gd.implement.mapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import org.sxkj.gd.implement.vo.GdThingListMaterialRelVO;
import org.sxkj.gd.implement.excel.GdThingListMaterialRelExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,21 +26,21 @@
import java.util.List;
/**
 * 实施清单表(实时清单管理) Mapper 接口
 * 实施清单-材料关联表(情形化配置) Mapper 接口
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface GdImplementationListMapper extends BaseMapper<GdImplementationListEntity> {
public interface GdThingListMaterialRelMapper extends BaseMapper<GdThingListMaterialRelEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdThingListMaterialRel
     * @return
     */
    List<GdImplementationListVO> selectGdImplementationListPage(IPage page, GdImplementationListVO gdImplementationList);
    List<GdThingListMaterialRelVO> selectGdThingListMaterialRelPage(IPage page, GdThingListMaterialRelVO gdThingListMaterialRel);
    /**
@@ -49,6 +49,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(@Param("ew") Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdThingListMaterialRelExcel> exportGdThingListMaterialRel(@Param("ew") Wrapper<GdThingListMaterialRelEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdThingListMaterialRelMapper.xml
New file
@@ -0,0 +1,31 @@
<?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="org.sxkj.gd.implement.mapper.GdThingListMaterialRelMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="gdThingListMaterialRelResultMap" type="org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity">
        <result column="id" property="id"/>
        <result column="implement_list_id" property="implementListId"/>
        <result column="material_id" property="materialId"/>
        <result column="sort" property="sort"/>
        <result column="scenario_config" property="scenarioConfig"/>
        <result column="status" property="status"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectGdThingListMaterialRelPage" resultMap="gdThingListMaterialRelResultMap">
        select * from ja_gd_thing_list_material_rel where is_deleted = 0
    </select>
    <select id="exportGdThingListMaterialRel" resultType="org.sxkj.gd.implement.excel.GdThingListMaterialRelExcel">
        SELECT * FROM ja_gd_thing_list_material_rel ${ew.customSqlSegment}
    </select>
</mapper>
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/GdImplementListPageParam.java
New file
@@ -0,0 +1,39 @@
package org.sxkj.gd.implement.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * @Description TODO
 * @Author AIX
 * @Date 2026/1/31 11:07
 * @Version 1.0
 */
@Data
public class GdImplementListPageParam implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 事项名称
     */
    @ApiModelProperty(value = "事项名称")
    private String matterName;
    /**
     * 事项编码
     */
    @ApiModelProperty(value = "事项编码")
    private String matterCode;
    /**
     * 所属区划编码
     */
    @ApiModelProperty(value = "所属区划编码")
    private String areaCode;
    @ApiModelProperty(value = "部门集合",hidden = true)
    private List<Long> deptList;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdImplementListService.java
copy from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/IGdImplementationListService.java copy to drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdImplementListService.java
File was copied from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/IGdImplementationListService.java
@@ -14,31 +14,33 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.service;
package org.sxkj.gd.implement.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.dto.GdImplementListDTO;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 实施清单表(实时清单管理) 服务类
 * 实施清单主表 服务类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface IGdImplementationListService extends BaseService<GdImplementationListEntity> {
public interface IGdImplementListService extends BaseService<GdImplementListEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdImplementList
     * @return
     */
    IPage<GdImplementationListVO> selectGdImplementationListPage(IPage<GdImplementationListVO> page, GdImplementationListVO gdImplementationList);
    IPage<GdImplementListVO> selectGdImplementListPage(IPage<GdImplementListVO> page, GdImplementListPageParam gdImplementList);
    /**
@@ -47,6 +49,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdImplementListExcel> exportGdImplementList(Wrapper<GdImplementListEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdMaterialService.java
copy from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/IGdImplementationListService.java copy to drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdMaterialService.java
File was copied from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/IGdImplementationListService.java
@@ -14,31 +14,32 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.service;
package org.sxkj.gd.implement.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.dto.GdMaterialDTO;
import org.sxkj.gd.implement.entity.GdMaterialEntity;
import org.sxkj.gd.implement.vo.GdMaterialVO;
import org.sxkj.gd.implement.excel.GdMaterialExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 实施清单表(实时清单管理) 服务类
 * 材料信息表 服务类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface IGdImplementationListService extends BaseService<GdImplementationListEntity> {
public interface IGdMaterialService extends BaseService<GdMaterialEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdMaterial
     * @return
     */
    IPage<GdImplementationListVO> selectGdImplementationListPage(IPage<GdImplementationListVO> page, GdImplementationListVO gdImplementationList);
    IPage<GdMaterialVO> selectGdMaterialPage(IPage<GdMaterialVO> page, GdMaterialDTO gdMaterial);
    /**
@@ -47,6 +48,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdMaterialExcel> exportGdMaterial(Wrapper<GdMaterialEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdThingListMaterialRelService.java
File was renamed from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/IGdImplementationListService.java
@@ -14,31 +14,31 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.service;
package org.sxkj.gd.implement.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implementation.vo.GdImplementationListVO;
import org.sxkj.gd.implementation.excel.GdImplementationListExcel;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import org.sxkj.gd.implement.vo.GdThingListMaterialRelVO;
import org.sxkj.gd.implement.excel.GdThingListMaterialRelExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * 实施清单表(实时清单管理) 服务类
 * 实施清单-材料关联表(情形化配置) 服务类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
public interface IGdImplementationListService extends BaseService<GdImplementationListEntity> {
public interface IGdThingListMaterialRelService extends BaseService<GdThingListMaterialRelEntity> {
    /**
     * 自定义分页
     *
     * @param page
     * @param gdImplementationList
     * @param gdThingListMaterialRel
     * @return
     */
    IPage<GdImplementationListVO> selectGdImplementationListPage(IPage<GdImplementationListVO> page, GdImplementationListVO gdImplementationList);
    IPage<GdThingListMaterialRelVO> selectGdThingListMaterialRelPage(IPage<GdThingListMaterialRelVO> page, GdThingListMaterialRelVO gdThingListMaterialRel);
    /**
@@ -47,6 +47,6 @@
     * @param queryWrapper
     * @return
     */
    List<GdImplementationListExcel> exportGdImplementationList(Wrapper<GdImplementationListEntity> queryWrapper);
    List<GdThingListMaterialRelExcel> exportGdThingListMaterialRel(Wrapper<GdThingListMaterialRelEntity> queryWrapper);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdImplementListServiceImpl.java
New file
@@ -0,0 +1,60 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.stereotype.Service;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import org.sxkj.gd.implement.mapper.GdImplementListMapper;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.service.IGdImplementListService;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.system.cache.SysCache;
import java.util.List;
/**
 * 实施清单主表 服务实现类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Service
public class GdImplementListServiceImpl extends BaseServiceImpl<GdImplementListMapper, GdImplementListEntity> implements IGdImplementListService {
    @Override
    public IPage<GdImplementListVO> selectGdImplementListPage(IPage<GdImplementListVO> page, GdImplementListPageParam gdImplementList) {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        gdImplementList.setDeptList(deptList);
        return page.setRecords(baseMapper.selectGdImplementListPage(page, gdImplementList));
    }
    @Override
    public List<GdImplementListExcel> exportGdImplementList(Wrapper<GdImplementListEntity> queryWrapper) {
        List<GdImplementListExcel> gdImplementListList = baseMapper.exportGdImplementList(queryWrapper);
        //gdImplementListList.forEach(gdImplementList -> {
        //    gdImplementList.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdImplementList.getType()));
        //});
        return gdImplementListList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdMaterialServiceImpl.java
New file
@@ -0,0 +1,55 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.service.impl;
import org.sxkj.gd.implement.dto.GdMaterialDTO;
import org.sxkj.gd.implement.entity.GdMaterialEntity;
import org.sxkj.gd.implement.vo.GdMaterialVO;
import org.sxkj.gd.implement.excel.GdMaterialExcel;
import org.sxkj.gd.implement.mapper.GdMaterialMapper;
import org.sxkj.gd.implement.service.IGdMaterialService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 材料信息表 服务实现类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Service
public class GdMaterialServiceImpl extends BaseServiceImpl<GdMaterialMapper, GdMaterialEntity> implements IGdMaterialService {
    @Override
    public IPage<GdMaterialVO> selectGdMaterialPage(IPage<GdMaterialVO> page, GdMaterialDTO gdMaterial) {
        return page.setRecords(baseMapper.selectGdMaterialPage(page, gdMaterial));
    }
    @Override
    public List<GdMaterialExcel> exportGdMaterial(Wrapper<GdMaterialEntity> queryWrapper) {
        List<GdMaterialExcel> gdMaterialList = baseMapper.exportGdMaterial(queryWrapper);
        //gdMaterialList.forEach(gdMaterial -> {
        //    gdMaterial.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdMaterial.getType()));
        //});
        return gdMaterialList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdThingListMaterialRelServiceImpl.java
New file
@@ -0,0 +1,54 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.service.impl;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import org.sxkj.gd.implement.vo.GdThingListMaterialRelVO;
import org.sxkj.gd.implement.excel.GdThingListMaterialRelExcel;
import org.sxkj.gd.implement.mapper.GdThingListMaterialRelMapper;
import org.sxkj.gd.implement.service.IGdThingListMaterialRelService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
 * 实施清单-材料关联表(情形化配置) 服务实现类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Service
public class GdThingListMaterialRelServiceImpl extends BaseServiceImpl<GdThingListMaterialRelMapper, GdThingListMaterialRelEntity> implements IGdThingListMaterialRelService {
    @Override
    public IPage<GdThingListMaterialRelVO> selectGdThingListMaterialRelPage(IPage<GdThingListMaterialRelVO> page, GdThingListMaterialRelVO gdThingListMaterialRel) {
        return page.setRecords(baseMapper.selectGdThingListMaterialRelPage(page, gdThingListMaterialRel));
    }
    @Override
    public List<GdThingListMaterialRelExcel> exportGdThingListMaterialRel(Wrapper<GdThingListMaterialRelEntity> queryWrapper) {
        List<GdThingListMaterialRelExcel> gdThingListMaterialRelList = baseMapper.exportGdThingListMaterialRel(queryWrapper);
        //gdThingListMaterialRelList.forEach(gdThingListMaterialRel -> {
        //    gdThingListMaterialRel.setTypeName(DictCache.getValue(DictEnum.YES_NO, GdThingListMaterialRel.getType()));
        //});
        return gdThingListMaterialRelList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdImplementListVO.java
New file
@@ -0,0 +1,102 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * 实施清单主表 视图实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
public class GdImplementListVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 事项名称
     */
    @ApiModelProperty(value = "事项名称")
    private String matterName;
    /**
     * 事项编码
     */
    @ApiModelProperty(value = "事项编码")
    private String matterCode;
    /**
     * 所属区划编码
     */
    @ApiModelProperty(value = "所属区划编码")
    private String areaCode;
    /**
     * 所属区划名称
     */
    @ApiModelProperty(value = "所属区划名称")
    private String areaName;
    /**
     * 所属机构编码
     */
    @ApiModelProperty(value = "所属机构编码")
    private String orgCode;
    /**
     * 所属机构名称
     */
    @ApiModelProperty(value = "所属机构名称")
    private String orgName;
    /**
     * 目录编码
     */
    @ApiModelProperty(value = "目录编码")
    private String catalogCode;
    /**
     * 实施编码
     */
    @ApiModelProperty(value = "实施编码")
    private String implementCode;
    /**
     * 实施清单名称
     */
    @ApiModelProperty(value = "实施清单名称")
    private String implementName;
    /**
     * 流程定义主键
     */
    @ApiModelProperty(value = "流程定义主键")
    private String processDefinitionId;
    /**
     * 流程实例主键
     */
    @ApiModelProperty(value = "流程实例主键")
    private String processInstanceId;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdMaterialVO.java
New file
@@ -0,0 +1,69 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
 * 材料信息表 视图实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
public class GdMaterialVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 材料名称(列表展示字段)
     */
    @ApiModelProperty(value = "材料名称(列表展示字段)")
    private String materialName;
    /**
     * 必要性:必填/可选/容缺
     */
    @ApiModelProperty(value = "必要性:必填/可选/容缺")
    private String necessity;
    /**
     * 是否适用全部情形:1是 0否
     */
    @ApiModelProperty(value = "是否适用全部情形:1是 0否")
    private Byte isAllScenario;
    /**
     * 材料说明
     */
    @ApiModelProperty(value = "材料说明")
    private String materialDesc;
    /**
     * 区域编码
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GdThingListMaterialRelVO.java
File was renamed from drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/vo/GdImplementationListVO.java
@@ -14,23 +14,22 @@
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implementation.vo;
package org.sxkj.gd.implement.vo;
import java.io.Serializable;
import org.sxkj.gd.implementation.entity.GdImplementationListEntity;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 实施清单表(实时清单管理) 视图实体类
 * 实施清单-材料关联表(情形化配置) 视图实体类
 *
 * @author lw
 * @since 2026-01-14
 * @author Aix
 * @since 2026-01-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdImplementationListVO extends GdImplementationListEntity implements Serializable {
public class GdThingListMaterialRelVO extends GdThingListMaterialRelEntity {
    private static final long serialVersionUID = 1L;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdImplementListWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import java.util.Objects;
/**
 * 实施清单主表 包装类,返回视图层所需的字段
 *
 * @author Aix
 * @since 2026-01-31
 */
public class GdImplementListWrapper extends BaseEntityWrapper<GdImplementListEntity, GdImplementListVO>  {
    public static GdImplementListWrapper build() {
        return new GdImplementListWrapper();
     }
    @Override
    public GdImplementListVO entityVO(GdImplementListEntity gdImplementList) {
        GdImplementListVO gdImplementListVO = Objects.requireNonNull(BeanUtil.copy(gdImplementList, GdImplementListVO.class));
        //User createUser = UserCache.getUser(gdImplementList.getCreateUser());
        //User updateUser = UserCache.getUser(gdImplementList.getUpdateUser());
        //gdImplementListVO.setCreateUserName(createUser.getName());
        //gdImplementListVO.setUpdateUserName(updateUser.getName());
        return gdImplementListVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdMaterialWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.implement.entity.GdMaterialEntity;
import org.sxkj.gd.implement.vo.GdMaterialVO;
import java.util.Objects;
/**
 * 材料信息表 包装类,返回视图层所需的字段
 *
 * @author Aix
 * @since 2026-01-31
 */
public class GdMaterialWrapper extends BaseEntityWrapper<GdMaterialEntity, GdMaterialVO>  {
    public static GdMaterialWrapper build() {
        return new GdMaterialWrapper();
     }
    @Override
    public GdMaterialVO entityVO(GdMaterialEntity gdMaterial) {
        GdMaterialVO gdMaterialVO = Objects.requireNonNull(BeanUtil.copy(gdMaterial, GdMaterialVO.class));
        //User createUser = UserCache.getUser(gdMaterial.getCreateUser());
        //User updateUser = UserCache.getUser(gdMaterial.getUpdateUser());
        //gdMaterialVO.setCreateUserName(createUser.getName());
        //gdMaterialVO.setUpdateUserName(updateUser.getName());
        return gdMaterialVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/wrapper/GdThingListMaterialRelWrapper.java
New file
@@ -0,0 +1,50 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.sxkj.gd.implement.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
import org.sxkj.gd.implement.vo.GdThingListMaterialRelVO;
import java.util.Objects;
/**
 * 实施清单-材料关联表(情形化配置) 包装类,返回视图层所需的字段
 *
 * @author Aix
 * @since 2026-01-31
 */
public class GdThingListMaterialRelWrapper extends BaseEntityWrapper<GdThingListMaterialRelEntity, GdThingListMaterialRelVO>  {
    public static GdThingListMaterialRelWrapper build() {
        return new GdThingListMaterialRelWrapper();
     }
    @Override
    public GdThingListMaterialRelVO entityVO(GdThingListMaterialRelEntity gdThingListMaterialRel) {
        GdThingListMaterialRelVO gdThingListMaterialRelVO = Objects.requireNonNull(BeanUtil.copy(gdThingListMaterialRel, GdThingListMaterialRelVO.class));
        //User createUser = UserCache.getUser(gdThingListMaterialRel.getCreateUser());
        //User updateUser = UserCache.getUser(gdThingListMaterialRel.getUpdateUser());
        //gdThingListMaterialRelVO.setCreateUserName(createUser.getName());
        //gdThingListMaterialRelVO.setUpdateUserName(updateUser.getName());
        return gdThingListMaterialRelVO;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/controller/GdImplementationListController.java
File was deleted
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/entity/GdImplementationListEntity.java
File was deleted
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/mapper/GdImplementationListMapper.xml
File was deleted
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/service/impl/GdImplementationListServiceImpl.java
File was deleted
drone-service/drone-gd/src/main/java/org/sxkj/gd/implementation/wrapper/GdImplementationListWrapper.java
File was deleted
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdManageDeviceServiceImpl.java
@@ -113,6 +113,11 @@
        return total;
    }
    /**
     * 同步星图无人机设备并入库
     *
     * @return 新增或更新数量
     */
    private int syncPilotDevices() throws Exception {
        R response = jianXingtuApiService.getDevicePilotList(null);
        List<GdXingtuPilotListDTO> items = parseList(response, GdXingtuPilotListDTO.class);
@@ -132,6 +137,11 @@
        return count;
    }
    /**
     * 同步星图机巢设备并入库
     *
     * @return 新增或更新数量
     */
    private int syncAirportDevices() throws Exception {
        R response = jianXingtuApiService.getDeviceAirportList(null);
        List<GdXingtuAirportListDTO> items = parseList(response, GdXingtuAirportListDTO.class);
@@ -151,6 +161,12 @@
        return count;
    }
    /**
     * 按机场ID保存或更新设备信息
     *
     * @param entity 设备信息
     * @return 是否保存成功
     */
    private boolean saveOrUpdateByAirportId(GdManageDeviceEntity entity) throws Exception {
        if (StringUtil.isBlank(entity.getAirportId())) {
            return false;
@@ -173,6 +189,12 @@
        return saveOrUpdateDevice(entity);
    }
    /**
     * 从星图无人机数据构建设备实体
     *
     * @param item 星图无人机数据
     * @return 设备实体
     */
    private GdManageDeviceEntity buildFromPilot(GdXingtuPilotListDTO item) {
        if (item == null) {
            return null;
@@ -192,6 +214,12 @@
        return entity;
    }
    /**
     * 从星图机巢数据构建设备实体
     *
     * @param item 星图机巢数据
     * @return 设备实体
     */
    private GdManageDeviceEntity buildFromAirport(GdXingtuAirportListDTO item) {
        if (item == null) {
            return null;
@@ -212,6 +240,12 @@
        return entity;
    }
    /**
     * 将设备在线状态转换为模式码
     *
     * @param status 状态文本
     * @return 模式码
     */
    private Long parseModeCode(String status) {
        if ("在线".equals(status)) {
            return 0L;
@@ -222,6 +256,12 @@
        return null;
    }
    /**
     * 安全解析字符串为 Double
     *
     * @param value 字符串值
     * @return Double 或 null
     */
    private Double parseDouble(String value) {
        if (StringUtil.isBlank(value)) {
            return null;
@@ -233,6 +273,12 @@
        }
    }
    /**
     * 提取区域编码中的末级编码
     *
     * @param regionCode 区域编码
     * @return 末级区域编码
     */
    private String extractAreaCode(String regionCode) {
        if (StringUtil.isBlank(regionCode)) {
            return null;
@@ -249,6 +295,12 @@
        return regionCode;
    }
    /**
     * 解析保险信息并获取最新保险日期
     *
     * @param insuranceInfo 保险信息JSON
     * @return 保险日期
     */
    private Date parseInsuranceDate(String insuranceInfo) {
        if (StringUtil.isBlank(insuranceInfo)) {
            return null;
@@ -282,6 +334,13 @@
        }
    }
    /**
     * 解析星图接口返回的列表数据
     *
     * @param response 接口响应
     * @param clazz    目标类型
     * @return 列表数据
     */
    private <T> List<T> parseList(R response, Class<T> clazz) {
        if (response == null || !response.isSuccess() || response.getData() == null) {
            return Collections.emptyList();
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -480,6 +480,12 @@
    /**
     * 根据部门ID获取部门名称
     *
     * @param deptId 部门ID
     * @return 部门名称,缺失时返回"/"
     */
    private String getDeptName(Long deptId) {
        if (deptId == null) {
            return "/";
@@ -492,6 +498,12 @@
        return dept.getDeptName();
    }
    /**
     * 根据用户ID获取用户姓名
     *
     * @param userId 用户ID
     * @return 用户姓名,缺失时返回"/"
     */
    private String getUserName(Long userId) {
        if (userId == null) {
            return "/";
@@ -508,6 +520,13 @@
        return StringUtil.isBlank(realName) ? "/" : realName;
    }
    /**
     * 上传巡查报告并保存附件信息
     *
     * @param reportFile 报告文件
     * @param taskEntity 巡查任务
     * @return 是否保存成功
     */
    private boolean saveAttachFile(File reportFile, GdPatrolTaskEntity taskEntity) throws IOException {
        if (reportFile == null || !reportFile.exists()) {
            throw new RuntimeException("巡查报告文件不存在");
@@ -531,6 +550,16 @@
        return true;
    }
    /**
     * 构建附件元数据
     *
     * @param taskEntity  巡查任务
     * @param reportFile  报告文件
     * @param bladeFile   文件上传结果
     * @param resultType  结果类型
     * @param desiredName 期望文件名
     * @return 附件信息
     */
    private Attach buildAttachInfo(GdPatrolTaskEntity taskEntity, File reportFile, BladeFile bladeFile, Integer resultType, String desiredName) {
        Attach attach = new Attach();
        attach.setDomainUrl(bladeFile.getDomain());
@@ -562,6 +591,13 @@
        return attach;
    }
    /**
     * 生成报告附件名称
     *
     * @param taskEntity   巡查任务
     * @param fallbackName 兜底文件名
     * @return 附件名称
     */
    private String buildReportAttachName(GdPatrolTaskEntity taskEntity, String fallbackName) {
        String taskNo = taskEntity != null ? taskEntity.getTaskNo() : null;
        if (StringUtil.isBlank(taskNo)) {
@@ -570,6 +606,12 @@
        return taskNo + ".docx";
    }
    /**
     * 解析巡查任务类型为结果类型
     *
     * @param patrolTaskType 巡查任务类型
     * @return 结果类型
     */
    private Integer parseResultType(String patrolTaskType) {
        if (StringUtil.isBlank(patrolTaskType)) {
            return null;
@@ -644,40 +686,8 @@
            //     param.setAirportId(taskEntity.getAirportId());
            // }
        }
        String status = parseStatus(gdPatrolTaskVO.getTaskStatus());
        if (StringUtil.isNotBlank(status)) {
            param.setStatus(status);
        }
        param.setTaskType("定时执行");
        param.setStatus("待执行");
        param.setTaskType("航线飞行");
        return param;
    }
    private String parseStatus(String taskStatus) {
        if (StringUtil.isBlank(taskStatus)) {
            return null;
        }
        switch (taskStatus) {
            case "0":
                return "待签收";
            case "1":
                return "拒绝签收";
            case "2":
                return "已撤回";
            case "3":
                return "待审核";
            case "4":
                return "审核驳回";
            case "5":
                return "审核通过";
            case "6":
                return "待验收";
            case "7":
                return "拒绝验收";
            case "8":
                return "验收通过";
            default:
                return taskStatus;
        }
    }
}