소스 검색

pms 日报 项目 责任人

zhangcl 2 일 전
부모
커밋
6b00d2f79a

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoPageReqVO.java

@@ -9,6 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
@@ -89,4 +90,10 @@ public class IotProjectInfoPageReqVO extends PageParam {
     private Long manufacturerId;
 
     private String manufactureName;
+
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "项目id 集合", example = "[123,345]")
+    private List<Long> projectIds;
 }

+ 40 - 9
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/IotProjectTaskController.java

@@ -1,15 +1,20 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotTaskSaveVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
+import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
 import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -23,13 +28,11 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 
 
 @Tag(name = "管理后台 - 项目信息任务拆分")
@@ -43,6 +46,9 @@ public class IotProjectTaskController {
     @Resource
     private DeptService deptService;
 
+    @Resource
+    private IotProjectInfoService iotProjectInfoService;
+
     @PostMapping("/create")
     @Operation(summary = "创建项目信息任务拆分")
     @PreAuthorize("@ss.hasPermission('rq:iot-project-task:create')")
@@ -94,12 +100,37 @@ public class IotProjectTaskController {
     @PreAuthorize("@ss.hasPermission('rq:iot-project-task:query')")
     public CommonResult<PageResult<IotProjectTaskRespVO>> getTaskList( IotProjectTaskPageReqVO pageReqVO) {
         Set<Long> idList = new HashSet<>();
-        /* if(Objects.nonNull(pageReqVO.getDeptId())){
-            idList =  deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            idList.add(pageReqVO.getDeptId());
-        } */
         PageResult<IotProjectTaskDO> taskList = iotProjectTaskService.taskList(pageReqVO,idList);
-        return success(BeanUtils.toBean(taskList, IotProjectTaskRespVO.class));
+        // return success(BeanUtils.toBean(taskList, IotProjectTaskRespVO.class));
+        return success(new PageResult<>(buildProjectTaskList(taskList.getList()), taskList.getTotal()));
+    }
+
+    private List<IotProjectTaskRespVO> buildProjectTaskList(List<IotProjectTaskDO> tasks) {
+        if (CollUtil.isEmpty(tasks)) {
+            return Collections.emptyList();
+        }
+        // 设备部门信息
+        List<Long> projectIds = convertList(tasks, IotProjectTaskDO::getProjectId);
+        Map<Long, Long> projectDeptPair = new HashMap<>();
+        if (CollUtil.isNotEmpty(projectIds)) {
+            // 查询 任务 关联的项目信息
+            IotProjectInfoPageReqVO pageReqVO = new IotProjectInfoPageReqVO();
+            pageReqVO.setProjectIds(projectIds);
+            DataPermissionUtils.executeIgnore(() -> {
+                List<IotProjectInfoDO> projectInfos = iotProjectInfoService.getIotProjectInfos(pageReqVO);
+                if (CollUtil.isNotEmpty(projectInfos)) {
+                    projectInfos.forEach(info -> {
+                        projectDeptPair.put(info.getId(), info.getDeptId());
+                    });
+                }
+            });
+        }
+        // 2. 拼接数据
+        return BeanUtils.toBean(tasks, IotProjectTaskRespVO.class, (taskVO) -> {
+            if (projectDeptPair.containsKey(taskVO.getProjectId())) {
+                taskVO.setProjectDeptId(projectDeptPair.get(taskVO.getProjectId()));
+            }
+        });
     }
 
     @GetMapping("/export-excel")

+ 6 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java

@@ -43,7 +43,7 @@ public class IotProjectTaskRespVO {
 
     @Schema(description = "责任人([123,234])")
     @ExcelProperty("责任人([123,234])")
-    private String responsiblePerson;
+    private Set<Long> responsiblePerson;
 
     @Schema(description = "设计工作量")
     @ExcelProperty("设计工作量")
@@ -90,4 +90,9 @@ public class IotProjectTaskRespVO {
     @Schema(description = "合同编号")
     private String contractCode;
 
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "项目所属部门id", example = "1755")
+    private Long projectDeptId;
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskSaveReqVO.java

@@ -31,7 +31,7 @@ public class IotProjectTaskSaveReqVO {
     private String technique;
 
     @Schema(description = "责任人([123,234])")
-    private String responsiblePerson;
+    private Set<Long> responsiblePerson;
 
     @Schema(description = "设计工作量")
     private String workloadDesign;

+ 22 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojectinfo/IotProjectInfoMapper.java

@@ -61,5 +61,27 @@ public interface IotProjectInfoMapper extends BaseMapperX<IotProjectInfoDO> {
                 .orderByDesc(IotProjectInfoDO::getId));
     }
 
+    default List<IotProjectInfoDO> selectList(IotProjectInfoPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<IotProjectInfoDO>()
+                .inIfPresent(IotProjectInfoDO::getId,  reqVO.getProjectIds())
+                .eqIfPresent(IotProjectInfoDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(IotProjectInfoDO::getManufactureName, reqVO.getManufactureName())
+                .likeIfPresent(IotProjectInfoDO::getDeptName, reqVO.getDeptName())
+                .likeIfPresent(IotProjectInfoDO::getContractName, reqVO.getContractName())
+                .eqIfPresent(IotProjectInfoDO::getContractCode, reqVO.getContractCode())
+                .eqIfPresent(IotProjectInfoDO::getWorkloadTotal, reqVO.getWorkloadTotal())
+                .eqIfPresent(IotProjectInfoDO::getWorkloadFinish, reqVO.getWorkloadFinish())
+                .betweenIfPresent(IotProjectInfoDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotProjectInfoDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotProjectInfoDO::getLocation, reqVO.getLocation())
+                .eqIfPresent(IotProjectInfoDO::getTechnique, reqVO.getTechnique())
+                .eqIfPresent(IotProjectInfoDO::getPayment, reqVO.getPayment())
+                .betweenIfPresent(IotProjectInfoDO::getCreateTime, reqVO.getCreateTime())
+                .likeIfPresent(IotProjectInfoDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(IotProjectInfoDO::getManufacturerId, reqVO.getManufacturerId())
+                .eqIfPresent(IotProjectInfoDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(IotProjectInfoDO::getRemark, reqVO.getRemark()));
+    }
+
     List<IotProjectInfoDO> projectList();
 }

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoService.java

@@ -55,6 +55,14 @@ public interface IotProjectInfoService {
      */
     PageResult<IotProjectInfoDO> getIotProjectInfoPage(IotProjectInfoPageReqVO pageReqVO);
 
+    /**
+     * 获得项目信息列表
+     *
+     * @param pageReqVO 列表查询
+     * @return 项目信息列表
+     */
+    List<IotProjectInfoDO> getIotProjectInfos(IotProjectInfoPageReqVO pageReqVO);
+
     PageResult<IotProjectInfoDO> getIotProjectInfoPage1(IotProjectInfoPageReqVO pageReqVO,Collection<Long> deptIds);
 
     /**

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoServiceImpl.java

@@ -80,6 +80,11 @@ public class IotProjectInfoServiceImpl implements IotProjectInfoService {
         return iotProjectInfoMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<IotProjectInfoDO> getIotProjectInfos(IotProjectInfoPageReqVO pageReqVO) {
+        return iotProjectInfoMapper.selectList(pageReqVO);
+    }
+
     @Override
     public PageResult<IotProjectInfoDO> getIotProjectInfoPage1(IotProjectInfoPageReqVO pageReqVO, Collection<Long> deptIds) {
         // 查询当前人所属公司级组织的数据

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskServiceImpl.java

@@ -104,7 +104,7 @@ public class IotProjectTaskServiceImpl implements IotProjectTaskService {
 
     @Override
     public PageResult<IotProjectTaskDO> taskList(IotProjectTaskPageReqVO vo,Collection<Long> deptIds) {
-        // 查询当前登录人所属部门的公司级组织 根据组织 查询组织下的项目任务
+        // 查询当前登录人所属部门的公司级组织 查询组织下的项目任务
         List<DeptDO> depts = iotProjectInfoService.companyLevelDepts();
         Set<Long> departmentIds = new HashSet<>();
         if (CollUtil.isNotEmpty(depts)) {