[add] 添加设计原则,业主需求请求,设计变更,联系单变更、签证审批
This commit is contained in:
		@ -1,26 +1,27 @@
 | 
			
		||||
package org.dromara.cory.controller;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import jakarta.validation.constraints.*;
 | 
			
		||||
import cn.dev33.satoken.annotation.SaCheckPermission;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
 | 
			
		||||
import org.dromara.common.log.annotation.Log;
 | 
			
		||||
import org.dromara.common.web.core.BaseController;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import jakarta.validation.constraints.NotEmpty;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.dromara.common.core.domain.R;
 | 
			
		||||
import org.dromara.common.core.validate.AddGroup;
 | 
			
		||||
import org.dromara.common.core.validate.EditGroup;
 | 
			
		||||
import org.dromara.common.log.enums.BusinessType;
 | 
			
		||||
import org.dromara.common.excel.utils.ExcelUtil;
 | 
			
		||||
import org.dromara.cory.domain.vo.BusContactnoticeVo;
 | 
			
		||||
import org.dromara.cory.domain.bo.BusContactnoticeBo;
 | 
			
		||||
import org.dromara.cory.service.IBusContactnoticeService;
 | 
			
		||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
 | 
			
		||||
import org.dromara.common.log.annotation.Log;
 | 
			
		||||
import org.dromara.common.log.enums.BusinessType;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.common.web.core.BaseController;
 | 
			
		||||
import org.dromara.cory.domain.bo.BusContactnoticeBo;
 | 
			
		||||
import org.dromara.cory.domain.vo.BusContactnoticeVo;
 | 
			
		||||
import org.dromara.cory.service.IBusContactnoticeService;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 联系单
 | 
			
		||||
