物资和设计

This commit is contained in:
zt
2025-08-14 16:43:40 +08:00
parent 7a9a648d9a
commit 9173e02471
51 changed files with 1140 additions and 124 deletions

View File

@ -24,37 +24,37 @@ public enum BusinessStatusEnum {
/** /**
* 已撤销 * 已撤销
*/ */
CANCEL("cancel", "已撤销"), CANCEL("cancel", "已撤销",6),
/** /**
* 草稿 * 草稿
*/ */
DRAFT("draft", "草稿"), DRAFT("draft", "草稿",3),
/** /**
* 待审核 * 待审核
*/ */
WAITING("waiting", "待审核"), WAITING("waiting", "待审核",2),
/** /**
* 已完成 * 已完成
*/ */
FINISH("finish", "已完成"), FINISH("finish", "已完成",1),
/** /**
* 已作废 * 已作废
*/ */
INVALID("invalid", "已作废"), INVALID("invalid", "已作废",7),
/** /**
* 已退回 * 已退回
*/ */
BACK("back", "已退回"), BACK("back", "已退回",4),
/** /**
* 已终止 * 已终止
*/ */
TERMINATION("termination", "已终止"); TERMINATION("termination", "已终止",5);
/** /**
* 状态 * 状态
@ -66,6 +66,11 @@ public enum BusinessStatusEnum {
*/ */
private final String desc; private final String desc;
/**
* 排序字段
*/
private final int order;
private static final Map<String, BusinessStatusEnum> STATUS_MAP = Arrays.stream(BusinessStatusEnum.values()) private static final Map<String, BusinessStatusEnum> STATUS_MAP = Arrays.stream(BusinessStatusEnum.values())
.collect(Collectors.toConcurrentMap(BusinessStatusEnum::getStatus, Function.identity())); .collect(Collectors.toConcurrentMap(BusinessStatusEnum::getStatus, Function.identity()));

View File

@ -0,0 +1,117 @@
package org.dromara.cailiaoshebei.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.dromara.cailiaoshebei.domain.dto.BusLtnDto;
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 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.cailiaoshebei.domain.vo.BusLtnVo;
import org.dromara.cailiaoshebei.domain.bo.BusLtnBo;
import org.dromara.cailiaoshebei.service.IBusLtnService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 物资-物流单号
*
* @author Lion Li
* @date 2025-08-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cailiaoshebei/ltn")
public class BusLtnController extends BaseController {
private final IBusLtnService busLtnService;
/**
* 查询物资-物流单号列表
*/
@SaCheckPermission("cailiaoshebei:ltn:list")
@GetMapping("/list")
public TableDataInfo<BusLtnVo> list(BusLtnBo bo, PageQuery pageQuery) {
return busLtnService.queryPageList(bo, pageQuery);
}
/**
* 导出物资-物流单号列表
*/
@SaCheckPermission("cailiaoshebei:ltn:export")
@Log(title = "物资-物流单号", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BusLtnBo bo, HttpServletResponse response) {
List<BusLtnVo> list = busLtnService.queryList(bo);
ExcelUtil.exportExcel(list, "物资-物流单号", BusLtnVo.class, response);
}
/**
* 获取物资-物流单号详细信息
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:ltn:query")
@GetMapping("/{id}")
public R<BusLtnVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busLtnService.queryById(id));
}
/**
* 新增物资-物流单号
*/
@SaCheckPermission("cailiaoshebei:ltn:add")
@Log(title = "物资-物流单号", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusLtnBo bo) {
return toAjax(busLtnService.insertByBo(bo));
}
/**
* 修改物资-物流单号
*/
@SaCheckPermission("cailiaoshebei:ltn:edit")
@Log(title = "物资-物流单号", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusLtnBo bo) {
return toAjax(busLtnService.updateByBo(bo));
}
/**
* 删除物资-物流单号
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:ltn:remove")
@Log(title = "物资-物流单号", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busLtnService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 新增物资-物流单号
*/
@Log(title = "物资-物流单号", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/link")
public R<Void> linkAdd(@RequestBody BusLtnDto dto) {
return toAjax(busLtnService.linkAdd(dto));
}
}

View File

@ -0,0 +1,56 @@
package org.dromara.cailiaoshebei.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 物资-物流单号对象 bus_ltn
*
* @author Lion Li
* @date 2025-08-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_ltn")
public class BusLtn extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 采购联系单id
*/
private Long docId;
/**
* 计划id
*/
private Long planId;
/**
* 数量
*/
private Long num;
/**
* 物流单号
*/
private String ltn;
}

View File

@ -38,6 +38,11 @@ public class BusPurchaseDoc extends BaseEntity {
*/ */
private String docCode; private String docCode;
/**
* 供应商id
*/
private Long supplierId;
/** /**
* 供应商 * 供应商
*/ */
@ -118,5 +123,8 @@ public class BusPurchaseDoc extends BaseEntity {
*/ */
private String status; private String status;
/**
* 计划基础ID
*/
private Long mrpBaseId;
} }

View File

@ -0,0 +1,58 @@
package org.dromara.cailiaoshebei.domain.bo;
import org.dromara.cailiaoshebei.domain.BusLtn;
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 lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 物资-物流单号业务对象 bus_ltn
*
* @author Lion Li
* @date 2025-08-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusLtn.class, reverseConvertGenerate = false)
public class BusLtnBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 采购联系单id
*/
@NotNull(message = "采购联系单id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long docId;
/**
* 计划id
*/
@NotNull(message = "计划id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planId;
/**
* 数量
*/
private Long num;
/**
* 物流单号
*/
@NotBlank(message = "物流单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String ltn;
}

View File

@ -39,6 +39,11 @@ public class BusPurchaseDocBo extends BaseEntity {
*/ */
private String docCode; private String docCode;
/**
* 供应商id
*/
private Long supplierId;
/** /**
* 供应商 * 供应商
*/ */
@ -119,6 +124,11 @@ public class BusPurchaseDocBo extends BaseEntity {
*/ */
private String status; private String status;
/**
* 计划基础ID
*/
private Long mrpBaseId;
/** /**
* 关联计划 * 关联计划
*/ */

View File

@ -0,0 +1,44 @@
package org.dromara.cailiaoshebei.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.cailiaoshebei.domain.BusLtn;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.util.List;
/**
* 物资-物流单号业务对象 bus_ltn
*
* @author Lion Li
* @date 2025-08-14
*/
@Data
public class BusLtnDto {
/**
* 采购联系单id
*/
private Long docId;
/**
* 供应商
*/
private String supplier;
/**
* 物流信息
*/
private List<BusLtnListDto> list;
}

View File

@ -0,0 +1,40 @@
package org.dromara.cailiaoshebei.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.cailiaoshebei.domain.BusLtn;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/**
* 物资-物流单号业务对象 bus_ltn
*
* @author Lion Li
* @date 2025-08-14
*/
@Data
public class BusLtnListDto{
/**
* 计划id不
*/
@NotNull(message = "计划id不能为空")
private Long planId;
/**
* 数量
*/
private Long num;
/**
* 物流单号
*/
@NotBlank(message = "物流单号不能为空")
private String ltn;
}

View File

@ -0,0 +1,68 @@
package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusLtn;
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 java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 物资-物流单号视图对象 bus_ltn
*
* @author Lion Li
* @date 2025-08-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusLtn.class)
public class BusLtnVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 采购联系单id
*/
@ExcelProperty(value = "采购联系单id")
private Long docId;
/**
* 计划id
*/
@ExcelProperty(value = "计划id")
private Long planId;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private Long num;
/**
* 物流单号
*/
@ExcelProperty(value = "物流单号")
private String ltn;
}

View File

@ -3,6 +3,7 @@ package org.dromara.cailiaoshebei.domain.vo;
import org.dromara.cailiaoshebei.domain.BusPurchaseDoc; import org.dromara.cailiaoshebei.domain.BusPurchaseDoc;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.cailiaoshebei.domain.bo.BusPlanDocAssociationBo;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
@ -12,7 +13,7 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -47,6 +48,11 @@ public class BusPurchaseDocVo implements Serializable {
@ExcelProperty(value = "采购单编号") @ExcelProperty(value = "采购单编号")
private String docCode; private String docCode;
/**
* 供应商id
*/
private Long supplierId;
/** /**
* 供应商 * 供应商
*/ */
@ -143,5 +149,13 @@ public class BusPurchaseDocVo implements Serializable {
@ExcelProperty(value = "审核状态") @ExcelProperty(value = "审核状态")
private String status; private String status;
/**
* 计划基础ID
*/
private Long mrpBaseId;
/**
* 关联计划
*/
private List<BusPlanDocAssociationVo> associationList;
} }

View File

@ -0,0 +1,15 @@
package org.dromara.cailiaoshebei.mapper;
import org.dromara.cailiaoshebei.domain.BusLtn;
import org.dromara.cailiaoshebei.domain.vo.BusLtnVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 物资-物流单号Mapper接口
*
* @author Lion Li
* @date 2025-08-14
*/
public interface BusLtnMapper extends BaseMapperPlus<BusLtn, BusLtnVo> {
}

View File

@ -0,0 +1,79 @@
package org.dromara.cailiaoshebei.service;
import org.dromara.cailiaoshebei.domain.dto.BusLtnDto;
import org.dromara.cailiaoshebei.domain.vo.BusLtnVo;
import org.dromara.cailiaoshebei.domain.bo.BusLtnBo;
import org.dromara.cailiaoshebei.domain.BusLtn;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection;
import java.util.List;
/**
* 物资-物流单号Service接口
*
* @author Lion Li
* @date 2025-08-14
*/
public interface IBusLtnService extends IService<BusLtn>{
/**
* 查询物资-物流单号
*
* @param id 主键
* @return 物资-物流单号
*/
BusLtnVo queryById(Long id);
/**
* 分页查询物资-物流单号列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-物流单号分页列表
*/
TableDataInfo<BusLtnVo> queryPageList(BusLtnBo bo, PageQuery pageQuery);
/**
* 查询符合条件的物资-物流单号列表
*
* @param bo 查询条件
* @return 物资-物流单号列表
*/
List<BusLtnVo> queryList(BusLtnBo bo);
/**
* 新增物资-物流单号
*
* @param bo 物资-物流单号
* @return 是否新增成功
*/
Boolean insertByBo(BusLtnBo bo);
/**
* 修改物资-物流单号
*
* @param bo 物资-物流单号
* @return 是否修改成功
*/
Boolean updateByBo(BusLtnBo bo);
/**
* 校验并批量删除物资-物流单号信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 添加物流单号
*/
Boolean linkAdd(BusLtnDto dto);
}

View File

@ -0,0 +1,155 @@
package org.dromara.cailiaoshebei.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.cailiaoshebei.domain.dto.BusLtnDto;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo;
import org.dromara.cailiaoshebei.service.IBusPurchaseDocService;
import org.dromara.common.core.exception.ServiceException;
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 lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusLtnBo;
import org.dromara.cailiaoshebei.domain.vo.BusLtnVo;
import org.dromara.cailiaoshebei.domain.BusLtn;
import org.dromara.cailiaoshebei.mapper.BusLtnMapper;
import org.dromara.cailiaoshebei.service.IBusLtnService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 物资-物流单号Service业务层处理
*
* @author Lion Li
* @date 2025-08-14
*/
@RequiredArgsConstructor
@Service
public class BusLtnServiceImpl extends ServiceImpl<BusLtnMapper, BusLtn> implements IBusLtnService {
private final BusLtnMapper baseMapper;
private final IBusPurchaseDocService purchaseDocService;
/**
* 查询物资-物流单号
*
* @param id 主键
* @return 物资-物流单号
*/
@Override
public BusLtnVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询物资-物流单号列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 物资-物流单号分页列表
*/
@Override
public TableDataInfo<BusLtnVo> queryPageList(BusLtnBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BusLtn> lqw = buildQueryWrapper(bo);
Page<BusLtnVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的物资-物流单号列表
*
* @param bo 查询条件
* @return 物资-物流单号列表
*/
@Override
public List<BusLtnVo> queryList(BusLtnBo bo) {
LambdaQueryWrapper<BusLtn> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BusLtn> buildQueryWrapper(BusLtnBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BusLtn> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BusLtn::getId);
lqw.eq(bo.getProjectId() != null, BusLtn::getProjectId, bo.getProjectId());
lqw.eq(bo.getDocId() != null, BusLtn::getDocId, bo.getDocId());
lqw.eq(bo.getPlanId() != null, BusLtn::getPlanId, bo.getPlanId());
lqw.eq(bo.getNum() != null, BusLtn::getNum, bo.getNum());
lqw.eq(StringUtils.isNotBlank(bo.getLtn()), BusLtn::getLtn, bo.getLtn());
return lqw;
}
/**
* 新增物资-物流单号
*
* @param bo 物资-物流单号
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(BusLtnBo bo) {
BusLtn add = MapstructUtils.convert(bo, BusLtn.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改物资-物流单号
*
* @param bo 物资-物流单号
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BusLtnBo bo) {
BusLtn update = MapstructUtils.convert(bo, BusLtn.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusLtn entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除物资-物流单号信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public Boolean linkAdd(BusLtnDto dto) {
BusPurchaseDocVo busPurchaseDocVo = purchaseDocService.queryById(dto.getDocId());
if (busPurchaseDocVo == null) {
throw new ServiceException("采购单不存在");
}
return null;
}
}

View File

@ -3,6 +3,8 @@ package org.dromara.cailiaoshebei.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
import org.dromara.cailiaoshebei.domain.bo.BusPlanDocAssociationBo;
import org.dromara.cailiaoshebei.domain.vo.BusPlanDocAssociationVo;
import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -46,7 +48,12 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl<BusPurchaseDocMapper,
*/ */
@Override @Override
public BusPurchaseDocVo queryById(Long id){ public BusPurchaseDocVo queryById(Long id){
return baseMapper.selectVoById(id); BusPurchaseDocVo busPurchaseDocVo = baseMapper.selectVoById(id);
BusPlanDocAssociationBo busPlanDocAssociationBo = new BusPlanDocAssociationBo();
busPlanDocAssociationBo.setDocId(id);
List<BusPlanDocAssociationVo> busPlanDocAssociationVos = planDocAssociationService.queryList(busPlanDocAssociationBo);
busPurchaseDocVo.setAssociationList(busPlanDocAssociationVos);
return busPurchaseDocVo;
} }
/** /**

View File

@ -203,4 +203,5 @@ public class BusDrawingreviewController extends BaseController {
// @PathVariable Long[] ids) { // @PathVariable Long[] ids) {
// return toAjax(busDrawingreviewService.deleteWithValidByIds(List.of(ids), true)); // return toAjax(busDrawingreviewService.deleteWithValidByIds(List.of(ids), true));
// } // }
} }

View File

@ -107,5 +107,4 @@ public class BusDrawingreviewReceiptsController extends BaseController {
return toAjax(busDrawingreviewReceiptsService.deleteWithValidByIds(List.of(ids), true)); return toAjax(busDrawingreviewReceiptsService.deleteWithValidByIds(List.of(ids), true));
} }
} }

View File

@ -19,10 +19,14 @@ import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq;
import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq;
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo; import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
import org.dromara.design.service.IDesDesignChangeService; import org.dromara.design.service.IDesDesignChangeService;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 设计变更管理 * 设计变更管理

View File

@ -6,8 +6,10 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.design.domain.bo.DesCollectFileBo;
import org.dromara.design.domain.dto.desCollect.DesCollectBatchDto; import org.dromara.design.domain.dto.desCollect.DesCollectBatchDto;
import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto; import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto;
import org.dromara.design.domain.vo.DesCollectFileVo;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -114,8 +116,6 @@ public class DesExtractController extends BaseController {
return R.ok(desExtractService.batchAddOrUpdate(dto)); return R.ok(desExtractService.batchAddOrUpdate(dto));
} }
/** /**
* 清单导出 * 清单导出
*/ */
@ -125,4 +125,15 @@ public class DesExtractController extends BaseController {
public void exportWordById(Long id, HttpServletResponse response){ public void exportWordById(Long id, HttpServletResponse response){
desExtractService.exportWordById(id, response); desExtractService.exportWordById(id, response);
} }
/**
* 查询提取的资料文件
*/
@SaCheckPermission("design:extract:query")
@GetMapping("/fileList/{id}")
public R<List<DesCollectFileVo>> fileList(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(desExtractService.fileList(id));
}
} }

View File

@ -114,4 +114,10 @@ public class DesDesignChange extends BaseEntity {
*/ */
private String detail; private String detail;
/**
* 文件
*/
private String saveFile;
} }

View File

@ -94,4 +94,13 @@ public class DesDrawing extends BaseEntity {
*/ */
private Date deletedAt; private Date deletedAt;
/**
* 卷册目录ID
*/
private Long volumeCatalogId;
private Long volumeFileId;
} }

View File

@ -52,5 +52,9 @@ public class DesExtractCatalogue extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 卷册目录Id
*/
private Long volumeCatalogId;
} }

