Commit 8bc5ee58 by renrui

[add]项目信息维护

1 parent 17bc3f35
package org.arch.common.modules.archsysytem.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.arch.common.modules.archoverall.dto.BasePageEntity;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author audit
* @since 2020-08-21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "Org对象", description = "Org对象")
public class OrgDTO extends BasePageEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "组织ID")
private Long orgId;
@ApiModelProperty(value = "上级组织ID")
private Long parentOrgId;
@ApiModelProperty(value = "上级组织名称")
private String parentOrgName;
@ApiModelProperty(value = "组织编码")
private String orgNum;
@ApiModelProperty(value = "组织名称")
private String orgName;
@ApiModelProperty(value = "组织简称")
private String orgSimpleName;
@ApiModelProperty(value = "组织描述")
private String orgDesc;
@ApiModelProperty(value = "组织状态;1:启动 0:禁用")
private String orgStatus;
@ApiModelProperty(value = "组织类型;1:内部组织 2:外部组织")
private String orgType;
@ApiModelProperty(value = "排序字段")
private Integer orgSort;
@ApiModelProperty(value = "创建人")
private Long createMan;
@ApiModelProperty(value = "创建人名称")
private String createManName;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(value = "最后一次修改时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
private Long lastUpdateMan;
@ApiModelProperty(value = "父节点串")
private String ids;
@ApiModelProperty(value = "子组织")
private List<OrgDTO> children;
@ApiModelProperty(value = "基准id")
private String depId;
@ApiModelProperty(value = "基准父级id")
private String parentId;
@ApiModelProperty(value = "组织性质,DEPT:部门 CORP:单位")
private String natureCode;
@ApiModelProperty(value = "所属部门id")
private String branchOrgId;
}
package org.arch.common.modules.archsysytem.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.arch.common.modules.archoverall.dto.BasePageEntity;
import org.arch.common.modules.archsysytem.eneiity.PrjNeedFile;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 项目管理信息
* </p>
*
* @author java
* @since 2024-02-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "PrjInfo对象", description = "项目管理信息传输对象")
public class PrjInfoDTO extends BasePageEntity {
@ApiModelProperty(value = "项目ID")
@TableId(value = "prj_id", type = IdType.AUTO)
private Long prjId;
@ApiModelProperty(value = "项目编码")
@TableField("prj_code")
private String prjCode;
@ApiModelProperty(value = "项目名称")
@TableField("prj_name")
private String prjName;
@ApiModelProperty(value = "系统ID")
@TableField("app_id")
private Long appId;
@ApiModelProperty(value = "系统编码")
@TableField("app_code")
private String appCode;
@ApiModelProperty(value = "系统名称")
@TableField("app_name")
private String appName;
@ApiModelProperty(value = "项目经理")
@TableField("project_manager")
private String projectManager;
@ApiModelProperty(value = "实际竣工时间")
@TableField("cmpl_date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date cmplDate;
@ApiModelProperty(value = "项目性质,1:新建、2:续建")
@TableField("prj_plan_class")
private Long prjPlanClass;
@ApiModelProperty(value = "建管单位")
@TableField("manage_org_id")
private Long manageOrgId;
@ApiModelProperty(value = "建管部门")
@TableField("manage_dept_id")
private Long manageDeptId;
@ApiModelProperty(value = "建设类型")
@TableField("build_type")
private Byte buildType;
@ApiModelProperty(value = "承建单位")
@TableField("build_org")
private Byte buildOrg;
@ApiModelProperty(value = "前期项目ID")
@TableField("ago_prj_id")
private Long agoPrjId;
@ApiModelProperty(value = "前期项目编码")
@TableField("ago_prj_code")
private String agoPrjCode;
@ApiModelProperty(value = "前期项目名称")
@TableField("ago_prj_name")
private String agoPrjName;
@ApiModelProperty(value = "创建人")
@TableField("create_man")
private Long createMan;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
@ApiModelProperty(value = "是否删除 1:已删除 0:未删除")
@TableField("del_flag")
private Integer delFlag;
@ApiModelProperty(value = "最后一次修改时间")
@TableField("last_update_time")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lastUpdateTime;
@ApiModelProperty(value = "最后一次修改人")
@TableField("last_update_man")
private Long lastUpdateMan;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
@ApiModelProperty(value = "JSON综合字段")
private List<PrjNeedFile> filesValue;
/**
* 项目金额
*/
private BigDecimal projAmount;
/**
* 项目启动时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date projectInitiationTime;
private Long supervId;
}
package org.arch.common.modules.archsysytem.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 组织架构 VO
*
* @author xh13k
* @date 2024/05/16
*/
@Data
@ApiModel(value = "Org对象", description = "Org对象")
public class CockpitOrgVO {
@ApiModelProperty(value = "组织ID")
private Long orgId;
@ApiModelProperty(value = "组织名称")
private String orgName;
@ApiModelProperty(value = "父组织ID")
private Long parentOrgId;
}
package org.arch.common.modules.archsysytem.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 项目-需求资料信息
* </p>
*
* @author java
* @since 2024-03-14
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "PrjNeedFile对象", description = "项目-需求资料信息")
public class PrjNeedFileVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "项目需求ID")
private Long prjNeedFileId;
@ApiModelProperty(value = "业务ID")
private Long busiId;
@ApiModelProperty(value = "业务ID类型:1项目附件,2需求附件")
private Integer busiIdType;
@ApiModelProperty(value = "业务资料类型")
private String busiFileName;
@ApiModelProperty(value = "附件ID")
private Long fileId;
@ApiModelProperty(value = "附件URL")
private String fileUrl;
@ApiModelProperty(value = "附件名称")
private String fileName;
@ApiModelProperty(value = "存储名称")
private String storeFileName;
}
package org.arch.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.arch.base.Result;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.dto.PrjInfoDTO;
import org.arch.common.modules.archsysytem.eneiity.PrjInfo;
import org.arch.log.annotation.OperLog;
import org.arch.log.entity.DescContent;
import org.arch.log.logenum.LogOperTypeEnum;
import org.arch.log.logenum.LogTypeEnum;
import org.arch.system.serive.PrjInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 项目管理信息 前端控制器
* </p>
*
* @author java
* @since 2024-02-28
*/
@Api(value = "/prj-info", tags = {"项目信息管理"})
@RestController
@RequestMapping("/prj-info")
public class PrjInfoController {
@Autowired
private PrjInfoService prjInfoService;
@ApiOperation(DescContent.QUERY_LIST_PROJECTS)
@PostMapping(value = "/")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-查询列表", moduleName = "项目信息管理")
public Result iPage(@RequestBody PrjInfoDTO params) {
IPage<PrjInfo> aPage = prjInfoService.iPage(params, PageDTO.of(params.getCurrent(), params.getPageSize()));
return Result.success(aPage);
}
@ApiOperation("新增")
@PostMapping(value = "/ad")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-新增项目信息管理", moduleName = "新增项目信息管理")
public Result ad(@RequestBody @Validated PrjInfoDTO params) {
return Result.success(prjInfoService.insert(params));
}
@ApiOperation("修改")
@PostMapping(value = "/upd")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-修改项目信息管理", moduleName = "修改项目信息管理")
public Result upd(@RequestBody @Validated PrjInfoDTO params) {
return Result.success(prjInfoService.update(params));
}
@ApiOperation(value = "不分页查询", notes = "不分页查询", httpMethod = "POST")
@PostMapping(value = "/prjList")
@OperLog(value = LogOperTypeEnum.QUERY, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-不分页查询项目信息管理", moduleName = "不分页查询项目信息管理")
public Result prjList(@RequestBody PrjInfoDTO params) {
List<PrjInfo> prjList = prjInfoService.prjList(params);
return Result.success(prjList);
}
@ApiOperation("查询项目详情")
@PostMapping(value = "/qryPrj")
@OperLog(value = LogOperTypeEnum.DELETE, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-查询项目详情", moduleName = "查询项目详情")
public Result qryPrj(@RequestBody PrjInfoDTO params) {
return Result.success(prjInfoService.qryPrj(params));
}
@ApiOperation("项目删除")
@PostMapping(value = "/dPrj")
@OperLog(value = LogOperTypeEnum.DELETE, logTypeValue = LogTypeEnum.BUSI_LOG, operDes = "项目信息管理-项目删除", moduleName = "项目删除")
public Result delete(@RequestBody @Validated BatchRemoveDTO params) {
boolean b = prjInfoService.delBatch(params);
return b ? Result.success("删除成功") : Result.error("删除失败");
}
}
package org.arch.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.arch.common.modules.archsysytem.dto.OrgDTO;
import org.arch.common.modules.archsysytem.vo.CockpitOrgVO;
import org.arch.common.modules.sysmange.entity.Org;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author audit
* @since 2020-08-21
*/
public interface OrgMapper extends BaseMapper<Org> {
/**
* 查询组织机构列表
*
* @param objectPage 对象页面
* @param params 查询包装器
* @return {@link Page}<{@link Org}>
*/
Page<Org> selectForPage(Page<Object> objectPage, @Param("params") OrgDTO params);
/**
* 获取组织机构下拉框
*
* @return List<Org>
*/
List<Org> getOrgOption();
/**
* 获取部门下拉框
*
* @return List<Org>
*/
List<Org> getDeptOption();
/**
* 查询组织列表
*
* @return {@link List }<{@link Org }>
*/
List<CockpitOrgVO> queryOrgList();
}
package org.arch.system.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Param;
import org.arch.common.modules.archoverall.dto.design.ArchiViewDTO;
import org.arch.common.modules.archsysytem.eneiity.PrjNeedFile;
import org.arch.common.modules.archsysytem.vo.PrjNeedFileVO;
import java.util.List;
/**
* <p>
* 项目-需求资料信息 Mapper 接口
* </p>
*
* @author java
* @since 2024-03-14
*/
public interface PrjNeedFileMapper extends MPJBaseMapper<PrjNeedFile> {
/**
* 根据项目ID或者需求ID查询附件信息
*
* @param prjId 项目 ID
* @param needId 需求 ID
* @return {@link List}<{@link PrjNeedFile}>
*/
List<PrjNeedFile> fileInfo(@Param("prjId") Long prjId, @Param("needId") Long needId);
/**
* 项目或者需求附件列表
*
* @param prjNeedFile 参数
* @return {@link List}<{@link PrjNeedFile}>
*/
List<PrjNeedFile> queryNeedFileByNeedId(PrjNeedFile prjNeedFile);
/**
* 根据项目ID或者需求ID或附件信息
*
* @param params 参数
* @return {@link PrjNeedFileVO}
*/
PrjNeedFileVO queryByPriAndType(ArchiViewDTO params);
}
package org.arch.system.serive;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.dto.PrjInfoDTO;
import org.arch.common.modules.archsysytem.eneiity.PrjInfo;
import java.util.List;
/**
* <p>
* 项目管理信息 服务类
* </p>
*
* @author java
* @since 2024-02-28
*/
public interface PrjInfoService extends IService<PrjInfo> {
/**
* 分页
*
* @param params 参数
* @param page 页
* @return {@link IPage }<{@link PrjInfo }>
*/
IPage<PrjInfo> iPage(PrjInfoDTO params, Page<PrjInfo> page);
/**
* 插入
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean insert(PrjInfoDTO params);
/**
* 更新
*
* @param params 参数
* @return {@link Boolean }
*/
Boolean update(PrjInfoDTO params);
/**
* 列表
*
* @param params 参数
* @return {@link List }<{@link PrjInfo }>
*/
List<PrjInfo> prjList(PrjInfoDTO params);
/**
* 详情
*
* @param params 参数
* @return {@link PrjInfo }
*/
PrjInfo qryPrj(PrjInfoDTO params);
/**
* 批量删除
*
* @param params 参数
*/
Boolean delBatch(BatchRemoveDTO params);
}
package org.arch.system.serive;
import com.baomidou.mybatisplus.extension.service.IService;
import org.arch.common.modules.archsysytem.eneiity.PrjNeedFile;
import java.util.List;
/**
* <p>
* 项目-需求资料信息 服务类
* </p>
*
* @author java
* @since 2024-03-14
*/
public interface PrjNeedFileService extends IService<PrjNeedFile> {
Boolean inster(PrjNeedFile params);
Boolean update(PrjNeedFile params);
/**
* 项目或者需求附件列表
*
* @param params 参数
* @return {@link List }<{@link PrjNeedFile }>
*/
List<PrjNeedFile> fileList(PrjNeedFile params);
/**
* 项目附件关系表
*
* @param params 参数
* @param prjId 项目 ID
* @param needId 需要 ID
* @return {@link Boolean}
*/
void insertPrjNeedFile(List<PrjNeedFile> params, Long prjId, Long needId);
/**
* 根据项目ID或者需求ID查询附件信息
*
* @param prjId 项目 ID
* @param needId 需求 ID
* @return {@link List}<{@link PrjNeedFile}>
*/
List<PrjNeedFile> fileInfo(Long prjId, Long needId);
}
package org.arch.system.serive.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.arch.common.modules.archoverall.dto.BatchRemoveDTO;
import org.arch.common.modules.archsysytem.dto.PrjInfoDTO;
import org.arch.common.modules.archsysytem.eneiity.AppInfo;
import org.arch.common.modules.archsysytem.eneiity.PrjInfo;
import org.arch.common.modules.archsysytem.eneiity.PrjNeedFile;
import org.arch.common.modules.sysmange.entity.Org;
import org.arch.system.mapper.AppInfoMapper;
import org.arch.system.mapper.OrgMapper;
import org.arch.system.mapper.PrjInfoMapper;
import org.arch.system.mapper.PrjNeedFileMapper;
import org.arch.system.serive.PrjInfoService;
import org.arch.system.serive.PrjNeedFileService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* <p>
* 项目管理信息 服务实现类
* </p>
*
* @author java
* @since 2024-02-28
*/
@Service
@RequiredArgsConstructor
public class PrjInfoServiceImpl extends ServiceImpl<PrjInfoMapper, PrjInfo> implements PrjInfoService {
private final PrjNeedFileService prjNeedFileService;
private final PrjNeedFileMapper prjNeedFileMapper;
private final AppInfoMapper appInfoMapper;
private final OrgMapper orgMapper;
@Override
public IPage<PrjInfo> iPage(PrjInfoDTO params, Page<PrjInfo> page) {
return baseMapper.selectPage(page, queryWrapper(params));
}
@Override
@Transactional
public Boolean insert(PrjInfoDTO params) {
PrjInfo model = new PrjInfo();
AppInfo appInfo = appInfoMapper.selectById(params.getAppId());
Assert.notNull(appInfo, "系统ID不能为空");
Long count = baseMapper.selectCount(Wrappers.lambdaQuery(PrjInfo.class)
.eq(PrjInfo::getPrjName, params.getPrjName()));
Assert.isFalse(count > 0, "项目名称已存在");
BeanUtil.copyProperties(params, model);
model.setPrjCode(IdUtil.fastUUID());
model.setProjectManager(appInfo.getProjectManager());
Org org = orgMapper.selectById(params.getManageOrgId());
Assert.notNull(org, "建管单位不存在");
model.setManageOrgCode(org.getOrgCode());
boolean save = save(model);
prjNeedFileService.insertPrjNeedFile(params.getFilesValue(), model.getPrjId(), null);
return save;
}
@Override
@Transactional
public Boolean update(PrjInfoDTO params) {
PrjInfo model = new PrjInfo();
AppInfo appInfo = appInfoMapper.selectById(params.getAppId());
Assert.notNull(appInfo, "系统ID不能为空");
Long prjId = params.getPrjId();
Assert.notNull(prjId, "项目ID不能为空");
Long count = baseMapper.selectCount(Wrappers.lambdaQuery(PrjInfo.class)
.eq(PrjInfo::getPrjName, params.getPrjName())
.notIn(PrjInfo::getPrjId, prjId));
Assert.isFalse(count > 0, "项目名称已存在");
prjNeedFileService.insertPrjNeedFile(params.getFilesValue(), prjId, null);
BeanUtil.copyProperties(params, model);
Org org = orgMapper.selectById(params.getManageOrgId());
Assert.notNull(org, "建管单位不存在");
model.setManageOrgCode(org.getOrgCode());
model.setProjectManager(appInfo.getProjectManager());
return updateById(model);
}
@Override
public List<PrjInfo> prjList(PrjInfoDTO params) {
return baseMapper.selectList(queryWrapper(params));
}
private LambdaQueryWrapper<PrjInfo> queryWrapper(PrjInfoDTO params) {
return Wrappers.lambdaQuery(PrjInfo.class)
.select()
.like(StrUtil.isNotBlank(params.getAppName()), PrjInfo::getAppName, params.getAppName())
.like(StrUtil.isNotBlank(params.getPrjName()), PrjInfo::getPrjName, params.getPrjName())
.like(StrUtil.isNotBlank(params.getProjectManager()), PrjInfo::getProjectManager, params.getProjectManager())
.eq(Objects.nonNull(params.getAppId()), PrjInfo::getAppId, params.getAppId())
.eq(Objects.nonNull(params.getAppCode()), PrjInfo::getAppCode, params.getAppCode())
.eq(Objects.nonNull(params.getManageOrgId()), PrjInfo::getManageOrgId, params.getManageOrgId())
.eq(Objects.nonNull(params.getManageDeptId()), PrjInfo::getManageDeptId, params.getManageDeptId())
.eq(Objects.nonNull(params.getBuildType()), PrjInfo::getBuildType, params.getBuildType())
.eq(Objects.nonNull(params.getBuildOrg()), PrjInfo::getBuildOrg, params.getBuildOrg())
.eq(Objects.nonNull(params.getPrjPlanClass()), PrjInfo::getPrjPlanClass, params.getPrjPlanClass())
.eq(Objects.nonNull(params.getCreateMan()), PrjInfo::getCreateMan, params.getCreateMan())
.ge(Objects.nonNull(params.getBeginTime()), PrjInfo::getCreateTime, DateUtil.format(params.getBeginTime(), "yyyy-MM-dd 00:00:00"))
.le(Objects.nonNull(params.getBeginTime()), PrjInfo::getCreateTime, DateUtil.format(params.getEndTime(), "yyyy-MM-dd 23:59:59"));
}
@Override
public PrjInfo qryPrj(PrjInfoDTO params) {
PrjInfo prjInfo = baseMapper.selectById(params.getPrjId());
Assert.notNull(prjInfo, "项目不存在!");
prjInfo.setFilesValue(prjNeedFileMapper.fileInfo(prjInfo.getPrjId(), null));
return prjInfo;
}
@Override
@Transactional
public Boolean delBatch(BatchRemoveDTO params) {
// 项目 ids
List<Long> ids = params.getIds();
// 项目附件
List<PrjNeedFile> prjNeedFiles = prjNeedFileMapper.selectList(Wrappers.lambdaQuery(PrjNeedFile.class)
.in(PrjNeedFile::getBusiId, ids)
.eq(PrjNeedFile::getBusiIdType, 1));
if (CollUtil.isNotEmpty(prjNeedFiles)) {
prjNeedFileMapper.deleteBatchIds(prjNeedFiles.stream()
.map(PrjNeedFile::getPrjNeedFileId)
.collect(Collectors.toList()));
}
return removeByIds(ids);
}
}
package org.arch.system.serive.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.arch.common.modules.archsysytem.eneiity.PrjNeedFile;
import org.arch.system.mapper.PrjNeedFileMapper;
import org.arch.system.serive.PrjNeedFileService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* <p>
* 项目-需求资料信息 服务实现类
* </p>
*
* @author java
* @since 2024-03-14
*/
@Service
public class PrjNeedFileServiceImpl extends ServiceImpl<PrjNeedFileMapper, PrjNeedFile> implements PrjNeedFileService {
@Override
public Boolean inster(PrjNeedFile params) {
return baseMapper.insert(params) > 0;
}
@Override
public Boolean update(PrjNeedFile params) {
LambdaQueryWrapper<PrjNeedFile> wrapper = Wrappers.lambdaQuery(PrjNeedFile.class)
.select()
.eq(Objects.nonNull(params.getBusiId()), PrjNeedFile::getBusiId, params.getBusiId())
.eq(Objects.nonNull(params.getBusiIdType()), PrjNeedFile::getBusiIdType, params.getBusiIdType())
.eq(StrUtil.isNotBlank(params.getBusiFileName()), PrjNeedFile::getBusiFileName, params.getBusiFileName());
List<PrjNeedFile> fileList = baseMapper.selectList(wrapper);
if (fileList.isEmpty()) {
throw new IllegalArgumentException("附件信息不存在!");
}
PrjNeedFile existingFile = fileList.get(0);
params.setPrjNeedFileId(existingFile.getPrjNeedFileId());
return baseMapper.updateById(params) > 0;
}
@Override
public List<PrjNeedFile> fileList(PrjNeedFile params) {
return baseMapper.queryNeedFileByNeedId(params);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void insertPrjNeedFile(List<PrjNeedFile> params, Long prjId, Long needId) {
// 这块务必传入prjId或者needId,否则会删除所有数据
if (Objects.nonNull(prjId)) {
List<PrjNeedFile> list = list(Wrappers.lambdaQuery(PrjNeedFile.class)
.eq(PrjNeedFile::getBusiId, prjId)
.eq(PrjNeedFile::getBusiIdType, 1));
if (CollectionUtil.isNotEmpty(list)) {
removeByIds(list.stream().map(PrjNeedFile::getPrjNeedFileId).collect(Collectors.toList()));
}
}
if (Objects.nonNull(needId)) {
List<PrjNeedFile> list = list(Wrappers.lambdaQuery(PrjNeedFile.class)
.eq(PrjNeedFile::getBusiId, needId)
.eq(PrjNeedFile::getBusiIdType, 2));
if (CollectionUtil.isNotEmpty(list)) {
removeByIds(list.stream().map(PrjNeedFile::getPrjNeedFileId).collect(Collectors.toList()));
}
}
if (CollectionUtil.isNotEmpty(params)) {
params.forEach(it -> {
Long busFileType = it.getBusiFileType();
Long fileId = it.getFileId();
Assert.notNull(busFileType, "项目资料类型不能为空");
Assert.notNull(fileId, "文件ID不能为空");
if (Objects.nonNull(prjId)) {
it.setBusiId(prjId);
it.setBusiIdType(1);
} else {
it.setBusiId(needId);
it.setBusiIdType(2);
}
});
}
saveBatch(params);
}
@Override
public List<PrjNeedFile> fileInfo(Long prjId, Long needId) {
return baseMapper.fileInfo(prjId, needId);
}
}
<?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.arch.system.mapper.OrgMapper">
<resultMap id="BaseResultMap" type="org.arch.common.modules.sysmange.entity.Org">
<!--@mbg.generated-->
<!--@Table sys_org-->
<id column="org_id" jdbcType="BIGINT" property="orgId"/>
<result column="parent_org_id" jdbcType="BIGINT" property="parentOrgId"/>
<result column="org_code" jdbcType="VARCHAR" property="orgCode"/>
<result column="org_name" jdbcType="VARCHAR" property="orgName"/>
<result column="org_simple_name" jdbcType="VARCHAR" property="orgSimpleName"/>
<result column="org_desc" jdbcType="VARCHAR" property="orgDesc"/>
<result column="org_status" jdbcType="VARCHAR" property="orgStatus"/>
<result column="org_type" jdbcType="VARCHAR" property="orgType"/>
<result column="org_sort" jdbcType="INTEGER" property="orgSort"/>
<result column="create_man" jdbcType="BIGINT" property="createMan"/>
<result column="create_man_name" jdbcType="VARCHAR" property="createManName"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="last_update_time" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
<result column="last_update_man" jdbcType="BIGINT" property="lastUpdateMan"/>
<result column="ids" jdbcType="VARCHAR" property="ids"/>
<result column="dep_id" jdbcType="VARCHAR" property="depId"/>
<result column="parent_id" jdbcType="VARCHAR" property="parentId"/>
<result column="nature_code" jdbcType="VARCHAR" property="natureCode"/>
<result column="is_show" jdbcType="TINYINT" property="isShow"/>
<result column="branch_org_id" jdbcType="BIGINT" property="branchOrgId"/>
</resultMap>
<!--获取组织机构下拉框-->
<select id="getOrgOption" resultMap="BaseResultMap">
select so.org_id,
so.parent_org_id,
so.org_code,
so.org_name,
so.org_simple_name,
so.org_desc,
so.org_status,
so.org_type,
so.org_sort,
so.create_man,
so.create_time,
so.last_update_time,
so.last_update_man,
so.ids,
so.dep_id,
so.parent_id,
so.nature_code,
so.is_show,
so.branch_org_id
from sys_org so
where so.org_status = '1'
and so.parent_org_id = 0
order by so.org_sort
</select>
<!--获取部门下拉-->
<select id="getDeptOption" resultMap="BaseResultMap">
select so.org_id,
so.parent_org_id,
so.org_code,
so.org_name,
so.org_simple_name,
so.org_desc,
so.org_status,
so.org_type,
so.org_sort,
so.create_man,
so.create_time,
so.last_update_time,
so.last_update_man,
so.ids,
so.dep_id,
so.parent_id,
so.nature_code,
so.is_show,
so.branch_org_id
from sys_org so
where so.org_status = '1'
and so.parent_org_id = 0
order by so.org_sort
</select>
<!--查询组织机构列表-->
<select id="selectForPage" resultMap="BaseResultMap">
select a.*,
b.name as create_man_name
from sys_org a
left join sys_user b on a.create_man = b.id
<where>
<if test="params.orgName != null and params.orgName != ''">
and a.org_name like concat('%', #{params.orgName}, '%')
</if>
<if test="params.parentOrgId != null">
and a.parent_org_id = #{params.parentOrgId}
</if>
</where>
order by a.parent_org_id,
a.org_sort
</select>
<!--查询所有组织架构-->
<select id="queryOrgList" resultType="org.arch.common.modules.archsysytem.vo.CockpitOrgVO">
select so.org_id,
so.parent_org_id,
so.org_name
from sys_org so
where so.org_status = '1'
order by so.parent_org_id,
so.org_sort
</select>
</mapper>
\ No newline at end of file
<?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.arch.system.mapper.PrjNeedFileMapper">
<resultMap id="BaseResultMap" type="org.arch.common.modules.archsysytem.eneiity.PrjNeedFile">
<!--@mbg.generated-->
<!--@Table prj_need_file-->
<id column="prj_need_file_id" jdbcType="BIGINT" property="prjNeedFileId"/>
<result column="busi_id" jdbcType="BIGINT" property="busiId"/>
<result column="busi_id_type" jdbcType="BIGINT" property="busiIdType"/>
<result column="busi_file_name" jdbcType="VARCHAR" property="busiFileName"/>
<result column="file_id" jdbcType="BIGINT" property="fileId"/>
<result column="file_name" jdbcType="VARCHAR" property="fileName"/>
<result column="busi_file_type" property="busiFileType"/>
</resultMap>
<!--项目或者需求附件信息-->
<select id="fileInfo" resultMap="BaseResultMap">
select pnf.prj_need_file_id,
pnf.busi_id,
pnf.busi_id_type,
pnf.busi_file_name,
pnf.busi_file_type,
pnf.file_id,
sf.file_name
from prj_need_file pnf
left join sys_file sf on (pnf.file_id = sf.id)
<where>
<if test="prjId != null">
and pnf.busi_id = #{prjId}
and pnf.busi_id_type = 1
</if>
<if test="needId != null">
and pnf.busi_id = #{needId}
and pnf.busi_id_type = 2
</if>
</where>
</select>
<!--项目或者需求附件列表-->
<select id="queryNeedFileByNeedId" resultMap="BaseResultMap">
select pnf.prj_need_file_id,
pnf.busi_id,
pnf.busi_id_type,
pnf.busi_file_name,
pnf.busi_file_type,
pnf.file_id,
sf.file_name
from prj_need_file pnf
left join sys_file sf on (pnf.file_id = sf.id)
WHERE busi_id = #{busiId}
AND busi_id_type = #{busiIdType}
<if test="busiFileNameList != null and busiFileNameList.size() != 0">
AND busi_file_name IN
<foreach collection="busiFileNameList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<!--查询项目附件-->
<select id="queryByPriAndType" resultType="org.arch.common.modules.archsysytem.vo.PrjNeedFileVO">
select sf.id as file_id,
sf.url as file_url,
sf.file_name as file_name,
sf.ftp_store_file_name as store_file_name
from prj_need_file pnf
left join sys_file sf on pnf.file_id = sf.id
where pnf.busi_id = #{prjId}
and pnf.busi_file_name = #{busiFileName}
and pnf.busi_id_type = 1
limit 1
</select>
</mapper>
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!