@ -64,7 +65,7 @@ public class BusContactnoticeController extends BaseController {
 | 
			
		||||
    @SaCheckPermission("cory:contactnotice:query")
 | 
			
		||||
    @GetMapping("/{id}")
 | 
			
		||||
    public R<BusContactnoticeVo> getInfo(@NotNull(message = "主键不能为空")
 | 
			
		||||
                                     @PathVariable Long id) {
 | 
			
		||||
                                         @PathVariable Long id) {
 | 
			
		||||
        return R.ok(busContactnoticeService.queryById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -75,8 +76,8 @@ public class BusContactnoticeController extends BaseController {
 | 
			
		||||
    @Log(title = "联系单", businessType = BusinessType.INSERT)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PostMapping()
 | 
			
		||||
    public R<Void> add(@Validated(AddGroup.class) @RequestBody BusContactnoticeBo bo) {
 | 
			
		||||
        return toAjax(busContactnoticeService.insertByBo(bo));
 | 
			
		||||
    public R<BusContactnoticeVo> add(@Validated(AddGroup.class) @RequestBody BusContactnoticeBo bo) {
 | 
			
		||||
        return R.ok(busContactnoticeService.insertByBo(bo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -86,8 +87,8 @@ public class BusContactnoticeController extends BaseController {
 | 
			
		||||
    @Log(title = "联系单", businessType = BusinessType.UPDATE)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PutMapping()
 | 
			
		||||
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusContactnoticeBo bo) {
 | 
			
		||||
        return toAjax(busContactnoticeService.updateByBo(bo));
 | 
			
		||||
    public R<BusContactnoticeVo> edit(@Validated(EditGroup.class) @RequestBody BusContactnoticeBo bo) {
 | 
			
		||||
        return R.ok(busContactnoticeService.updateByBo(bo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
package org.dromara.cory.domain;
 | 
			
		||||
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.*;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
@ -47,5 +48,9 @@ public class BusContactnotice extends BaseEntity {
 | 
			
		||||
     */
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 状态
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
package org.dromara.cory.service;
 | 
			
		||||
 | 
			
		||||
import org.dromara.cory.domain.vo.BusContactnoticeVo;
 | 
			
		||||
import org.dromara.cory.domain.bo.BusContactnoticeBo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.cory.domain.bo.BusContactnoticeBo;
 | 
			
		||||
import org.dromara.cory.domain.vo.BusContactnoticeVo;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
@ -47,7 +47,7 @@ public interface IBusContactnoticeService {
 | 
			
		||||
     * @param bo 联系单
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean insertByBo(BusContactnoticeBo bo);
 | 
			
		||||
    BusContactnoticeVo insertByBo(BusContactnoticeBo bo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改联系单
 | 
			
		||||
@ -55,7 +55,7 @@ public interface IBusContactnoticeService {
 | 
			
		||||
     * @param bo 联系单
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean updateByBo(BusContactnoticeBo bo);
 | 
			
		||||
    BusContactnoticeVo updateByBo(BusContactnoticeBo bo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验并批量删除联系单信息
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,18 @@
 | 
			
		||||
package org.dromara.cory.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.convert.Convert;
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.dromara.common.core.constant.HttpStatus;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
 | 
			
		||||
import org.dromara.common.core.enums.BusinessStatusEnum;
 | 
			
		||||
import org.dromara.common.core.exception.ServiceException;
 | 
			
		||||
import org.dromara.common.core.utils.MapstructUtils;
 | 
			
		||||
import org.dromara.common.core.utils.ObjectUtils;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
@ -13,9 +22,12 @@ import org.dromara.cory.domain.bo.BusContactnoticeBo;
 | 
			
		||||
import org.dromara.cory.domain.vo.BusContactnoticeVo;
 | 
			
		||||
import org.dromara.cory.mapper.BusContactnoticeMapper;
 | 
			
		||||
import org.dromara.cory.service.IBusContactnoticeService;
 | 
			
		||||
import org.springframework.context.event.EventListener;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@ -25,6 +37,7 @@ import java.util.Map;
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-03
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
@Service
 | 
			
		||||
public class BusContactnoticeServiceImpl implements IBusContactnoticeService {
 | 
			
		||||
@ -85,10 +98,17 @@ public class BusContactnoticeServiceImpl implements IBusContactnoticeService {
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean insertByBo(BusContactnoticeBo bo) {
 | 
			
		||||
    public BusContactnoticeVo insertByBo(BusContactnoticeBo bo) {
 | 
			
		||||
        BusContactnotice add = MapstructUtils.convert(bo, BusContactnotice.class);
 | 
			
		||||
        if (add == null) {
 | 
			
		||||
            throw new ServiceException("新增联系单失败,请求参数为空", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        validEntityBeforeSave(add);
 | 
			
		||||
        return baseMapper.insert(add) > 0;
 | 
			
		||||
        int insert = baseMapper.insert(add);
 | 
			
		||||
        if (insert <= 0) {
 | 
			
		||||
            throw new ServiceException("新增联系单失败,请稍后重试", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return this.queryById(add.getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -98,10 +118,21 @@ public class BusContactnoticeServiceImpl implements IBusContactnoticeService {
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean updateByBo(BusContactnoticeBo bo) {
 | 
			
		||||
    public BusContactnoticeVo updateByBo(BusContactnoticeBo bo) {
 | 
			
		||||
        BusContactnotice update = MapstructUtils.convert(bo, BusContactnotice.class);
 | 
			
		||||
        if (update == null) {
 | 
			
		||||
            throw new ServiceException("修改联系单失败,请求参数为空", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        validEntityBeforeSave(update);
 | 
			
		||||
        return baseMapper.updateById(update) > 0;
 | 
			
		||||
        BusContactnotice busContactnotice = baseMapper.selectById(update.getId());
 | 
			
		||||
        if (busContactnotice == null) {
 | 
			
		||||
            throw new ServiceException("修改联系单失败,数据不存在", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        int result = baseMapper.updateById(update);
 | 
			
		||||
        if (result <= 0) {
 | 
			
		||||
            throw new ServiceException("修改联系单失败,请稍后重试", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return this.queryById(update.getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -125,4 +156,55 @@ public class BusContactnoticeServiceImpl implements IBusContactnoticeService {
 | 
			
		||||
        }
 | 
			
		||||
        return baseMapper.deleteByIds(ids) > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
 | 
			
		||||
     * 正常使用只需#processEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processEvent.flowCode.endsWith('contact')")
 | 
			
		||||
    public void processHandler(ProcessEvent processEvent) {
 | 
			
		||||
        log.info("联系单审核任务执行了{}", processEvent.toString());
 | 
			
		||||
        BusContactnotice contactnotice = baseMapper.selectById(Convert.toLong(processEvent.getBusinessId()));
 | 
			
		||||
        contactnotice.setStatus(processEvent.getStatus());
 | 
			
		||||
        if (processEvent.getSubmit()) {
 | 
			
		||||
            contactnotice.setStatus(BusinessStatusEnum.WAITING.getStatus());
 | 
			
		||||
        }
 | 
			
		||||
        baseMapper.updateById(contactnotice);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行任务创建监听
 | 
			
		||||
     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
 | 
			
		||||
     * 在方法中判断流程节点key
 | 
			
		||||
     * if ("xxx".equals(processTaskEvent.getNodeCode())) {
 | 
			
		||||
     * //执行业务逻辑
 | 
			
		||||
     * }
 | 
			
		||||
     *
 | 
			
		||||
     * @param processTaskEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.flowCode.endsWith('contact')")
 | 
			
		||||
    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
 | 
			
		||||
        log.info("联系单审核任务创建了{}", processTaskEvent.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 监听删除流程事件
 | 
			
		||||
     * 正常使用只需#processDeleteEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processDeleteEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @Transactional
 | 
			
		||||
    @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('contact')")
 | 
			
		||||
    public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
 | 
			
		||||
        log.info("监听删除流程事件,联系单审核任务执行了{}", processDeleteEvent.toString());
 | 
			
		||||
        BusContactnotice contactnotice = baseMapper.selectById(Convert.toLong(processDeleteEvent.getBusinessId()));
 | 
			
		||||
        if (ObjectUtil.isNull(contactnotice)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        this.deleteWithValidByIds(Collections.singleton(contactnotice.getId()), true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -77,7 +77,7 @@ public class DesDesignChangeController extends BaseController {
 | 
			
		||||
    @Log(title = "设计变更管理", businessType = BusinessType.INSERT)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PostMapping()
 | 
			
		||||
    public R<Long> add(@Validated(AddGroup.class) @RequestBody DesDesignChangeCreateReq req) {
 | 
			
		||||
    public R<DesDesignChangeVo> add(@Validated(AddGroup.class) @RequestBody DesDesignChangeCreateReq req) {
 | 
			
		||||
        return R.ok(desDesignChangeService.insertByBo(req));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -88,8 +88,8 @@ public class DesDesignChangeController extends BaseController {
 | 
			
		||||
    @Log(title = "设计变更管理", businessType = BusinessType.UPDATE)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PutMapping()
 | 
			
		||||
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody DesDesignChangeUpdateReq req) {
 | 
			
		||||
        return toAjax(desDesignChangeService.updateByBo(req));
 | 
			
		||||
    public R<DesDesignChangeVo> edit(@Validated(EditGroup.class) @RequestBody DesDesignChangeUpdateReq req) {
 | 
			
		||||
        return R.ok(desDesignChangeService.updateByBo(req));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -96,8 +96,8 @@ public class DesTechnicalStandardController extends BaseController {
 | 
			
		||||
    @Log(title = "技术标准管理", businessType = BusinessType.INSERT)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PostMapping("/file")
 | 
			
		||||
    public R<Void> add(@RequestPart("file") MultipartFile file, DesTechnicalStandardFileCreateReq req) {
 | 
			
		||||
        return toAjax(desTechnicalStandardService.insertFile(file, req));
 | 
			
		||||
    public R<DesTechnicalStandardVo> add(@RequestPart("file") MultipartFile file, DesTechnicalStandardFileCreateReq req) {
 | 
			
		||||
        return R.ok(desTechnicalStandardService.insertFile(file, req));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -107,8 +107,8 @@ public class DesTechnicalStandardController extends BaseController {
 | 
			
		||||
    @Log(title = "技术标准管理", businessType = BusinessType.UPDATE)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PutMapping("/file")
 | 
			
		||||
    public R<Void> edit(@RequestBody DesTechnicalStandardFileUpdateReq req) {
 | 
			
		||||
        return toAjax(desTechnicalStandardService.updateFile(req));
 | 
			
		||||
    public R<DesTechnicalStandardVo> edit(@RequestBody DesTechnicalStandardFileUpdateReq req) {
 | 
			
		||||
        return R.ok(desTechnicalStandardService.updateFile(req));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -74,6 +74,11 @@ public class DesTechnicalStandard extends BaseEntity {
 | 
			
		||||
     */
 | 
			
		||||
    private String originalName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 审核状态
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ import org.dromara.design.domain.DesTechnicalStandard;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -76,4 +77,14 @@ public class DesTechnicalStandardVo implements Serializable {
 | 
			
		||||
     */
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 审核状态
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建时间
 | 
			
		||||
     */
 | 
			
		||||
    private Date createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ public interface IDesDesignChangeService extends IService<DesDesignChange> {
 | 
			
		||||
     * @param req 设计变更管理
 | 
			
		||||
     * @return 新增设计变更管理主键id
 | 
			
		||||
     */
 | 
			
		||||
    Long insertByBo(DesDesignChangeCreateReq req);
 | 
			
		||||
    DesDesignChangeVo insertByBo(DesDesignChangeCreateReq req);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改设计变更管理
 | 
			
		||||
@ -69,7 +69,7 @@ public interface IDesDesignChangeService extends IService<DesDesignChange> {
 | 
			
		||||
     * @param req 设计变更管理
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean updateByBo(DesDesignChangeUpdateReq req);
 | 
			
		||||
    DesDesignChangeVo updateByBo(DesDesignChangeUpdateReq req);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验并批量删除设计变更管理信息
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ public interface IDesTechnicalStandardService extends IService<DesTechnicalStand
 | 
			
		||||
     * @param req  技术标准管理
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean insertFile(MultipartFile file, DesTechnicalStandardFileCreateReq req);
 | 
			
		||||
    DesTechnicalStandardVo insertFile(MultipartFile file, DesTechnicalStandardFileCreateReq req);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增技术标准管理文件夹
 | 
			
		||||
@ -91,7 +91,7 @@ public interface IDesTechnicalStandardService extends IService<DesTechnicalStand
 | 
			
		||||
     * @param req 技术标准管理
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean updateFile(DesTechnicalStandardFileUpdateReq req);
 | 
			
		||||
    DesTechnicalStandardVo updateFile(DesTechnicalStandardFileUpdateReq req);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除技术标准管理文件信息
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,9 @@
 | 
			
		||||
package org.dromara.design.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.convert.Convert;
 | 
			
		||||
import cn.hutool.core.date.DateUtil;
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
@ -11,6 +13,10 @@ import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 | 
			
		||||
import org.apache.poi.xwpf.usermodel.*;
 | 
			
		||||
import org.dromara.common.core.constant.HttpStatus;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
 | 
			
		||||
import org.dromara.common.core.enums.BusinessStatusEnum;
 | 
			
		||||
import org.dromara.common.core.exception.ServiceException;
 | 
			
		||||
import org.dromara.common.core.utils.ObjectUtils;
 | 
			
		||||
import org.dromara.common.core.utils.StringUtils;
 | 
			
		||||
@ -33,6 +39,7 @@ import org.dromara.project.service.IBusProjectService;
 | 
			
		||||
import org.dromara.system.domain.vo.SysOssVo;
 | 
			
		||||
import org.dromara.system.service.ISysOssService;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.context.event.EventListener;
 | 
			
		||||
import org.springframework.http.MediaType;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
@ -46,6 +53,7 @@ import java.nio.file.Paths;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.function.Function;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
import java.util.zip.ZipOutputStream;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -114,7 +122,10 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
    public void exportWordById(Long id, HttpServletResponse response) {
 | 
			
		||||
        DesDesignChange designChange = this.getById(id);
 | 
			
		||||
        if (designChange == null) {
 | 
			
		||||
            throw new ServiceException("质量-检查工单不存在");
 | 
			
		||||
            throw new ServiceException("设计变更单不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
        if (!designChange.getStatus().equals(BusinessStatusEnum.FINISH.getStatus())) {
 | 
			
		||||
            throw new ServiceException("当前设计变更单审核未完成,无法下载", HttpStatus.CONFLICT);
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, String> replacementMap = getReplacementMap(designChange);
 | 
			
		||||
        Path targetDir = Paths.get(DesDesignConstant.getDesignChangeFileUrl(designChange));
 | 
			
		||||
@ -182,15 +193,15 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
     * @return 新增设计变更管理主键id
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long insertByBo(DesDesignChangeCreateReq req) {
 | 
			
		||||
    public DesDesignChangeVo insertByBo(DesDesignChangeCreateReq req) {
 | 
			
		||||
        DesDesignChange entity = new DesDesignChange();
 | 
			
		||||
        BeanUtils.copyProperties(req, entity);
 | 
			
		||||
        validEntityBeforeSave(entity, true);
 | 
			
		||||
        boolean save = this.save(entity);
 | 
			
		||||
        if (!save) {
 | 
			
		||||
            throw new ServiceException("新增设计变更失败", HttpStatus.ERROR);
 | 
			
		||||
            throw new ServiceException("新增设计变更单失败", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return entity.getId();
 | 
			
		||||
        return this.getVo(this.getById(entity.getId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -200,15 +211,19 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean updateByBo(DesDesignChangeUpdateReq req) {
 | 
			
		||||
    public DesDesignChangeVo updateByBo(DesDesignChangeUpdateReq req) {
 | 
			
		||||
        DesDesignChange oldDesignChange = this.getById(req.getId());
 | 
			
		||||
        if (oldDesignChange == null) {
 | 
			
		||||
            throw new ServiceException("设计变更单不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
        DesDesignChange entity = new DesDesignChange();
 | 
			
		||||
        BeanUtils.copyProperties(req, entity);
 | 
			
		||||
        validEntityBeforeSave(entity, false);
 | 
			
		||||
        boolean result = this.updateById(entity);
 | 
			
		||||
        if (!result) {
 | 
			
		||||
            throw new ServiceException("修改设计变更失败", HttpStatus.ERROR);
 | 
			
		||||
            throw new ServiceException("修改设计变更单失败", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
        return this.getVo(this.getById(entity.getId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -236,6 +251,39 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public Boolean deleteByIds(Collection<Long> ids) {
 | 
			
		||||
        List<DesDesignChange> designChangeList = this.listByIds(ids);
 | 
			
		||||
        if (CollUtil.isEmpty(designChangeList)) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        // 关联删除附件
 | 
			
		||||
        List<Long> fileIdList = designChangeList.stream()
 | 
			
		||||
            .map(DesDesignChange::getFileId)
 | 
			
		||||
            .filter(Objects::nonNull)
 | 
			
		||||
            .map(Long::parseLong)
 | 
			
		||||
            .toList();
 | 
			
		||||
        List<Long> picList = designChangeList.stream()
 | 
			
		||||
            .map(DesDesignChange::getAttachmentPic)
 | 
			
		||||
            .filter(Objects::nonNull)
 | 
			
		||||
            .flatMap(s -> Arrays.stream(s.split(",")))
 | 
			
		||||
            .map(String::trim)
 | 
			
		||||
            .filter(s -> !s.isEmpty())
 | 
			
		||||
            .map(Long::parseLong)
 | 
			
		||||
            .toList();
 | 
			
		||||
        List<Long> costEstimationFileIdList = designChangeList.stream()
 | 
			
		||||
            .map(DesDesignChange::getCostEstimationFile)
 | 
			
		||||
            .filter(Objects::nonNull)
 | 
			
		||||
            .flatMap(s -> Arrays.stream(s.split(",")))
 | 
			
		||||
            .map(String::trim)
 | 
			
		||||
            .filter(s -> !s.isEmpty())
 | 
			
		||||
            .map(Long::parseLong)
 | 
			
		||||
            .toList();
 | 
			
		||||
        List<Long> ossIdList = Stream.of(fileIdList, picList, costEstimationFileIdList)
 | 
			
		||||
            .flatMap(Collection::stream)
 | 
			
		||||
            .distinct()
 | 
			
		||||
            .toList();
 | 
			
		||||
        if (CollUtil.isNotEmpty(ossIdList)) {
 | 
			
		||||
            ossService.deleteWithValidByIds(ossIdList, true);
 | 
			
		||||
        }
 | 
			
		||||
        return removeBatchByIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -364,7 +412,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
        if (CollUtil.isEmpty(designChangeList)) {
 | 
			
		||||
            return designChangeVoPage;
 | 
			
		||||
        }
 | 
			
		||||
        Set<Long> ossIdList = designChangeList.stream().map(DesDesignChange::getFileId).map(Long::parseLong).collect(Collectors.toSet());
 | 
			
		||||
        Set<Long> ossIdList = designChangeList.stream().map(DesDesignChange::getFileId).filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toSet());
 | 
			
		||||
        List<SysOssVo> ossVoList = ossService.listByIds(ossIdList);
 | 
			
		||||
        Map<Long, SysOssVo> ossVoMap = ossVoList.stream().collect(Collectors.toMap(SysOssVo::getOssId, Function.identity(), (a, b) -> a));
 | 
			
		||||
        List<DesDesignChangeVo> designChangeVoList = designChangeList.stream().map(designChange -> {
 | 
			
		||||
@ -490,4 +538,55 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
 | 
			
		||||
     * 正常使用只需#processEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processEvent.flowCode.endsWith('designchanged')")
 | 
			
		||||
    public void processHandler(ProcessEvent processEvent) {
 | 
			
		||||
        log.info("设计变更文件审核任务执行了{}", processEvent.toString());
 | 
			
		||||
        DesDesignChange designChange = this.getById(Convert.toLong(processEvent.getBusinessId()));
 | 
			
		||||
        designChange.setStatus(processEvent.getStatus());
 | 
			
		||||
        if (processEvent.getSubmit()) {
 | 
			
		||||
            designChange.setStatus(BusinessStatusEnum.WAITING.getStatus());
 | 
			
		||||
        }
 | 
			
		||||
        this.updateById(designChange);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行任务创建监听
 | 
			
		||||
     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
 | 
			
		||||
     * 在方法中判断流程节点key
 | 
			
		||||
     * if ("xxx".equals(processTaskEvent.getNodeCode())) {
 | 
			
		||||
     * //执行业务逻辑
 | 
			
		||||
     * }
 | 
			
		||||
     *
 | 
			
		||||
     * @param processTaskEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.flowCode.endsWith('designchanged')")
 | 
			
		||||
    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
 | 
			
		||||
        log.info("设计变更文件审核任务创建了{}", processTaskEvent.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 监听删除流程事件
 | 
			
		||||
     * 正常使用只需#processDeleteEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processDeleteEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @Transactional
 | 
			
		||||
    @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('designchanged')")
 | 
			
		||||
    public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
 | 
			
		||||
        log.info("监听删除流程事件,设计变更文件审核任务执行了{}", processDeleteEvent.toString());
 | 
			
		||||
        DesDesignChange designChange = this.getById(Convert.toLong(processDeleteEvent.getBusinessId()));
 | 
			
		||||
        if (ObjectUtil.isNull(designChange)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        this.deleteByIds(Collections.singleton(designChange.getId()));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -125,6 +125,9 @@ public class DesDrawingServiceImpl extends ServiceImpl<DesDrawingMapper, DesDraw
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public DesDrawingVo insertByBo(DesDrawingCreateReq req) {
 | 
			
		||||
        Long fileUrl = req.getFileUrl();
 | 
			
		||||
        if (fileUrl == null) {
 | 
			
		||||
            throw new ServiceException("图纸文件不能为空", HttpStatus.BAD_REQUEST);
 | 
			
		||||
        }
 | 
			
		||||
        SysOssVo ossVo = ossService.getById(fileUrl);
 | 
			
		||||
        // 数据校验
 | 
			
		||||
        if (ObjectUtils.isEmpty(ossVo)) {
 | 
			
		||||
 | 
			
		||||
@ -61,26 +61,26 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    private WorkflowService workflowService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询图纸管理
 | 
			
		||||
     * 查询专项方案管理
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 主键
 | 
			
		||||
     * @return 图纸管理
 | 
			
		||||
     * @return 专项方案管理
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public DesSpecialSchemeVo queryById(Long id) {
 | 
			
		||||
        DesSpecialScheme specialScheme = this.getById(id);
 | 
			
		||||
        if (specialScheme == null) {
 | 
			
		||||
            throw new ServiceException("图纸不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
            throw new ServiceException("专项方案不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
        return this.getVo(specialScheme);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分页查询图纸管理列表
 | 
			
		||||
     * 分页查询专项方案管理列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param req       查询条件
 | 
			
		||||
     * @param pageQuery 分页参数
 | 
			
		||||
     * @return 图纸管理分页列表
 | 
			
		||||
     * @return 专项方案管理分页列表
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public TableDataInfo<DesSpecialSchemeVo> queryPageList(DesSpecialSchemeQueryReq req, PageQuery pageQuery) {
 | 
			
		||||
@ -90,10 +90,10 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询符合条件的图纸管理列表
 | 
			
		||||
     * 查询符合条件的专项方案管理列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param req 查询条件
 | 
			
		||||
     * @return 图纸管理列表
 | 
			
		||||
     * @return 专项方案管理列表
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<DesSpecialSchemeVo> queryList(DesSpecialSchemeQueryReq req) {
 | 
			
		||||
@ -102,10 +102,10 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增图纸管理
 | 
			
		||||
     * 新增专项方案管理
 | 
			
		||||
     *
 | 
			
		||||
     * @param req 图纸管理
 | 
			
		||||
     * @return 新增图纸管理
 | 
			
		||||
     * @param req 专项方案管理
 | 
			
		||||
     * @return 新增专项方案管理
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
@ -114,7 +114,7 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
        SysOssVo ossVo = ossService.getById(fileUrl);
 | 
			
		||||
        // 数据校验
 | 
			
		||||
        if (ObjectUtils.isEmpty(ossVo)) {
 | 
			
		||||
            throw new ServiceException("图纸文件不能为空", HttpStatus.BAD_REQUEST);
 | 
			
		||||
            throw new ServiceException("专项方案文件不能为空", HttpStatus.BAD_REQUEST);
 | 
			
		||||
        }
 | 
			
		||||
        Long projectId = req.getProjectId();
 | 
			
		||||
        if (projectService.getById(projectId) == null) {
 | 
			
		||||
@ -134,15 +134,15 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
        desSpecialScheme.setVersionNumber(req.getVersionNumber());
 | 
			
		||||
        boolean result = this.save(desSpecialScheme);
 | 
			
		||||
        if (!result) {
 | 
			
		||||
            throw new ServiceException("保存新图纸失败");
 | 
			
		||||
            throw new ServiceException("保存新专项方案失败");
 | 
			
		||||
        }
 | 
			
		||||
        return this.getVo(this.getById(desSpecialScheme.getId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改图纸管理
 | 
			
		||||
     * 修改专项方案管理
 | 
			
		||||
     *
 | 
			
		||||
     * @param req 图纸管理
 | 
			
		||||
     * @param req 专项方案管理
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
@ -150,19 +150,19 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
        Long id = req.getId();
 | 
			
		||||
        DesSpecialScheme oldSpecialScheme = this.getById(id);
 | 
			
		||||
        if (oldSpecialScheme == null) {
 | 
			
		||||
            throw new ServiceException("图纸不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
            throw new ServiceException("专项方案不存在", HttpStatus.NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
        DesSpecialScheme desSpecialScheme = new DesSpecialScheme();
 | 
			
		||||
        BeanUtils.copyProperties(req, desSpecialScheme);
 | 
			
		||||
        boolean result = this.updateById(desSpecialScheme);
 | 
			
		||||
        if (!result) {
 | 
			
		||||
            throw new ServiceException("修改图纸失败", HttpStatus.ERROR);
 | 
			
		||||
            throw new ServiceException("修改专项方案失败", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return this.getVo(this.getById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验并批量删除图纸管理信息
 | 
			
		||||
     * 校验并批量删除专项方案管理信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 待删除的主键集合
 | 
			
		||||
     * @return 是否删除成功
 | 
			
		||||
@ -172,7 +172,7 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    public Boolean deleteByIds(Collection<Long> ids) {
 | 
			
		||||
        List<DesSpecialScheme> specialSchemeList = this.listByIds(ids);
 | 
			
		||||
        if (CollUtil.isEmpty(specialSchemeList)) {
 | 
			
		||||
            throw new ServiceException("参数错误,请勿删除不存在的图纸", HttpStatus.BAD_REQUEST);
 | 
			
		||||
            throw new ServiceException("参数错误,请勿删除不存在的专项方案", HttpStatus.BAD_REQUEST);
 | 
			
		||||
        }
 | 
			
		||||
        workflowService.deleteInstance((List<Long>) ids);
 | 
			
		||||
        // 删除oss文件
 | 
			
		||||
@ -182,10 +182,10 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 构建图纸管理封装对象
 | 
			
		||||
     * 构建专项方案管理封装对象
 | 
			
		||||
     *
 | 
			
		||||
     * @param specialScheme 图纸管理
 | 
			
		||||
     * @return 图纸管理封装对象
 | 
			
		||||
     * @param specialScheme 专项方案管理
 | 
			
		||||
     * @return 专项方案管理封装对象
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public DesSpecialSchemeVo getVo(DesSpecialScheme specialScheme) {
 | 
			
		||||
@ -224,10 +224,10 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取图纸管理对象视图
 | 
			
		||||
     * 获取专项方案管理对象视图
 | 
			
		||||
     *
 | 
			
		||||
     * @param specialSchemePage 图纸管理对象
 | 
			
		||||
     * @return 图纸管理对象视图
 | 
			
		||||
     * @param specialSchemePage 专项方案管理对象
 | 
			
		||||
     * @return 专项方案管理对象视图
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Page<DesSpecialSchemeVo> getVoPage(Page<DesSpecialScheme> specialSchemePage) {
 | 
			
		||||
@ -258,9 +258,9 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
     *
 | 
			
		||||
     * @param processEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processEvent.flowCode.endsWith('specialScheme')")
 | 
			
		||||
    @EventListener(condition = "#processEvent.flowCode.endsWith('specialscheme')")
 | 
			
		||||
    public void processHandler(ProcessEvent processEvent) {
 | 
			
		||||
        log.info("图纸审核任务执行了{}", processEvent.toString());
 | 
			
		||||
        log.info("专项方案审核任务执行了{}", processEvent.toString());
 | 
			
		||||
        DesSpecialScheme specialScheme = this.getById(Convert.toLong(processEvent.getBusinessId()));
 | 
			
		||||
        specialScheme.setStatus(processEvent.getStatus());
 | 
			
		||||
        if (processEvent.getSubmit()) {
 | 
			
		||||
@ -279,9 +279,9 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
     *
 | 
			
		||||
     * @param processTaskEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.flowCode.endsWith('specialScheme')")
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.flowCode.endsWith('specialscheme')")
 | 
			
		||||
    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
 | 
			
		||||
        log.info("图纸审核任务创建了{}", processTaskEvent.toString());
 | 
			
		||||
        log.info("专项方案审核任务创建了{}", processTaskEvent.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -291,9 +291,9 @@ public class DesSpecialSchemeServiceImpl extends ServiceImpl<DesSpecialSchemeMap
 | 
			
		||||
     *
 | 
			
		||||
     * @param processDeleteEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('specialScheme')")
 | 
			
		||||
    @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('specialscheme')")
 | 
			
		||||
    public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
 | 
			
		||||
        log.info("监听删除流程事件,图纸审核任务执行了{}", processDeleteEvent.toString());
 | 
			
		||||
        log.info("监听删除流程事件,专项方案审核任务执行了{}", processDeleteEvent.toString());
 | 
			
		||||
        DesSpecialScheme specialScheme = this.getById(Convert.toLong(processDeleteEvent.getBusinessId()));
 | 
			
		||||
        if (ObjectUtil.isNull(specialScheme)) {
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
package org.dromara.design.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.convert.Convert;
 | 
			
		||||
import cn.hutool.core.io.FileUtil;
 | 
			
		||||
import cn.hutool.core.lang.tree.Tree;
 | 
			
		||||
import cn.hutool.core.util.IdUtil;
 | 
			
		||||
@ -13,7 +14,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.dromara.common.core.constant.HttpStatus;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessEvent;
 | 
			
		||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
 | 
			
		||||
import org.dromara.common.core.enums.BusinessStatusEnum;
 | 
			
		||||
import org.dromara.common.core.exception.ServiceException;
 | 
			
		||||
import org.dromara.common.core.utils.*;
 | 
			
		||||
import org.dromara.common.enums.DocumentStatusEnum;
 | 
			
		||||
@ -36,6 +42,7 @@ import org.dromara.project.service.IBusProjectService;
 | 
			
		||||
import org.dromara.system.domain.vo.SysOssUploadVo;
 | 
			
		||||
import org.dromara.system.service.ISysOssService;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.context.event.EventListener;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
@ -51,6 +58,7 @@ import java.util.stream.Collectors;
 | 
			
		||||
 * @author lcj
 | 
			
		||||
 * @date 2025-07-02
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
@Service
 | 
			
		||||
public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalStandardMapper, DesTechnicalStandard>
 | 
			
		||||
    implements IDesTechnicalStandardService {
 | 
			
		||||
@ -175,7 +183,7 @@ public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalSta
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean insertFile(MultipartFile file, DesTechnicalStandardFileCreateReq req) {
 | 
			
		||||
    public DesTechnicalStandardVo insertFile(MultipartFile file, DesTechnicalStandardFileCreateReq req) {
 | 
			
		||||
        // 数据校验
 | 
			
		||||
        if (ObjectUtils.isEmpty(file)) {
 | 
			
		||||
            throw new ServiceException("技术标准管理文件不能为空", HttpStatus.BAD_REQUEST);
 | 
			
		||||
@ -222,7 +230,7 @@ public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalSta
 | 
			
		||||
        if (!save) {
 | 
			
		||||
            throw new ServiceException("新增文件失败,数据库异常", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
        return this.getVo(this.getById(desTechnicalStandard.getId()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -269,7 +277,7 @@ public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalSta
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean updateFile(DesTechnicalStandardFileUpdateReq req) {
 | 
			
		||||
    public DesTechnicalStandardVo updateFile(DesTechnicalStandardFileUpdateReq req) {
 | 
			
		||||
        Long id = req.getId();
 | 
			
		||||
        DesTechnicalStandard oldDocument = this.getById(id);
 | 
			
		||||
        if (oldDocument == null) {
 | 
			
		||||
@ -281,7 +289,7 @@ public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalSta
 | 
			
		||||
        if (!result) {
 | 
			
		||||
            throw new ServiceException("修改技术标准管理文件失败", HttpStatus.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
        return this.getVo(this.getById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -513,4 +521,59 @@ public class DesTechnicalStandardServiceImpl extends ServiceImpl<DesTechnicalSta
 | 
			
		||||
        // 返回合并后去重的结果
 | 
			
		||||
        return allParentIds.stream().distinct().collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
 | 
			
		||||
     * 正常使用只需#processEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processEvent.flowCode.endsWith('technical')")
 | 
			
		||||
    public void processHandler(ProcessEvent processEvent) {
 | 
			
		||||
        log.info("技术标准文件审核任务执行了{}", processEvent.toString());
 | 
			
		||||
        DesTechnicalStandard technicalStandard = this.getById(Convert.toLong(processEvent.getBusinessId()));
 | 
			
		||||
        technicalStandard.setStatus(processEvent.getStatus());
 | 
			
		||||
        if (processEvent.getSubmit()) {
 | 
			
		||||
            technicalStandard.setStatus(BusinessStatusEnum.WAITING.getStatus());
 | 
			
		||||
        }
 | 
			
		||||
        this.updateById(technicalStandard);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行任务创建监听
 | 
			
		||||
     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
 | 
			
		||||
     * 在方法中判断流程节点key
 | 
			
		||||
     * if ("xxx".equals(processTaskEvent.getNodeCode())) {
 | 
			
		||||
     * //执行业务逻辑
 | 
			
		||||
     * }
 | 
			
		||||
     *
 | 
			
		||||
     * @param processTaskEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.flowCode.endsWith('technical')")
 | 
			
		||||
    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
 | 
			
		||||
        log.info("技术标准文件审核任务创建了{}", processTaskEvent.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 监听删除流程事件
 | 
			
		||||
     * 正常使用只需#processDeleteEvent.flowCode=='leave1'
 | 
			
		||||
     * 示例为了方便则使用startsWith匹配了全部示例key
 | 
			
		||||
     *
 | 
			
		||||
     * @param processDeleteEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('technical')")
 | 
			
		||||
    public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
 | 
			
		||||
        log.info("监听删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
 | 
			
		||||
        DesTechnicalStandard technicalStandard = this.getById(Convert.toLong(processDeleteEvent.getBusinessId()));
 | 
			
		||||
        if (ObjectUtil.isNull(technicalStandard)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        String fileUrl = technicalStandard.getFileUrl();
 | 
			
		||||
        if (StringUtils.isNotBlank(fileUrl)) {
 | 
			
		||||
            OssClient storage = OssFactory.instance();
 | 
			
		||||
            storage.delete(fileUrl);
 | 
			
		||||
        }
 | 
			
		||||
        this.removeById(technicalStandard.getId());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,16 @@
 | 
			
		||||
package org.dromara.drone.domain.bo;
 | 
			
		||||
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
import org.dromara.common.core.validate.AddGroup;
 | 
			
		||||
import org.dromara.common.core.validate.EditGroup;
 | 
			
		||||
import io.github.linpeilie.annotations.AutoMapper;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import jakarta.validation.constraints.*;
 | 
			
		||||
import org.dromara.common.core.validate.AddGroup;
 | 
			
		||||
import org.dromara.common.core.validate.EditGroup;
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 无人机配置业务对象 dro_drone_config
 | 
			
		||||
@ -20,46 +23,49 @@ import jakarta.validation.constraints.*;
 | 
			
		||||
@AutoMapper(target = DroDroneConfig.class, reverseConvertGenerate = false)
 | 
			
		||||
public class DroDroneConfigBo extends BaseEntity {
 | 
			
		||||
 | 
			
		||||
    @Serial
 | 
			
		||||
    private static final long serialVersionUID = -814870483546946548L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 主键id
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
 | 
			
		||||
    @NotNull(message = "主键id不能为空", groups = {EditGroup.class})
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目id
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotNull(message = "项目id不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private Long projectId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 无人机服务地址
 | 
			
		||||
     */
 | 
			
		||||
    @NotBlank(message = "无人机服务地址不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotBlank(message = "无人机服务地址不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private String dockSocketUrl;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * ai识别服务地址
 | 
			
		||||
     */
 | 
			
		||||
    @NotBlank(message = "ai识别服务地址不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotBlank(message = "ai识别服务地址不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private String aiUrl;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * srs服务器地址
 | 
			
		||||
     */
 | 
			
		||||
    @NotBlank(message = "srs服务器地址不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotBlank(message = "srs服务器地址不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private String srsUrl;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * srs(rtmp服务端口)
 | 
			
		||||
     */
 | 
			
		||||
    @NotBlank(message = "srs(rtmp服务端口)不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotBlank(message = "srs(rtmp服务端口)不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private String rtmpPort;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * srs(webrtc服务端口)
 | 
			
		||||
     */
 | 
			
		||||
    @NotBlank(message = "srs(webrtc服务端口)不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    @NotBlank(message = "srs(webrtc服务端口)不能为空", groups = {AddGroup.class, EditGroup.class})
 | 
			
		||||
    private String rtcPort;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -1,17 +1,13 @@
 | 
			
		||||
package org.dromara.drone.domain.vo;
 | 
			
		||||
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
 | 
			
		||||
import org.dromara.common.excel.convert.ExcelDictConvert;
 | 
			
		||||
import io.github.linpeilie.annotations.AutoMapper;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -1,23 +1,22 @@
 | 
			
		||||
package org.dromara.drone.service.impl;
 | 
			
		||||
 | 
			
		||||
import org.dromara.common.core.utils.MapstructUtils;
 | 
			
		||||
import org.dromara.common.core.utils.StringUtils;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.dromara.common.core.utils.MapstructUtils;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
import org.dromara.drone.domain.bo.DroDroneConfigBo;
 | 
			
		||||
import org.dromara.drone.domain.vo.DroDroneConfigVo;
 | 
			
		||||
import org.dromara.drone.domain.DroDroneConfig;
 | 
			
		||||
import org.dromara.drone.mapper.DroDroneConfigMapper;
 | 
			
		||||
import org.dromara.drone.service.IDroDroneConfigService;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 无人机配置Service业务层处理
 | 
			
		||||
@ -38,7 +37,7 @@ public class DroDroneConfigServiceImpl implements IDroDroneConfigService {
 | 
			
		||||
     * @return 无人机配置
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public DroDroneConfigVo queryById(Long id){
 | 
			
		||||
    public DroDroneConfigVo queryById(Long id) {
 | 
			
		||||
        return baseMapper.selectVoById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -109,7 +108,7 @@ public class DroDroneConfigServiceImpl implements IDroDroneConfigService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存前的数据校验
 | 
			
		||||
     */
 | 
			
		||||
    private void validEntityBeforeSave(DroDroneConfig entity){
 | 
			
		||||
    private void validEntityBeforeSave(DroDroneConfig entity) {
 | 
			
		||||
        //TODO 做一些数据校验,如唯一约束
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -122,7 +121,7 @@ public class DroDroneConfigServiceImpl implements IDroDroneConfigService {
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
 | 
			
		||||
        if(isValid){
 | 
			
		||||
        if (isValid) {
 | 
			
		||||
            //TODO 做一些业务上的校验,判断是否需要校验
 | 
			
		||||
        }
 | 
			
		||||
        return baseMapper.deleteByIds(ids) > 0;
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
package org.dromara.project.domain;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.FieldFill;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
@ -9,8 +7,6 @@ import lombok.EqualsAndHashCode;
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 黑名单对象 bus_construction_blacklist
 | 
			
		||||
 | 
			
		||||
@ -53,7 +53,7 @@ import org.dromara.safety.service.IHseKnowledgeDocumentService;
 | 
			
		||||
import org.dromara.system.domain.bo.SysDeptBo;
 | 
			
		||||
import org.dromara.system.domain.vo.SysDeptVo;
 | 
			
		||||
import org.dromara.system.service.ISysDeptService;
 | 
			
		||||
import org.dromara.system.service.ISysPostService;
 | 
			
		||||
import org.dromara.workflow.service.IFlwDefinitionService;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.data.redis.core.StringRedisTemplate;
 | 
			
		||||
@ -103,9 +103,6 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ISysDeptService deptService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ISysPostService postService;
 | 
			
		||||
 | 
			
		||||
    @Lazy
 | 
			
		||||
    @Resource
 | 
			
		||||
    private IHseKnowledgeDocumentService hseKnowledgeDocumentService;
 | 
			
		||||
@ -118,6 +115,9 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
    @Resource
 | 
			
		||||
    private IDesTechnicalStandardService desTechnicalStandardService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private IFlwDefinitionService flwDefinitionService;
 | 
			
		||||
 | 
			
		||||
    @Lazy
 | 
			
		||||
    @Resource
 | 
			
		||||
    private IBusProjectService self;
 | 
			
		||||
@ -442,11 +442,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
        if (!saveTechnicalStandard) {
 | 
			
		||||
            log.error("同步数据失败,项目[{}]新增技术标准管理文件夹模版失败", id);
 | 
			
		||||
        }
 | 
			
		||||
        // 新增岗位
 | 
			
		||||
        Boolean postR = postService.insertPostByDeptId(project.getDeptId());
 | 
			
		||||
        if (!postR) {
 | 
			
		||||
            throw new ServiceException("对应岗位类型保存失败");
 | 
			
		||||
        }
 | 
			
		||||
        flwDefinitionService.insertDefByProjectId(id);
 | 
			
		||||
        return CompletableFuture.completedFuture(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user