View File

@ -53,4 +53,8 @@ public class DesPrelimScheme extends BaseEntity {
private String status; private String status;
/**
* 排序字段
*/
private Integer orderNum;
} }

View File

@ -52,5 +52,8 @@ public class DesScheme extends BaseEntity {
*/ */
private String status; private String status;
/**
* 排序字段
*/
private Integer orderNum;
} }

View File

@ -57,4 +57,9 @@ public class DesVolumeFile extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 文件类型
*/
private String type;
} }

View File

@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -126,17 +128,17 @@ public class BusDrawingreviewReceiptsBo extends BaseEntity {
/** /**
* 校审时间 * 校审时间
*/ */
private Date proofreadingDate; private LocalDate proofreadingDate;
/** /**
* 审核时间 * 审核时间
*/ */
private Date auditDate; private LocalDate auditDate;
/** /**
* 执行时间 * 执行时间
*/ */
private Date executorDate; private LocalDate executorDate;
/** /**
* 图纸 * 图纸

View File

@ -10,6 +10,8 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.dromara.design.domain.DesCollectFile; import org.dromara.design.domain.DesCollectFile;
import java.util.List;
/** /**
* 收资文件业务对象 des_collect_file * 收资文件业务对象 des_collect_file
* *
@ -60,5 +62,9 @@ public class DesCollectFileBo extends BaseEntity {
@NotBlank(message = "审核状态不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "审核状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status; private String status;
/**
* 清单目录ID列表
*/
private List<Long> catalogueIds;
} }

