吉安感知网项目-后端
xiebin
2026-01-31 be976b400e96db62099960402aac12d47b4f94b5
add-实施清单管理-配置材料关联、流程关联
6 files modified
2 files added
325 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdImplementListController.java 58 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdThingListMaterialRelDTO.java 38 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/mapper/GdImplementListMapper.java 12 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/GdImplementListPageParam.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/ThingListMaterialRelationParam.java 42 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdImplementListService.java 28 ●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdImplementListServiceImpl.java 84 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GetThingListMaterialRelationVO.java 61 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/controller/GdImplementListController.java
@@ -16,38 +16,40 @@
 */
package org.sxkj.gd.implement.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
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.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.DateUtil;
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.param.GdImplementListPageParam;
import org.sxkj.gd.implement.param.ThingListMaterialRelationParam;
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 org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.vo.GetThingListMaterialRelationVO;
import org.sxkj.gd.implement.wrapper.GdImplementListWrapper;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
 * 实施清单主表 控制器
@@ -92,17 +94,37 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入gdImplementList")
    public R submit(@Valid @RequestBody GdImplementListDTO gdImplementList) {
    public R<Boolean> submit(@Valid @RequestBody GdImplementListDTO gdImplementList) {
        return R.status(gdImplementListService.saveOrUpdate(GenericConverter.convert(gdImplementList, GdImplementListEntity.class)));
    }
    /**
     * 查询实施清单-材料关联、流程关联
     */
    @GetMapping("/getThingListMaterialRelation")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "查询配置实施清单-材料关联、流程关联", notes = "传入gdImplementList")
    public R<GetThingListMaterialRelationVO> getThingListMaterialRelation(IdParam idParam) {
        return R.data(gdImplementListService.getThingListMaterialRelation(idParam));
    }
    /**
     * 实施清单-材料关联、流程关联
     */
    @PostMapping("/thingListMaterialRelation")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "配置实施清单-材料关联、流程关联", notes = "传入gdImplementList")
    public R<Boolean> thingListMaterialRelation(@Valid @RequestBody ThingListMaterialRelationParam param) {
        return R.status(gdImplementListService.thingListMaterialRelation(param));
    }
    /**
     * 实施清单主表 删除
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
    public R<Boolean> remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(gdImplementListService.deleteLogic(Func.toLongList(ids)));
    }
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/dto/GdThingListMaterialRelDTO.java
@@ -16,9 +16,16 @@
 */
