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; }