View File

@ -55,5 +55,9 @@ public class DesExtractCatalogueBo extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 卷册目录Id
*/
private Long volumeCatalogId;
} }

View File

@ -129,5 +129,11 @@ public class FillOutTheDesignVerificationFormReq implements Serializable {
*/ */
private LocalDate executorDate; private LocalDate executorDate;
/**
* 关联数据ID
*/
private Long drawingreviewId;
} }

View File

@ -103,4 +103,8 @@ public class DesDesignChangeCreateReq implements Serializable {
*/ */
private DesDesignExtendDetailDto extendDetail; private DesDesignExtendDetailDto extendDetail;
/**
* 保存文件
*/
private String saveFile;
} }

View File

@ -32,6 +32,11 @@ public class DesVolumeCatalogQueryReq implements Serializable {
*/ */
private String documentName; private String documentName;
/**
* 资料名称
*/
private String auditStatus;
} }

View File

@ -24,7 +24,7 @@ public class DesVolumeFileCreateReq implements Serializable {
/** /**
* 文件ID * 文件ID
*/ */
private Long fileId; private List<Long> fileIds;
/** /**
* 作废文件id列表 * 作废文件id列表

View File

@ -64,5 +64,8 @@ public class DesExtractCatalogueVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 卷册目录Id
*/
private Long volumeCatalogId;
} }

View File

@ -2,6 +2,8 @@ package org.dromara.design.domain.vo.designchange;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.design.domain.DesDesignChange; import org.dromara.design.domain.DesDesignChange;
import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto; import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
@ -55,6 +57,12 @@ public class DesDesignChangeVo implements Serializable {
*/ */
private String specialty; private String specialty;
/**
* 专业
*/
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "specialty",other = "des_user_major")
private String specialtyName;
/** /**
* 提出日期 * 提出日期
*/ */
@ -110,10 +118,10 @@ public class DesDesignChangeVo implements Serializable {
*/ */
private String fileId; private String fileId;
/** // /**
* 变更文件 // * 变更文件
*/ // */
private SysOssVo file; // private SysOssVo file;
/** /**
* 审核状态 * 审核状态
@ -135,4 +143,13 @@ public class DesDesignChangeVo implements Serializable {
*/ */
private DesDesignExtendDetailDto extendDetail; private DesDesignExtendDetailDto extendDetail;
/**
* 保存文件
*/
private String saveFile;
/**
* 文件列表
*/
List<SysOssVo> ossVoList;
} }

View File

@ -43,6 +43,12 @@ public class DesDrawingVo implements Serializable {
*/ */
private String fileName; private String fileName;
/**
* 文件名称
*/
private String url;
/** /**
* 文件访问路径 * 文件访问路径
*/ */
@ -61,7 +67,7 @@ public class DesDrawingVo implements Serializable {
/** /**
* 文件 * 文件
*/ */
private SysOssVo file; // private SysOssVo file;
/** /**
* 原文件名 * 原文件名
@ -88,4 +94,38 @@ public class DesDrawingVo implements Serializable {
*/ */
private Date createTime; private Date createTime;
/**
* 专业
*/
private String specialty;
/**
* 卷册号
*/
private String volumeNumber;
/**
* 负责人
*/
private String principal;
/**
* 设计子项
*/
private String designSubitem;
private String type;
/**
* 卷册目录ID
*/
private Long volumeCatalogId;
private Long volumeFileId;
} }