package org.sxkj.gd.implement.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
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.GdThingListMaterialRelEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * 实施清单-材料关联表(情形化配置) 数据传输对象实体类
@@ -27,8 +34,35 @@
 * @since 2026-01-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class GdThingListMaterialRelDTO extends GdThingListMaterialRelEntity {
public class GdThingListMaterialRelDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 关联实施清单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/mapper/GdImplementListMapper.java
@@ -16,15 +16,15 @@
 */
package org.sxkj.gd.implement.mapper;
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.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import java.util.List;
/**
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/GdImplementListPageParam.java
@@ -7,7 +7,7 @@
import java.util.List;
/**
 * @Description TODO
 * @Description 实施清单查询相关
 * @Author AIX
 * @Date 2026/1/31 11:07
 * @Version 1.0
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/param/ThingListMaterialRelationParam.java
New file
@@ -0,0 +1,42 @@
package org.sxkj.gd.implement.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * @Description 实施清单-材料关联、流程关联相关
 * @Author AIX
 * @Date 2026/1/31 16:04
 * @Version 1.0
 */
@Data
public class ThingListMaterialRelationParam implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 关联实施清单ID
     */
    @ApiModelProperty(value = "关联实施清单ID")
    private Long implementListId;
    /**
     * 关联材料ID
     */
    @ApiModelProperty(value = "关联材料ids")
    private List<Long> materialIds;
    /**
     * 流程定义主键
     */
    @ApiModelProperty(value = "流程定义主键")
    private String processDefinitionId;
    /**
     * 流程实例主键
     */
    @ApiModelProperty(value = "流程实例主键")
    private String processInstanceId;
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/IGdImplementListService.java
@@ -17,13 +17,16 @@
package org.sxkj.gd.implement.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
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 org.sxkj.gd.common.IdParam;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.excel.GdImplementListExcel;
import org.sxkj.gd.implement.param.GdImplementListPageParam;
import org.sxkj.gd.implement.param.ThingListMaterialRelationParam;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.vo.GetThingListMaterialRelationVO;
import java.util.List;
/**
@@ -42,6 +45,21 @@
     */
    IPage<GdImplementListVO> selectGdImplementListPage(IPage<GdImplementListVO> page, GdImplementListPageParam gdImplementList);
    /**
     * 获取实施清单-材料关联、流程关联
     *
     * @param idParam 实施清单ID
     * @return  实施清单-材料关联、流程关联
     */
    GetThingListMaterialRelationVO getThingListMaterialRelation(IdParam idParam);
    /**
     * 事项清单-材料关联、流程关联
     *
     * @param param 事项清单-材料关联、流程关联参数
     * @return  boolean
     */
    boolean thingListMaterialRelation(ThingListMaterialRelationParam param);
    /**
     * 导出数据
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/service/impl/GdImplementListServiceImpl.java
@@ -17,18 +17,32 @@
package org.sxkj.gd.implement.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.sxkj.gd.common.GenericConverter;
import org.sxkj.gd.common.IdParam;
import org.sxkj.gd.implement.entity.GdImplementListEntity;
import org.sxkj.gd.implement.entity.GdThingListMaterialRelEntity;
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.param.ThingListMaterialRelationParam;
import org.sxkj.gd.implement.service.IGdImplementListService;
import org.sxkj.gd.implement.service.IGdThingListMaterialRelService;
import org.sxkj.gd.implement.vo.GdImplementListVO;
import org.sxkj.gd.implement.vo.GetThingListMaterialRelationVO;
import org.sxkj.gd.implement.wrapper.GdThingListMaterialRelWrapper;
import org.sxkj.system.cache.SysCache;
import java.util.ArrayList;
import java.util.List;
/**
@@ -38,7 +52,10 @@
 * @since 2026-01-31
 */
@Service
@AllArgsConstructor
public class GdImplementListServiceImpl extends BaseServiceImpl<GdImplementListMapper, GdImplementListEntity> implements IGdImplementListService {
    private final IGdThingListMaterialRelService gdThingListMaterialRelService;
    @Override
    public IPage<GdImplementListVO> selectGdImplementListPage(IPage<GdImplementListVO> page, GdImplementListPageParam gdImplementList) {
@@ -47,6 +64,52 @@
        return page.setRecords(baseMapper.selectGdImplementListPage(page, gdImplementList));
    }
    @Override
    public GetThingListMaterialRelationVO getThingListMaterialRelation(IdParam idParam) {
        GetThingListMaterialRelationVO getThingListMaterialRelationVO = GenericConverter.convert(
            getOne(Condition.getQueryWrapper(GenericConverter.convert(idParam, GdImplementListEntity.class))), GetThingListMaterialRelationVO.class);
        List<GdThingListMaterialRelEntity> gdThingListMaterialRelEntityList = gdThingListMaterialRelService.list(
            Wrappers.<GdThingListMaterialRelEntity>query()
                .lambda().eq(GdThingListMaterialRelEntity::getImplementListId, idParam.getId()));
        getThingListMaterialRelationVO.setThingListMaterialRels(GdThingListMaterialRelWrapper.build().listVO(gdThingListMaterialRelEntityList));
        return getThingListMaterialRelationVO;
    }
    @Override
    @Transactional
    public boolean thingListMaterialRelation(ThingListMaterialRelationParam param) {
        if (null != param.getImplementListId()) {
            // 关联关系先删除,在新增
            boolean implementListId = gdThingListMaterialRelService.remove(
                new QueryWrapper<GdThingListMaterialRelEntity>()
                    .eq("implement_list_id", param.getImplementListId()));
            // 删除失败,返回false
            if (!implementListId) {
                return false;
            }
            List<GdThingListMaterialRelEntity> gdThingListMaterialRelEntityList = getGdThingListMaterialRelEntities(param);
            // 批量新增材料关联关系
            gdThingListMaterialRelService.saveBatch(gdThingListMaterialRelEntityList);
            // 保存流程关联关系
            GdImplementListEntity gdImplementList = new GdImplementListEntity();
            gdImplementList.setId(param.getImplementListId());
            gdImplementList.setProcessDefinitionId(param.getProcessDefinitionId());
            gdImplementList.setProcessInstanceId(param.getProcessInstanceId());
            updateById(gdImplementList);
            return true;
        }
        return false;
    }
    @Override
    public List<GdImplementListExcel> exportGdImplementList(Wrapper<GdImplementListEntity> queryWrapper) {
@@ -57,4 +120,25 @@
        return gdImplementListList;
    }
    /**
     * 获取材料关联关系(对象转换)
     * @param param 材料关联关系参数
     * @return 材料关联关系
     */
    @NotNull
    private static List<GdThingListMaterialRelEntity> getGdThingListMaterialRelEntities(ThingListMaterialRelationParam param) {
        List<GdThingListMaterialRelEntity> gdThingListMaterialRelEntityList = new ArrayList<>();
        int index = 0;
        for (Long materialId : param.getMaterialIds()) {
            GdThingListMaterialRelEntity gdThingListMaterialRelEntity = new GdThingListMaterialRelEntity();
            gdThingListMaterialRelEntity.setImplementListId(param.getImplementListId());
            gdThingListMaterialRelEntity.setMaterialId(materialId);
            gdThingListMaterialRelEntity.setSort(index);
            index += 1;
            gdThingListMaterialRelEntityList.add(gdThingListMaterialRelEntity);
        }
        return gdThingListMaterialRelEntityList;
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/implement/vo/GetThingListMaterialRelationVO.java
New file
@@ -0,0 +1,61 @@
/*
 *      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;
import java.util.List;
/**
 * 实施清单主表 视图实体类
 *
 * @author Aix
 * @since 2026-01-31
 */
@Data
public class GetThingListMaterialRelationVO implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonSerialize(
        using = ToStringSerializer.class
    )
    @ApiModelProperty("主键id")
    private Long id;
    /**
     * 流程定义主键
     */
    @ApiModelProperty(value = "流程定义主键")
    private String processDefinitionId;
    /**
     * 流程实例主键
     */
    @ApiModelProperty(value = "流程实例主键")
    private String processInstanceId;
    /**
     * 关联材料ID
     */
    @ApiModelProperty(value = "关联材料ids")
    private List<GdThingListMaterialRelVO> thingListMaterialRels;
}