diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java index 563b71b6..11684ec1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java @@ -28,6 +28,7 @@ import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -37,8 +38,11 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.vo.PdMasterBymiAndQt; +import org.dromara.patch.domain.vo.PdMasterVo; import org.dromara.patch.service.IPdMasterService; +import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.service.IBusProjectService; +import org.dromara.project.service.IBusUserProjectRelevancyService; import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.RouterVo; import org.dromara.system.service.impl.SysMenuServiceImpl; @@ -98,6 +102,8 @@ public class PersonalHomeController extends BaseController { private final SysMenuServiceImpl sysMenuService; + private final IBusUserProjectRelevancyService userProjectRelevancyService; + // region AI 模块 /** @@ -189,7 +195,7 @@ public class PersonalHomeController extends BaseController { QueryWrapper queryWrapper = new QueryWrapper<>(); List definitionIds = new ArrayList<>(); - if (!"0".equals(projectId)) { + if (StringUtils.isNotBlank(projectId) && !"0".equals(projectId)) { List flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper() .select(FlowDefinition::getId) .like(FlowDefinition::getFlowCode, projectId)); @@ -198,9 +204,31 @@ public class PersonalHomeController extends BaseController { definitionIds.add(flowDefinition.getId()); }); } - if (definitionIds.isEmpty()) { - return null; + } else { + // 获取当前用户的所有项目 + List projectRelevancyList = userProjectRelevancyService.lambdaQuery() + .eq(BusUserProjectRelevancy::getUserId, LoginHelper.getUserId()) + .list(); + List projectIds = projectRelevancyList.stream().map(BusUserProjectRelevancy::getProjectId).distinct().toList(); + if (CollUtil.isEmpty(projectIds)) { + return R.ok(); } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(FlowDefinition::getId); + lqw.and(w -> { + for (Long id : projectIds) { + w.or().like(FlowDefinition::getFlowCode, id); + } + }); + List flowDefinitions = flowDefinitionMapper.selectList(lqw); + if (flowDefinitions != null && !flowDefinitions.isEmpty()) { + flowDefinitions.forEach(flowDefinition -> { + definitionIds.add(flowDefinition.getId()); + }); + } + } + if (definitionIds.isEmpty()) { + return R.ok(); } queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); @@ -229,7 +257,7 @@ public class PersonalHomeController extends BaseController { taskInfoDto.setTotal((long) page.size()); taskInfoDto.setWeekCount((long) weeklyTasks.size()); - BusPdSjVo busPdSjVo = pdMasterService.queryPageListByDate(); + BusPdSjVo busPdSjVo = pdMasterService.queryPageListByDate(projectId); BusWjzxSjDateVo busWjzxSjDateVo = busWjzxService.queryWjzx(); taskInfoDto.setBusWjzxSjDateVo(busWjzxSjDateVo); @@ -299,6 +327,16 @@ public class PersonalHomeController extends BaseController { return pdMasterService.queryPageListBy(bo, pageQuery); } + /** + * 获取派单详细信息 + * + * @param id 主键 + */ + @GetMapping("/pd/{id}") + public R getPdInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(pdMasterService.queryById(id)); + } /** * 查询备忘录列表 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java index 1877804d..13b1e3a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java @@ -7,10 +7,12 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.apache.poi.ss.usermodel.IndexedColors; import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.*; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -20,6 +22,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.design.domain.bo.*; import org.dromara.design.domain.vo.*; import org.dromara.design.exportUtil.bill.*; +import org.dromara.design.service.IBusBillofquantitiesService; import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -42,6 +45,7 @@ import java.util.*; public class BusBillofquantitiesVersionsController extends BaseController { private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; + private final IBusBillofquantitiesService busBillofquantitiesService; /** * 导入excel @@ -224,38 +228,38 @@ public class BusBillofquantitiesVersionsController extends BaseController { // return R.ok(busBillofquantitiesVersionsService.queryById(id)); // } // -// /** -// * 新增工程量清单版本 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:add") -// @Log(title = "工程量清单版本", businessType = BusinessType.INSERT) -// @RepeatSubmit() -// @PostMapping() -// public R add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesVersionsBo bo) { -// return toAjax(busBillofquantitiesVersionsService.insertByBo(bo)); -// } -// -// /** -// * 修改工程量清单版本 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:edit") -// @Log(title = "工程量清单版本", businessType = BusinessType.UPDATE) -// @RepeatSubmit() -// @PutMapping() -// public R edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesVersionsBo bo) { -// return toAjax(busBillofquantitiesVersionsService.updateByBo(bo)); -// } -// -// /** -// * 删除工程量清单版本 -// * -// * @param ids 主键串 -// */ -// @SaCheckPermission("design:billofquantitiesVersions:remove") -// @Log(title = "工程量清单版本", businessType = BusinessType.DELETE) -// @DeleteMapping("/{ids}") -// public R remove(@NotEmpty(message = "主键不能为空") -// @PathVariable Long[] ids) { -// return toAjax(busBillofquantitiesVersionsService.deleteWithValidByIds(List.of(ids), true)); -// } + /** + * 新增工程量清单版本 + */ + @SaCheckPermission("design:billofquantitiesVersions:add") + @Log(title = "工程量清单版本", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BusBillofquantitiesBo bo) { + return toAjax(busBillofquantitiesService.insertByBo(bo)); + } + + /** + * 修改工程量清单版本 + */ + @SaCheckPermission("design:billofquantitiesVersions:edit") + @Log(title = "工程量清单版本", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusBillofquantitiesBo bo) { + return toAjax(busBillofquantitiesService.updateByBo(bo)); + } + + /** + * 删除工程量清单版本 + * + * @param ids 主键串 + */ + @SaCheckPermission("design:billofquantitiesVersions:remove") + @Log(title = "工程量清单版本", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(busBillofquantitiesService.deleteWithValidByIds(List.of(ids), true)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java index e3d52082..68a91124 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSchemeController.java @@ -113,8 +113,8 @@ public class DesSchemeController extends BaseController { @Log(title = "设计方案", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/upload") - public R addFile(MultipartFile file, Long projectId) { - return R.ok(desSchemeService.addFile(file, projectId)); + public R addFile(MultipartFile file, Long projectId,String type) { + return R.ok(desSchemeService.addFile(file, projectId, type)); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java index e71abbe1..bc40bb69 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesScheme.java @@ -51,6 +51,10 @@ public class DesScheme extends BaseEntity { * 审核状态 */ private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; /** * 排序字段 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java index a10da649..43305188 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusBillofquantitiesBo.java @@ -79,5 +79,10 @@ public class BusBillofquantitiesBo extends BaseEntity { */ private String remark; + /** + * 项目ID + */ + private Long projectId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java index cb6a008e..5601fcca 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSchemeBo.java @@ -52,5 +52,10 @@ public class DesSchemeBo extends BaseEntity { */ private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java index 32064f76..0dd5cdb4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSchemeVo.java @@ -64,5 +64,10 @@ public class DesSchemeVo implements Serializable { @ExcelProperty(value = "审核状态") private String status; + /** + * 设计方案类型(1、可研,2、施工,3、初设) + */ + private String schemeType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java index c0d332b5..ddfd2298 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSchemeService.java @@ -1,8 +1,6 @@ package org.dromara.design.service; import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotNull; -import org.dromara.common.core.domain.R; import org.dromara.design.domain.dto.ExportDto; import org.dromara.design.domain.vo.DesSchemeVo; import org.dromara.design.domain.bo.DesSchemeBo; @@ -11,7 +9,6 @@ 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.PathVariable; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; @@ -78,7 +75,7 @@ public interface IDesSchemeService extends IService{ /** * 添加文件 */ - Long addFile(MultipartFile file, Long projectId); + Long addFile(MultipartFile file, Long projectId, String type); /** * 修改文件 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java index c1f43f17..81d48698 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesServiceImpl.java @@ -1,6 +1,11 @@ package org.dromara.design.service.impl; +import cn.hutool.core.convert.NumberChineseFormatter; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,12 +14,17 @@ 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.dromara.common.utils.BatchNumberGenerator; +import org.dromara.design.domain.BusBillofquantitiesVersions; +import org.dromara.design.service.IBusBillofquantitiesVersionsService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.design.domain.bo.BusBillofquantitiesBo; import org.dromara.design.domain.vo.BusBillofquantitiesVo; import org.dromara.design.domain.BusBillofquantities; import org.dromara.design.mapper.BusBillofquantitiesMapper; import org.dromara.design.service.IBusBillofquantitiesService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -31,6 +41,9 @@ import java.util.Collection; public class BusBillofquantitiesServiceImpl extends ServiceImpl implements IBusBillofquantitiesService { private final BusBillofquantitiesMapper baseMapper; + @Lazy + @Resource + private IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; /** * 查询工程量清单 @@ -94,6 +107,31 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl().eq(BusBillofquantities::getPid, bo.getPid())) +1; + if ("0".equals(bo.getPid())){ + //当父节点为0时,生成中文编号作为顶层 + String s = NumberChineseFormatter.numberCharToChinese((char) count.longValue(), false); + add.setNum(s); + }else { + //当父节点不为0时,生成数字编号作为子节点编号 + BusBillofquantities busBillofquantities = baseMapper.selectOne(new LambdaQueryWrapper().eq(BusBillofquantities::getSid, bo.getPid())); + if (busBillofquantities == null){ + throw new ServiceException("父节点不存在"); + } + if ("0".equals(busBillofquantities.getPid())){ + add.setNum(count.toString()); + }else { + if (busBillofquantities.getNum() != null){ + //当父节点有编号时,生成数字编号作为子节点编号 无编号时,不生成编号 + String s = busBillofquantities.getNum() + "." + count; + add.setNum(s); + } + } + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); @@ -117,8 +155,24 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl() + .eq(BusBillofquantitiesVersions::getVersions, entity.getVersions())); + if (versions == null) { + throw new ServiceException("版本不存在"); + } + if (!BusinessStatusEnum.DRAFT.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.BACK.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.CANCEL.getStatus().equals(versions.getStatus())){ + if (entity.getId() != null){ + throw new ServiceException("版本处于审核中,不能修改"); + }else { + throw new ServiceException("版本处于审核中,不能新增"); + } + } } /** @@ -132,6 +186,25 @@ public class BusBillofquantitiesServiceImpl extends ServiceImpl ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 + for (Long id : ids) { + BusBillofquantities busBillofquantities = baseMapper.selectById(id); + if (busBillofquantities == null) { + throw new ServiceException("数据不存在"); + } + BusBillofquantitiesVersions versions = busBillofquantitiesVersionsService + .getBaseMapper() + .selectOne(new LambdaQueryWrapper() + .eq(BusBillofquantitiesVersions::getVersions, busBillofquantities.getVersions())); + if (versions == null) { + throw new ServiceException("版本不存在"); + } + if (!BusinessStatusEnum.DRAFT.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.BACK.getStatus().equals(versions.getStatus()) + && !BusinessStatusEnum.CANCEL.getStatus().equals(versions.getStatus())){ + throw new ServiceException("版本处于审核中,不能删除"); + } + } + } return baseMapper.deleteByIds(ids) > 0; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java index c0cb1edf..984429a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSchemeServiceImpl.java @@ -18,12 +18,7 @@ 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.dromara.common.oss.core.OssClient; -import org.dromara.common.oss.factory.OssFactory; -import org.dromara.design.domain.DesCollectFile; -import org.dromara.design.domain.DesPrelimScheme; import org.dromara.design.domain.dto.ExportDto; -import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; import org.springframework.context.event.EventListener; @@ -46,7 +41,6 @@ import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.time.Duration; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Collection; @@ -173,7 +167,7 @@ public class DesSchemeServiceImpl extends ServiceImpl{ +public interface IPdMasterService extends IService { List queryProgressList(Long masterId); + void validEntityBeforeSave(PdMaster entity); // 新增进度 @@ -32,6 +33,7 @@ public interface IPdMasterService extends IService{ // 删除进度 Boolean removeProgress(Long id); + /** * 查询派单 * @@ -94,7 +96,8 @@ public interface IPdMasterService extends IService{ /** * 查询派单列表 * + * @param projectId 项目 id * @return 派单列表 */ - BusPdSjVo queryPageListByDate(); + BusPdSjVo queryPageListByDate(String projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java index 1f66a312..933aac5c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java @@ -1,35 +1,33 @@ package org.dromara.patch.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import cn.hutool.core.collection.CollUtil; +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.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.dromara.bigscreen.domain.vo.BusPdSjVo; 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.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.common.translation.annotation.Translation; +import org.dromara.patch.domain.PdMaster; import org.dromara.patch.domain.PdMasterSon; import org.dromara.patch.domain.PdMasterUser; +import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.bo.PdMasterProgressReq; import org.dromara.patch.domain.vo.PdMasterBymiAndQt; import org.dromara.patch.domain.vo.PdMasterProgressVo; -import org.dromara.patch.enums.TaskStatusEnum; -import org.dromara.patch.service.IPdMasterSonService; -import org.dromara.patch.service.IPdMasterUserService; -import org.dromara.system.domain.SysUser; -import org.springframework.stereotype.Service; -import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.vo.PdMasterVo; -import org.dromara.patch.domain.PdMaster; +import org.dromara.patch.enums.TaskStatusEnum; import org.dromara.patch.mapper.PdMasterMapper; import org.dromara.patch.service.IPdMasterService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.patch.service.IPdMasterSonService; +import org.dromara.patch.service.IPdMasterUserService; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -86,7 +84,7 @@ public class PdMasterServiceImpl extends ServiceImpl i if (one == null) { throw new RuntimeException("执行人未找到!"); } - if (!Objects.equals(userId, one.getSlaveid())){ + if (!Objects.equals(userId, one.getSlaveid())) { throw new RuntimeException("执行人不匹配!"); } if (progress.getOrdersId() == null) { @@ -105,7 +103,7 @@ public class PdMasterServiceImpl extends ServiceImpl i bigDecimal = bigDecimal.add(new BigDecimal(masterSon.getProgress())); } //bigDecimal是否为100,100变更数据状态 - if (bigDecimal.compareTo(new BigDecimal("100")) == 0){ + if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { //更新主表状态 PdMaster pdMaster = baseMapper.selectById(progress.getOrdersId()); pdMaster.setTaskStatus(TaskStatusEnum.FINISHED.getValue()); @@ -116,6 +114,7 @@ public class PdMasterServiceImpl extends ServiceImpl i } return false; } + @Override public Boolean editProgress(PdMasterProgressVo progress) { if (progress.getOrdersId() == null) { @@ -158,8 +157,10 @@ public class PdMasterServiceImpl extends ServiceImpl i baseMapper.updateById(master); } } + /** * 根据主表ID查询进度详情列表 + * * @param masterId 主表ID * @return 进度详情列表 */ @@ -170,6 +171,7 @@ public class PdMasterServiceImpl extends ServiceImpl i } return baseMapper.selectProgressByMasterId(masterId); } + /** * 查询派单 * @@ -177,7 +179,7 @@ public class PdMasterServiceImpl extends ServiceImpl i * @return 派单 */ @Override - public PdMasterVo queryById(Long id){ + public PdMasterVo queryById(Long id) { //1、获取基础数据 PdMasterVo pdMasterVo = baseMapper.selectVoById(id); //2、查询下面的用户 @@ -209,7 +211,7 @@ public class PdMasterServiceImpl extends ServiceImpl i for (PdMasterSon pdMasterSon : list) { bigDecimal = bigDecimal.add(new BigDecimal(pdMasterSon.getProgress())); } - item.setCompletionProgress(bigDecimal+"%"); + item.setCompletionProgress(bigDecimal + "%"); //执行人 PdMasterUser one1 = pdMasterUserService.getById(item.getId()); item.setSlaveName(one1.getSlaveName()); @@ -222,39 +224,53 @@ public class PdMasterServiceImpl extends ServiceImpl i PdMasterBymiAndQt res = new PdMasterBymiAndQt(); // 获取登陆人 Long userId = LoginHelper.getUserId(); + Long projectId = bo.getProjectId(); //获取我派发的 - List pdMasters = baseMapper.selectVoList(new LambdaQueryWrapper().eq(PdMaster::getCreateBy, userId)); + List pdMasters = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(projectId != null && projectId != 0, PdMaster::getProjectId, projectId) + .eq(PdMaster::getCreateBy, userId)); pdMasters = pdJudge(bo.getTaskType(), pdMasters); res.setWpd(pdMasters); // 获取其他部门派发给我的 List pdMasterUsers = pdMasterUserService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(PdMasterUser::getSlaveid, userId)); - if (pdMasterUsers != null && pdMasterUsers.size() > 0) { - List collect = pdMasterUsers.stream().map(item ->item.getOrdersid()).collect((Collectors.toList())); - List pdMasterVos = baseMapper.selectVoByIds(collect); + if (CollUtil.isNotEmpty(pdMasterUsers)) { + List collect = pdMasterUsers.stream().map(PdMasterUser::getOrdersid).collect((Collectors.toList())); + List pdMasterVos = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(projectId != null && projectId != 0, PdMaster::getProjectId, projectId) + .in(PdMaster::getId, collect)); pdMasterVos = pdJudge(bo.getTaskType(), pdMasterVos); res.setQtbm(pdMasterVos); } - - return res; } @Override - public BusPdSjVo queryPageListByDate() { + public BusPdSjVo queryPageListByDate(String projectId) { BusPdSjVo res = new BusPdSjVo(); // 获取登陆人 Long userId = LoginHelper.getUserId(); //获取我派发的 - Long l = baseMapper.selectCount(new LambdaQueryWrapper().eq(PdMaster::getCreateBy, userId)); + Long l = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(PdMaster::getCreateBy, userId) + .eq(StringUtils.isNotBlank(projectId) && !projectId.equals("0"), PdMaster::getProjectId, projectId)); //其他部门派发给我的 - Long count = pdMasterUserService.getBaseMapper().selectCount(new LambdaQueryWrapper().eq(PdMasterUser::getSlaveid, userId)); + List pdMasterUsers = pdMasterUserService.getBaseMapper() + .selectList(new LambdaQueryWrapper() + .eq(PdMasterUser::getSlaveid, userId)); + Long l1 = 0L; + if (CollUtil.isNotEmpty(pdMasterUsers)) { + Set ids = pdMasterUsers.stream().map(PdMasterUser::getOrdersid).collect(Collectors.toSet()); + l1 = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(StringUtils.isNotBlank(projectId) && !projectId.equals("0"), PdMaster::getProjectId, projectId) + .in(PdMaster::getId, ids)); + } res.setWdpdrw(l); - res.setQtbmpd(count); + res.setQtbmpd(l1); return res; } - private List pdJudge(Integer flow ,List records) { + private List pdJudge(Integer flow, List records) { if (records == null || records.size() == 0) return records; //获取当前主数据下面的进度百分比 @@ -264,12 +280,12 @@ public class PdMasterServiceImpl extends ServiceImpl i for (PdMasterSon pdMasterSon : list) { bigDecimal = bigDecimal.add(new BigDecimal(pdMasterSon.getProgress())); } - item.setCompletionProgress(bigDecimal+"%"); + item.setCompletionProgress(bigDecimal + "%"); if (bigDecimal.compareTo(new BigDecimal("0")) == 0) { item.setTapName("待处理"); - }else if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { + } else if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { item.setTapName("已完成"); - }else if (bigDecimal.compareTo(new BigDecimal("100")) < 0) { + } else if (bigDecimal.compareTo(new BigDecimal("100")) < 0) { item.setTapName("进行中"); } //执行人 @@ -286,17 +302,11 @@ public class PdMasterServiceImpl extends ServiceImpl i if (flow == 4) { return true; } else if (flow == 1) { - if (item.getTapName().equals("进行中")) { - return true; - } + return item.getTapName().equals("进行中"); } else if (flow == 2) { - if (item.getTapName().equals("已完成")) { - return true; - } + return item.getTapName().equals("已完成"); } else if (flow == 3) { - if (item.getTapName().equals("待处理")) { - return true; - } + return item.getTapName().equals("待处理"); } return false; @@ -309,7 +319,6 @@ public class PdMasterServiceImpl extends ServiceImpl i } - /** * 查询符合条件的派单列表 * @@ -371,7 +380,7 @@ public class PdMasterServiceImpl extends ServiceImpl i //1、修改数据 PdMaster update = MapstructUtils.convert(bo, PdMaster.class); validEntityBeforeSave(update); - if (baseMapper.updateById(update) > 0){ + if (baseMapper.updateById(update) > 0) { //2、删除子用户 pdMasterUserService.remove(new LambdaQueryWrapper().eq(PdMasterUser::getOrdersid, bo.getId())); //3、新增子用户 @@ -399,7 +408,7 @@ public class PdMasterServiceImpl extends ServiceImpl i */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } pdMasterUserService.getBaseMapper().delete(new LambdaQueryWrapper().in(PdMasterUser::getOrdersid, ids)); @@ -407,5 +416,4 @@ public class PdMasterServiceImpl extends ServiceImpl i } - } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index 8b9afe49..492a6f8f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -20,6 +20,7 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.domain.bo.FlowDefinitionBo; import org.dromara.workflow.domain.vo.FlowDefinitionVo; import org.dromara.workflow.service.IFlwDefinitionService; +import org.dromara.workflow.service.IFlwInstanceService; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -43,6 +44,7 @@ public class FlwDefinitionController extends BaseController { private final DefService defService; private final IFlwDefinitionService flwDefinitionService; + private final IFlwInstanceService flwInstanceService; /** * 查询流程定义列表 @@ -241,4 +243,12 @@ public class FlwDefinitionController extends BaseController { return R.ok(); } + @PutMapping("/init/{projectId}") + @RepeatSubmit() + public R initProject(@PathVariable String projectId) { + flwInstanceService.initProject(projectId); + return R.ok(); + } + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java index 92809c80..4b706fca 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; @@ -24,4 +25,10 @@ public interface FlwInstanceMapper { */ Page selectInstanceList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + @Update("update flow_node set permission_flag = '1' where definition_id in (select id from flow_definition where flow_code like concat('',#{projectId},'%'))") + void updateCode(String projectId); + + + @Update("update flow_definition set is_publish = 1 where flow_code like concat('',#{projectId},'%')") + void updateFlowDefinition(String projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 01e5124b..930b39bd 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -156,4 +156,12 @@ public interface IFlwInstanceService { * @return 结果 */ boolean processInvalid(FlowInvalidBo bo); + + + /** + * 初始化项目流程定义 + * + * @param projectId 项目id + */ + void initProject(String projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 6e6434d9..f66d1302 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -445,4 +445,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { throw new ServiceException(e.getMessage()); } } + + @Override + public void initProject(String projectId) { + flwInstanceMapper.updateCode(projectId); + flwInstanceMapper.updateFlowDefinition(projectId); + } }