View File

@ -2,6 +2,8 @@ package org.dromara.design.domain.vo.volumecatalog;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.design.domain.DesVolumeCatalog; import org.dromara.design.domain.DesVolumeCatalog;
import org.dromara.design.domain.vo.volumefile.DesVolumeFileVo; import org.dromara.design.domain.vo.volumefile.DesVolumeFileVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
@ -51,6 +53,12 @@ public class DesVolumeCatalogVo implements Serializable {
*/ */
private String specialty; private String specialty;
/**
* 专业
*/
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "specialty",other = "des_user_major")
private String specialtyName;
/** /**
* 卷册号 * 卷册号
*/ */
@ -66,6 +74,10 @@ public class DesVolumeCatalogVo implements Serializable {
*/ */
private String principal; private String principal;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "principal")
private String principalName;
/** /**
* 计划完成时间 * 计划完成时间
*/ */

View File

@ -61,4 +61,5 @@ public class DesVolumeFileVo implements Serializable {
*/ */
private String remark; private String remark;
private String type;
} }

View File

@ -1,7 +1,9 @@
package org.dromara.design.service; package org.dromara.design.service;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotNull;
import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto; import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto;
import org.dromara.design.domain.vo.DesCollectFileVo;
import org.dromara.design.domain.vo.DesExtractVo; import org.dromara.design.domain.vo.DesExtractVo;
import org.dromara.design.domain.bo.DesExtractBo; import org.dromara.design.domain.bo.DesExtractBo;
import org.dromara.design.domain.DesExtract; import org.dromara.design.domain.DesExtract;
@ -9,6 +11,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection; import java.util.Collection;
@ -81,4 +84,9 @@ public interface IDesExtractService extends IService<DesExtract>{
* 导出Word * 导出Word
*/ */
void exportWordById(Long id, HttpServletResponse response); void exportWordById(Long id, HttpServletResponse response);
/**
* 查询提取的资料文件
*/
List<DesCollectFileVo> fileList(Long id);
} }

View File

@ -247,7 +247,6 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl<BusDrawingreviewMap
return busDrawingreviewReceiptsService.updateById(busDrawingreviewReceipts); return busDrawingreviewReceiptsService.updateById(busDrawingreviewReceipts);
} }
/** /**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1' * 正常使用只需#processEvent.flowCode=='leave1'

View File

@ -1,5 +1,6 @@
package org.dromara.design.service.impl; package org.dromara.design.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -99,6 +100,7 @@ public class DesCollectFileServiceImpl extends ServiceImpl<DesCollectFileMapper,
lqw.like(StringUtils.isNotBlank(bo.getFileName()), DesCollectFile::getFileName, bo.getFileName()); lqw.like(StringUtils.isNotBlank(bo.getFileName()), DesCollectFile::getFileName, bo.getFileName());
lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), DesCollectFile::getFileUrl, bo.getFileUrl()); lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), DesCollectFile::getFileUrl, bo.getFileUrl());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), DesCollectFile::getStatus, bo.getStatus()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), DesCollectFile::getStatus, bo.getStatus());
lqw.in(CollectionUtil.isNotEmpty(bo.getCatalogueIds()), DesCollectFile::getCatalogueId, bo.getCatalogueIds());
return lqw; return lqw;
} }

View File

@ -6,6 +6,8 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -30,6 +32,9 @@ import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.utils.DocumentUtil; import org.dromara.common.utils.DocumentUtil;
import org.dromara.design.constant.DesDesignConstant; import org.dromara.design.constant.DesDesignConstant;
import org.dromara.design.domain.DesDesignChange; import org.dromara.design.domain.DesDesignChange;
import org.dromara.design.domain.DesDrawing;
import org.dromara.design.domain.DesVolumeCatalog;
import org.dromara.design.domain.DesVolumeFile;
import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq;
import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq;
import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq;
@ -37,6 +42,9 @@ import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto;
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo; import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
import org.dromara.design.mapper.DesDesignChangeMapper; import org.dromara.design.mapper.DesDesignChangeMapper;
import org.dromara.design.service.IDesDesignChangeService; import org.dromara.design.service.IDesDesignChangeService;
import org.dromara.design.service.IDesDrawingService;
import org.dromara.design.service.IDesVolumeCatalogService;
import org.dromara.design.service.IDesVolumeFileService;
import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
@ -75,6 +83,16 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
@Resource @Resource
private ISysOssService ossService; private ISysOssService ossService;
@Resource
private IDesVolumeFileService volumeFileService;
@Resource
private IDesVolumeCatalogService volumeCatalogService;
@Resource
protected IDesDrawingService drawingService;
/** /**
* 查询设计变更管理 * 查询设计变更管理
* *
@ -202,9 +220,6 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
BeanUtils.copyProperties(req, entity); BeanUtils.copyProperties(req, entity);
validEntityBeforeSave(entity, true); validEntityBeforeSave(entity, true);
entity.setDetail(JSONUtil.toJsonStr(req.getExtendDetail())); entity.setDetail(JSONUtil.toJsonStr(req.getExtendDetail()));
if("1".equals(req.getExtendDetail().getDesignDisposal())){
//todo: 卷册号文件作废
}
boolean save = this.save(entity); boolean save = this.save(entity);
if (!save) { if (!save) {
throw new ServiceException("新增设计变更单失败", HttpStatus.ERROR); throw new ServiceException("新增设计变更单失败", HttpStatus.ERROR);
@ -316,9 +331,9 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
List<Long> allFileIdList = new ArrayList<>(); List<Long> allFileIdList = new ArrayList<>();
// 1. 添加单个 fileId前提是非空 // 1. 添加单个 fileId前提是非空
String fileId = designChange.getFileId(); String fileId = designChange.getFileId();
if (StringUtils.isNotBlank(fileId)) { // if (StringUtils.isNotBlank(fileId)) {
allFileIdList.add(Long.valueOf(fileId)); // allFileIdList.add(Long.valueOf(fileId));
} // }
// 2. 添加 attachmentPic 多个 ID // 2. 添加 attachmentPic 多个 ID
String attachmentPic = designChange.getAttachmentPic(); String attachmentPic = designChange.getAttachmentPic();
if (StringUtils.isNotBlank(attachmentPic)) { if (StringUtils.isNotBlank(attachmentPic)) {
@ -346,9 +361,12 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
.collect(Collectors.toMap(SysOssVo::getOssId, Function.identity(), (a, b) -> a)); .collect(Collectors.toMap(SysOssVo::getOssId, Function.identity(), (a, b) -> a));
// 1. 处理 file单个 // 1. 处理 file单个
if (StringUtils.isNotBlank(fileId)) { if (StringUtils.isNotBlank(fileId)) {
Long file = Long.valueOf(fileId); String[] split = fileId.split(",");
SysOssVo fileVo = ossMap.get(file); List<Long> fileIds = Arrays.stream(split)
vo.setFile(fileVo); .map(Long::valueOf)
.collect(Collectors.toList());
List<SysOssVo> ossVoList1 = ossService.listByIds(fileIds);
vo.setOssVoList(ossVoList1);
} }
// 2. 处理 attachmentPicList多个 // 2. 处理 attachmentPicList多个
if (StringUtils.isNotBlank(attachmentPic)) { if (StringUtils.isNotBlank(attachmentPic)) {
@ -397,6 +415,7 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
String volumeName = req.getVolumeName(); String volumeName = req.getVolumeName();
String volumeNo = req.getVolumeNo(); String volumeNo = req.getVolumeNo();
String status = req.getStatus(); String status = req.getStatus();
lqw.orderByDesc(DesDesignChange::getId);
lqw.eq(ObjectUtils.isNotEmpty(projectId), DesDesignChange::getProjectId, projectId); lqw.eq(ObjectUtils.isNotEmpty(projectId), DesDesignChange::getProjectId, projectId);
lqw.eq(ObjectUtils.isNotEmpty(formNo), DesDesignChange::getFormNo, formNo); lqw.eq(ObjectUtils.isNotEmpty(formNo), DesDesignChange::getFormNo, formNo);
lqw.eq(ObjectUtils.isNotEmpty(submitDate), DesDesignChange::getSubmitDate, submitDate); lqw.eq(ObjectUtils.isNotEmpty(submitDate), DesDesignChange::getSubmitDate, submitDate);
@ -425,16 +444,17 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
if (CollUtil.isEmpty(designChangeList)) { if (CollUtil.isEmpty(designChangeList)) {
return designChangeVoPage; return designChangeVoPage;
} }
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 -> { List<DesDesignChangeVo> designChangeVoList = designChangeList.stream().map(designChange -> {
DesDesignChangeVo designChangeVo = new DesDesignChangeVo(); DesDesignChangeVo designChangeVo = new DesDesignChangeVo();
BeanUtils.copyProperties(designChange, designChangeVo); BeanUtils.copyProperties(designChange, designChangeVo);
String fileId = designChange.getFileId(); String fileId = designChangeVo.getFileId();
if (StringUtils.isNotBlank(fileId)) { if (fileId != null) {
SysOssVo file = ossVoMap.get(Long.valueOf(fileId)); String[] split = fileId.split(",");
designChangeVo.setFile(file); List<Long> fileIds = Arrays.stream(split)
.map(Long::valueOf)
.collect(Collectors.toList());
List<SysOssVo> ossVoList1 = ossService.listByIds(fileIds);
designChangeVo.setOssVoList(ossVoList1);
} }
return designChangeVo; return designChangeVo;
}).toList(); }).toList();
@ -567,6 +587,58 @@ public class DesDesignChangeServiceImpl extends ServiceImpl<DesDesignChangeMappe
if (processEvent.getSubmit()) { if (processEvent.getSubmit()) {
designChange.setStatus(BusinessStatusEnum.WAITING.getStatus()); designChange.setStatus(BusinessStatusEnum.WAITING.getStatus());
} }
if(BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())){
DesDesignExtendDetailDto bean = JSONUtil.toBean(designChange.getDetail(), DesDesignExtendDetailDto.class);
DesVolumeCatalog volumeCatalog = volumeCatalogService.getOne(Wrappers.<DesVolumeCatalog>lambdaQuery()
.eq(DesVolumeCatalog::getVolumeNumber, designChange.getVolumeNo())
.eq(DesVolumeCatalog::getProjectId, designChange.getProjectId())
.last("limit 1"));
if("1".equals(bean.getDesignDisposal())){
volumeFileService.lambdaUpdate()
.set(DesVolumeFile::getStatus, "2")
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign())
.update();
}else if("2".equals(bean.getDesignDisposal())){
LambdaUpdateWrapper<DesVolumeFile> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(DesVolumeFile::getStatus, "2")
.eq(DesVolumeFile::getVolumeCatalogId, volumeCatalog.getDesign());
String saveFile = designChange.getSaveFile();
if(StringUtils.isNotBlank(saveFile)){
String[] split = saveFile.split(",");
List<Long> fileIds = Arrays.stream(split)
.map(Long::valueOf)
.collect(Collectors.toList());
wrapper.notIn(DesVolumeFile::getId, fileIds);
}
volumeFileService.update(wrapper);
}
String fileId = designChange.getFileId();
if (fileId != null) {
String[] split = fileId.split(",");
List<Long> fileIds = Arrays.stream(split)
.map(Long::valueOf)
.collect(Collectors.toList());
List<SysOssVo> ossVoList1 = ossService.listByIds(fileIds);
for (SysOssVo ossVo : ossVoList1) {
DesVolumeFile desVolumeFile = new DesVolumeFile();
desVolumeFile.setVolumeCatalogId(volumeCatalog.getDesign());
desVolumeFile.setFileName(ossVo.getOriginalName());
desVolumeFile.setFileId(ossVo.getOssId());
desVolumeFile.setStatus("1");
desVolumeFile.setType("2");
volumeFileService.save(desVolumeFile);
DesDrawing desDrawing = new DesDrawing();
desDrawing.setProjectId(volumeCatalog.getProjectId());
desDrawing.setVolumeCatalogId(volumeCatalog.getDesign());
desDrawing.setVolumeFileId(desVolumeFile.getId());
drawingService.save(desDrawing);
}
}
}
this.updateById(designChange); this.updateById(designChange);
} }

View File

@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itextpdf.text.DocumentException; import com.itextpdf.text.DocumentException;
@ -23,6 +24,8 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.utils.PdfBoxQrCodeGenerator; import org.dromara.common.utils.PdfBoxQrCodeGenerator;
import org.dromara.design.domain.DesDrawing; import org.dromara.design.domain.DesDrawing;
import org.dromara.design.domain.DesVolumeCatalog;
import org.dromara.design.domain.DesVolumeFile;
import org.dromara.design.domain.dto.drawing.DesDrawingCreateReq; import org.dromara.design.domain.dto.drawing.DesDrawingCreateReq;
import org.dromara.design.domain.dto.drawing.DesDrawingQueryReq; import org.dromara.design.domain.dto.drawing.DesDrawingQueryReq;
import org.dromara.design.domain.dto.drawing.DesDrawingUpdateReq; import org.dromara.design.domain.dto.drawing.DesDrawingUpdateReq;
@ -31,6 +34,8 @@ import org.dromara.design.enums.DesDrawingFileTypeEnum;
import org.dromara.design.enums.DesDrawingNewestEnum; import org.dromara.design.enums.DesDrawingNewestEnum;
import org.dromara.design.mapper.DesDrawingMapper; import org.dromara.design.mapper.DesDrawingMapper;
import org.dromara.design.service.IDesDrawingService; import org.dromara.design.service.IDesDrawingService;
import org.dromara.design.service.IDesVolumeCatalogService;
import org.dromara.design.service.IDesVolumeFileService;
import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
@ -74,6 +79,14 @@ public class DesDrawingServiceImpl extends ServiceImpl<DesDrawingMapper, DesDraw
@Resource @Resource
private IDesDrawingService self; private IDesDrawingService self;
@Lazy
@Resource
private IDesVolumeCatalogService volumeCatalogService;
@Lazy
@Resource
private IDesVolumeFileService volumeFilesService;
/** /**
* 查询图纸管理 * 查询图纸管理
* *
@ -241,9 +254,9 @@ public class DesDrawingServiceImpl extends ServiceImpl<DesDrawingMapper, DesDraw
if (drawing == null) { if (drawing == null) {
return vo; return vo;
} }
SysOssVo ossVo = ossService.getById(drawing.getFileUrl()); // SysOssVo ossVo = ossService.getById(drawing.getFileUrl());
BeanUtils.copyProperties(drawing, vo); BeanUtils.copyProperties(drawing, vo);
vo.setFile(ossVo); // vo.setFile(ossVo);
return vo; return vo;
} }
@ -292,12 +305,28 @@ public class DesDrawingServiceImpl extends ServiceImpl<DesDrawingMapper, DesDraw
if (CollUtil.isEmpty(drawingList)) { if (CollUtil.isEmpty(drawingList)) {
return drawingVoPage; return drawingVoPage;
} }
List<SysOssVo> ossVoList = ossService.listByIds(drawingList.stream().map(DesDrawing::getFileUrl).toList()); // List<SysOssVo> ossVoList = ossService.listByIds(drawingList.stream().map(DesDrawing::getFileUrl).toList());
Map<Long, List<SysOssVo>> ossMap = ossVoList.stream().collect(Collectors.groupingBy(SysOssVo::getOssId)); // Map<Long, List<SysOssVo>> ossMap = ossVoList.stream().collect(Collectors.groupingBy(SysOssVo::getOssId));
List<DesDrawingVo> drawingVoList = drawingList.stream().map(entity -> { List<DesDrawingVo> drawingVoList = drawingList.stream().map(entity -> {
DesDrawingVo drawingVo = new DesDrawingVo(); DesDrawingVo drawingVo = new DesDrawingVo();
BeanUtils.copyProperties(entity, drawingVo); BeanUtils.copyProperties(entity, drawingVo);
drawingVo.setFile(ossMap.get(entity.getFileUrl()).getFirst()); // drawingVo.setFile(ossMap.get(entity.getFileUrl()).getFirst());
DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(drawingVo.getVolumeCatalogId());
drawingVo.setSpecialty(desVolumeCatalog.getSpecialty());
drawingVo.setVolumeNumber(desVolumeCatalog.getVolumeNumber());
drawingVo.setDesignSubitem(desVolumeCatalog.getDesignSubitem());
drawingVo.setPrincipal(desVolumeCatalog.getPrincipal());
DesVolumeFile byId = volumeFilesService.getById(drawingVo.getVolumeFileId());
SysOssVo byId1 = ossService.getById(byId.getFileId());
drawingVo.setFileName(byId.getFileName());
drawingVo.setType(byId.getType());
drawingVo.setUrl(byId1.getUrl());
drawingVo.setFileUrl(byId.getFileId());
return drawingVo; return drawingVo;
}).toList(); }).toList();
drawingVoPage.setRecords(drawingVoList); drawingVoPage.setRecords(drawingVoList);

View File

@ -1,5 +1,6 @@
package org.dromara.design.service.impl; package org.dromara.design.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -26,15 +27,17 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.oss.exception.OssException; import org.dromara.common.oss.exception.OssException;
import org.dromara.common.utils.DocumentUtil; import org.dromara.common.utils.DocumentUtil;
import org.dromara.design.constant.DesDesignConstant; import org.dromara.design.constant.DesDesignConstant;
import org.dromara.design.domain.DesCollect; import org.dromara.design.domain.*;
import org.dromara.design.domain.DesCollectCatalogue; import org.dromara.design.domain.bo.DesCollectFileBo;
import org.dromara.design.domain.DesExtractCatalogue;
import org.dromara.design.domain.bo.DesExtractCatalogueBo; import org.dromara.design.domain.bo.DesExtractCatalogueBo;
import org.dromara.design.domain.dto.desCollect.DesCollectCatalogueWordDto; import org.dromara.design.domain.dto.desCollect.DesCollectCatalogueWordDto;
import org.dromara.design.domain.dto.desCollect.DesCollectWordDto; import org.dromara.design.domain.dto.desCollect.DesCollectWordDto;
import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto; import org.dromara.design.domain.dto.desExtract.DesExtractBatchDto;
import org.dromara.design.domain.vo.DesCollectFileVo;
import org.dromara.design.domain.vo.DesExtractCatalogueVo; import org.dromara.design.domain.vo.DesExtractCatalogueVo;
import org.dromara.design.service.IDesCollectFileService;
import org.dromara.design.service.IDesExtractCatalogueService; import org.dromara.design.service.IDesExtractCatalogueService;
import org.dromara.design.service.IDesVolumeFileService;
import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
@ -42,7 +45,6 @@ import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.design.domain.bo.DesExtractBo; import org.dromara.design.domain.bo.DesExtractBo;
import org.dromara.design.domain.vo.DesExtractVo; import org.dromara.design.domain.vo.DesExtractVo;
import org.dromara.design.domain.DesExtract;
import org.dromara.design.mapper.DesExtractMapper; import org.dromara.design.mapper.DesExtractMapper;
import org.dromara.design.service.IDesExtractService; import org.dromara.design.service.IDesExtractService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -78,6 +80,8 @@ public class DesExtractServiceImpl extends ServiceImpl<DesExtractMapper, DesExtr
private final DictService dictService; private final DictService dictService;
private final IDesVolumeFileService volumeFileService;
/** /**
* 查询提资清单 * 查询提资清单
* *
@ -191,17 +195,20 @@ public class DesExtractServiceImpl extends ServiceImpl<DesExtractMapper, DesExtr
public Long batchAddOrUpdate(DesExtractBatchDto dto) { public Long batchAddOrUpdate(DesExtractBatchDto dto) {
DesExtract convert = MapstructUtils.convert(dto.getDesExtractBo(), DesExtract.class); DesExtract convert = MapstructUtils.convert(dto.getDesExtractBo(), DesExtract.class);
super.saveOrUpdate(convert); super.saveOrUpdate(convert);
if(CollectionUtil.isNotEmpty(dto.getCatalogueList())){
if (CollectionUtil.isEmpty(dto.getCatalogueList())) {
throw new ServiceException("提资清单目录不能为空");
}
extractCatalogueService.remove(Wrappers.<DesExtractCatalogue>lambdaQuery() extractCatalogueService.remove(Wrappers.<DesExtractCatalogue>lambdaQuery()
.eq(DesExtractCatalogue::getExtractId, convert.getId())); .eq(DesExtractCatalogue::getExtractId, convert.getId()));
dto.getCatalogueList().forEach(item -> { dto.getCatalogueList().forEach(item -> {
item.setExtractId(convert.getId()); item.setExtractId(convert.getId());
item.setProjectId(convert.getProjectId()); item.setProjectId(convert.getProjectId());
} }
); );
extractCatalogueService.saveBatch(MapstructUtils.convert(dto.getCatalogueList(), DesExtractCatalogue.class)); extractCatalogueService.saveBatch(MapstructUtils.convert(dto.getCatalogueList(), DesExtractCatalogue.class));
}
return convert.getId(); return convert.getId();
} }
@ -282,7 +289,15 @@ public class DesExtractServiceImpl extends ServiceImpl<DesExtractMapper, DesExtr
return dto; return dto;
} }
@Override
public List<DesCollectFileVo> fileList(Long id) {
List<Long> catalogIds = extractCatalogueService.list(Wrappers.<DesExtractCatalogue>lambdaQuery()
.eq(DesExtractCatalogue::getExtractId, id)).stream().map(DesExtractCatalogue::getVolumeCatalogId).toList();
DesCollectFileBo desCollectFileBo = new DesCollectFileBo();
desCollectFileBo.setCatalogueIds(catalogIds);
List<DesVolumeFile> list = volumeFileService.list(Wrappers.<DesVolumeFile>lambdaQuery().in(DesVolumeFile::getVolumeCatalogId, catalogIds));
return BeanUtil.copyToList(list, DesCollectFileVo.class);
}
/** /**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
@ -331,9 +346,4 @@ public class DesExtractServiceImpl extends ServiceImpl<DesExtractMapper, DesExtr
} }
} }

View File

@ -89,6 +89,7 @@ public class DesPrelimSchemeServiceImpl extends ServiceImpl<DesPrelimSchemeMappe
private LambdaQueryWrapper<DesPrelimScheme> buildQueryWrapper(DesPrelimSchemeBo bo) { private LambdaQueryWrapper<DesPrelimScheme> buildQueryWrapper(DesPrelimSchemeBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DesPrelimScheme> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<DesPrelimScheme> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(DesPrelimScheme::getOrderNum);
lqw.orderByDesc(DesPrelimScheme::getId); lqw.orderByDesc(DesPrelimScheme::getId);
lqw.eq(bo.getProjectId() != null, DesPrelimScheme::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, DesPrelimScheme::getProjectId, bo.getProjectId());
lqw.eq(bo.getOssId()!= null, DesPrelimScheme::getOssId, bo.getOssId()); lqw.eq(bo.getOssId()!= null, DesPrelimScheme::getOssId, bo.getOssId());
@ -172,7 +173,7 @@ public class DesPrelimSchemeServiceImpl extends ServiceImpl<DesPrelimSchemeMappe
SysOssVo upload = ossService.upload(file, ossService.minioFileName(ContactNoticeTemplate, file)); SysOssVo upload = ossService.upload(file, ossService.minioFileName(ContactNoticeTemplate, file));
desPrelimScheme.setOssId(upload.getOssId()); desPrelimScheme.setOssId(upload.getOssId());
desPrelimScheme.setFileName(upload.getFileName()); desPrelimScheme.setFileName(upload.getOriginalName());
desPrelimScheme.setFileUrl(upload.getUrl()); desPrelimScheme.setFileUrl(upload.getUrl());
} }
@ -191,6 +192,7 @@ public class DesPrelimSchemeServiceImpl extends ServiceImpl<DesPrelimSchemeMappe
log.info("初步设计方案审核任务执行了{}", processEvent.toString()); log.info("初步设计方案审核任务执行了{}", processEvent.toString());
DesPrelimScheme prelimScheme = this.getById(Convert.toLong(processEvent.getBusinessId())); DesPrelimScheme prelimScheme = this.getById(Convert.toLong(processEvent.getBusinessId()));
prelimScheme.setStatus(processEvent.getStatus()); prelimScheme.setStatus(processEvent.getStatus());
prelimScheme.setOrderNum(BusinessStatusEnum.getByStatus(processEvent.getStatus()).getOrder());
if (processEvent.getSubmit()) { if (processEvent.getSubmit()) {
prelimScheme.setStatus(BusinessStatusEnum.WAITING.getStatus()); prelimScheme.setStatus(BusinessStatusEnum.WAITING.getStatus());
} }

View File

@ -93,6 +93,7 @@ public class DesSchemeServiceImpl extends ServiceImpl<DesSchemeMapper, DesScheme
private LambdaQueryWrapper<DesScheme> buildQueryWrapper(DesSchemeBo bo) { private LambdaQueryWrapper<DesScheme> buildQueryWrapper(DesSchemeBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DesScheme> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<DesScheme> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(DesScheme::getOrderNum);
lqw.orderByDesc(DesScheme::getId); lqw.orderByDesc(DesScheme::getId);
lqw.eq(bo.getProjectId() != null, DesScheme::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, DesScheme::getProjectId, bo.getProjectId());
lqw.eq(bo.getOssId()!= null, DesScheme::getOssId, bo.getOssId()); lqw.eq(bo.getOssId()!= null, DesScheme::getOssId, bo.getOssId());
@ -194,6 +195,7 @@ public class DesSchemeServiceImpl extends ServiceImpl<DesSchemeMapper, DesScheme
log.info("设计方案审核任务执行了{}", processEvent.toString()); log.info("设计方案审核任务执行了{}", processEvent.toString());
DesScheme descScheme = this.getById(Convert.toLong(processEvent.getBusinessId())); DesScheme descScheme = this.getById(Convert.toLong(processEvent.getBusinessId()));
descScheme.setStatus(processEvent.getStatus()); descScheme.setStatus(processEvent.getStatus());
descScheme.setOrderNum(BusinessStatusEnum.getByStatus(processEvent.getStatus()).getOrder());
if (processEvent.getSubmit()) { if (processEvent.getSubmit()) {
descScheme.setStatus(BusinessStatusEnum.WAITING.getStatus()); descScheme.setStatus(BusinessStatusEnum.WAITING.getStatus());
} }

View File

@ -11,6 +11,7 @@ import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent; 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.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -23,6 +24,7 @@ import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq; import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo; import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
import org.dromara.design.mapper.DesVolumeCatalogMapper; import org.dromara.design.mapper.DesVolumeCatalogMapper;
import org.dromara.design.service.IDesDrawingService;
import org.dromara.design.service.IDesVolumeCatalogService; import org.dromara.design.service.IDesVolumeCatalogService;
import org.dromara.design.service.IDesVolumeFileService; import org.dromara.design.service.IDesVolumeFileService;
import org.dromara.design.service.IDesVolumeFileViewerService; import org.dromara.design.service.IDesVolumeFileViewerService;
@ -66,6 +68,8 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
@Resource @Resource
private IDesVolumeFileViewerService volumeFileViewerService; private IDesVolumeFileViewerService volumeFileViewerService;
@Resource
protected IDesDrawingService drawingService;
/** /**
* 查询卷册目录 * 查询卷册目录
* *
@ -265,9 +269,11 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
Long projectId = req.getProjectId(); Long projectId = req.getProjectId();
String volumeNumber = req.getVolumeNumber(); String volumeNumber = req.getVolumeNumber();
String documentName = req.getDocumentName(); String documentName = req.getDocumentName();
String auditStatus = req.getAuditStatus();
lqw.like(StringUtils.isNotBlank(documentName), DesVolumeCatalog::getDocumentName, documentName); lqw.like(StringUtils.isNotBlank(documentName), DesVolumeCatalog::getDocumentName, documentName);
lqw.eq(StringUtils.isNotBlank(volumeNumber), DesVolumeCatalog::getVolumeNumber, volumeNumber); lqw.eq(StringUtils.isNotBlank(volumeNumber), DesVolumeCatalog::getVolumeNumber, volumeNumber);
lqw.eq(ObjectUtils.isNotEmpty(projectId), DesVolumeCatalog::getProjectId, projectId); lqw.eq(ObjectUtils.isNotEmpty(projectId), DesVolumeCatalog::getProjectId, projectId);
lqw.eq(StringUtils.isNotBlank(auditStatus),DesVolumeCatalog::getAuditStatus, auditStatus);
return lqw; return lqw;
} }
@ -341,6 +347,22 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
if (processEvent.getStatus().equals("finish")){ if (processEvent.getStatus().equals("finish")){
desVolumeCatalog.setDesignState("1"); desVolumeCatalog.setDesignState("1");
} }
if(BusinessStatusEnum.FINISH.getStatus().equals(processEvent.getStatus())){
ArrayList<DesDrawing> desDrawings = new ArrayList<>();
List<DesVolumeFile> list = volumeFileService.lambdaQuery().eq(DesVolumeFile::getVolumeCatalogId, id).list();
for (DesVolumeFile desVolumeFile : list) {
DesDrawing desDrawing = new DesDrawing();
desDrawing.setProjectId(desVolumeCatalog.getProjectId());
desDrawing.setVolumeCatalogId(desVolumeCatalog.getDesign());
desDrawing.setVolumeFileId(desVolumeFile.getId());
desDrawings.add(desDrawing);
}
drawingService.saveBatch(desDrawings);
}
this.updateById(desVolumeCatalog); this.updateById(desVolumeCatalog);
} }

View File

@ -1,9 +1,11 @@
package org.dromara.design.service.impl; package org.dromara.design.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.esotericsoftware.kryo.serializers.DefaultSerializers;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
@ -24,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -77,61 +80,68 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
throw new ServiceException("对应卷册目录不存在", HttpStatus.NOT_FOUND); throw new ServiceException("对应卷册目录不存在", HttpStatus.NOT_FOUND);
} }
// 判断是否需要废除其他文件 // 判断是否需要废除其他文件
List<Long> cancellationIds = req.getCancellationIds(); // List<Long> cancellationIds = req.getCancellationIds();
if (CollUtil.isNotEmpty(cancellationIds)) { // if (CollUtil.isNotEmpty(cancellationIds)) {
List<DesVolumeFile> list = this.listByIds(cancellationIds); // List<DesVolumeFile> list = this.listByIds(cancellationIds);
list.forEach(item -> { // list.forEach(item -> {
if (item.getStatus().equals("2")) { // if (item.getStatus().equals("2")) {
return; // return;
} // }
String name = item.getFileName(); // String name = item.getFileName();
String modified = name.replaceAll("(\\d{8})", "$1-已作废)"); // String modified = name.replaceAll("(\\d{8})", "$1-已作废)");
item.setFileName(modified); // item.setFileName(modified);
item.setStatus("2"); // item.setStatus("2");
}); // });
if (CollUtil.isNotEmpty(list)) { // if (CollUtil.isNotEmpty(list)) {
boolean update = this.updateBatchById(list); // boolean update = this.updateBatchById(list);
if (!update) { // if (!update) {
throw new ServiceException("更新卷册文件信息异常", HttpStatus.ERROR); // throw new ServiceException("更新卷册文件信息异常", HttpStatus.ERROR);
} // }
} // }
} // }
// 新增审阅人 // 新增审阅人
List<Long> userIds = req.getUserIds(); // List<Long> userIds = req.getUserIds();
if (CollUtil.isNotEmpty(userIds)) { // if (CollUtil.isNotEmpty(userIds)) {
List<DesVolumeFileViewer> viewerList = userIds.stream().map(userId -> { // List<DesVolumeFileViewer> viewerList = userIds.stream().map(userId -> {
DesVolumeFileViewer viewer = new DesVolumeFileViewer(); // DesVolumeFileViewer viewer = new DesVolumeFileViewer();
viewer.setVolumeCatalogId(volumeCatalogId); // viewer.setVolumeCatalogId(volumeCatalogId);
viewer.setUserId(userId); // viewer.setUserId(userId);
return viewer; // return viewer;
}).toList(); // }).toList();
// 删除以前的审阅人 // // 删除以前的审阅人
Long count = volumeFileViewerService.lambdaQuery() // Long count = volumeFileViewerService.lambdaQuery()
.eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalogId) // .eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalogId)
.count(); // .count();
if (count > 0) { // if (count > 0) {
boolean remove = volumeFileViewerService.remove(new LambdaQueryWrapper<DesVolumeFileViewer>() // boolean remove = volumeFileViewerService.remove(new LambdaQueryWrapper<DesVolumeFileViewer>()
.eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalogId)); // .eq(DesVolumeFileViewer::getVolumeCatalogId, volumeCatalogId));
if (!remove) { // if (!remove) {
throw new ServiceException("修改审阅人失败", HttpStatus.ERROR); // throw new ServiceException("修改审阅人失败", HttpStatus.ERROR);
} // }
} // }
boolean result = volumeFileViewerService.saveBatch(viewerList); // boolean result = volumeFileViewerService.saveBatch(viewerList);
if (!result) { // if (!result) {
throw new ServiceException("修改审阅人失败", HttpStatus.ERROR); // throw new ServiceException("修改审阅人失败", HttpStatus.ERROR);
} // }
} // }
// 查看文件是否存在 // 查看文件是否存在
if (req.getFileId() != null) { if (CollectionUtil.isNotEmpty(req.getFileIds())) {
SysOssVo ossVo = ossService.getById(req.getFileId());
ArrayList<DesVolumeFile> desVolumeFiles = new ArrayList<>();
for (Long fileId : req.getFileIds()){
SysOssVo ossVo = ossService.getById(fileId);
if (ossVo == null) { if (ossVo == null) {
throw new ServiceException("对应文件不存在", HttpStatus.NOT_FOUND); throw new ServiceException("对应文件不存在", HttpStatus.NOT_FOUND);
} }
DesVolumeFile file = new DesVolumeFile(); DesVolumeFile file = new DesVolumeFile();
BeanUtils.copyProperties(req, file); BeanUtils.copyProperties(req, file);
file.setFileId(fileId);
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
file.setFileName(ossVo.getOriginalName() + "" + today + ""); file.setFileName(ossVo.getOriginalName() + "" + today + "");
boolean save = this.save(file); desVolumeFiles.add(file);
}
boolean save = saveBatch(desVolumeFiles);
if (!save) { if (!save) {
throw new ServiceException("新增卷册文件信息异常", HttpStatus.ERROR); throw new ServiceException("新增卷册文件信息异常", HttpStatus.ERROR);
} }

View File

@ -28,6 +28,16 @@ public class MatMaterialReceive extends BaseEntity {
@TableId(value = "id") @TableId(value = "id")
private Long id; private Long id;
/**
* 采购单编号
*/
private String docCode;
/**
* 采购单id
*/
private Long docId;
/** /**
* 项目id * 项目id
*/ */

View File

@ -97,4 +97,14 @@ public class MatMaterialReceiveCreateReq implements Serializable {
*/ */
private String remark; private String remark;
/**
* 采购单编号
*/
private String docCode;
/**
* 采购单id
*/
private Long docId;
} }

View File

@ -107,4 +107,15 @@ public class MatMaterialsVo implements Serializable {
@ExcelProperty(value = "创建时间") @ExcelProperty(value = "创建时间")
private Date createTime; private Date createTime;
/**
* 采购单编号
*/
private String docCode;
/**
* 采购单id
*/
private Long docId;
} }

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.cailiaoshebei.mapper.BusLtnMapper">
</mapper>