Browse Source

pms 瑞鹰 运行记录 显示关联的 任务井号

zhangcl 1 ngày trước cách đây
mục cha
commit
d5f1bd2e76

+ 87 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotopeationfill/IotOpeationFillController.java

@@ -2,6 +2,10 @@ package cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
 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;
@@ -296,7 +300,19 @@ public class IotOpeationFillController {
                     if(fillDO1.getDeviceCategoryId()==228){
                         saveReqVO1.setProjectClassification("2");
                     }
-                    saveReqVO1.setReportDetails(operationFillSaveVO.getReportDetails());
+                    List<IotRyDailyReportDetailSaveReqVO> details = operationFillSaveVO.getReportDetails();
+                    saveReqVO1.setReportDetails(details);
+                    List<Long> taskIds = new ArrayList<>();
+                    if (CollUtil.isNotEmpty(details)) {
+                        details.forEach(detail -> {
+                            if (ObjUtil.isNotEmpty(detail)) {
+                                taskIds.add(detail.getTaskId());
+                            }
+                        });
+                        if (CollUtil.isNotEmpty(taskIds)) {
+                            saveReqVO1.setTaskId(taskIds.get(0));
+                        }
+                    }
                     iotRyDailyReportService.createIotRyDailyReport(saveReqVO1);
                 }
 
@@ -919,9 +935,44 @@ public class IotOpeationFillController {
                     reqVO.setDeptId(iotOpeationFill.getDeptId());
                     reqVO.setJobFlag("Y");
                     List<IotProjectTaskDO> tasks = iotProjectTaskMapper.selectList(reqVO);
+                    Map<Long, String> wellNamePair = new HashMap<>();
                     if (CollUtil.isNotEmpty(tasks)) {
                         // 取最新的1个任务
                         iotOpeationFill.setWellName(tasks.get(0).getWellName());
+                        tasks.forEach(task -> {
+                            wellNamePair.put(task.getId(), task.getWellName());
+                        });
+                        iotOpeationFill.setWellNamePair(wellNamePair);
+                    }
+                    // 查询当前队伍是否已经生成日报 回显数据
+                    // 查询日报表中对应日期 对应部门的taskId
+                    String reportDateStr = StrUtil.EMPTY;
+                    if (ObjUtil.isNotEmpty(iotOpeationFill.getCreateTime())) {
+                        reportDateStr = LocalDateTimeUtil.format(iotOpeationFill.getCreateTime(), DatePattern.NORM_DATE_PATTERN);
+                    }
+                    Long deptId = iotOpeationFill.getDeptId();
+                    // 判断当前队伍是 瑞恒 还是 瑞鹰
+                    Set<Long> rhChildDeptIds = deptService.getChildDeptIdListFromCache(157l);
+                    Set<Long> ryChildDeptIds = deptService.getChildDeptIdListFromCache(158l);
+                    if (ObjUtil.isNotEmpty(deptId) && StrUtil.isNotBlank(reportDateStr)) {
+                        if (rhChildDeptIds.contains(deptId)) {
+                            // 瑞恒日报
+                            IotOpeationFillDO taskWellPair = iotOpeationFillService.selectRhFillReports(deptId, reportDateStr);
+                            if (ObjUtil.isNotEmpty(taskWellPair)) {
+                                wellNamePair.clear();
+                                wellNamePair.put(taskWellPair.getTaskId(), taskWellPair.getWellName());
+                                iotOpeationFill.setWellNamePair(wellNamePair);
+                            }
+                        }
+                        if (ryChildDeptIds.contains(deptId)) {
+                            // 瑞鹰日报
+                            IotOpeationFillDO taskWellPair = iotOpeationFillService.selectRyFillReports(deptId, reportDateStr);
+                            if (ObjUtil.isNotEmpty(taskWellPair)) {
+                                wellNamePair.clear();
+                                wellNamePair.put(taskWellPair.getTaskId(), taskWellPair.getWellName());
+                                iotOpeationFill.setWellNamePair(wellNamePair);
+                            }
+                        }
                     }
         });
         return success(BeanUtils.toBean(iotOpeationFill, IotOpeationFillDO.class));
@@ -1052,9 +1103,44 @@ public class IotOpeationFillController {
                         reqVO.setDeptId(fill.getDeptId());
                         reqVO.setJobFlag("Y");
                         List<IotProjectTaskDO> tasks = iotProjectTaskMapper.selectList(reqVO);
+                        // 查询日报表中对应日期 对应部门的taskId
+                        String reportDateStr = StrUtil.EMPTY;
+                        if (ObjUtil.isNotEmpty(fill.getCreateTime())) {
+                            reportDateStr = LocalDateTimeUtil.format(fill.getCreateTime(), DatePattern.NORM_DATE_PATTERN);
+                        }
+                        Long deptId = fill.getDeptId();
+                        // 判断当前队伍是 瑞恒 还是 瑞鹰
+                        Set<Long> rhChildDeptIds = deptService.getChildDeptIdListFromCache(157l);
+                        Set<Long> ryChildDeptIds = deptService.getChildDeptIdListFromCache(158l);
+
+                        Map<Long, String> wellNamePair = new HashMap<>();
                         if (CollUtil.isNotEmpty(tasks)) {
                             // 取最新的1个任务
                             fill.setWellName(tasks.get(0).getWellName());
+                            tasks.forEach(task -> {
+                                wellNamePair.put(task.getId(), task.getWellName());
+                            });
+                            fill.setWellNamePair(wellNamePair);
+                        }
+                        if (ObjUtil.isNotEmpty(deptId) && StrUtil.isNotBlank(reportDateStr)) {
+                            if (rhChildDeptIds.contains(deptId)) {
+                                // 瑞恒日报
+                                IotOpeationFillDO taskWellPair = iotOpeationFillService.selectRhFillReports(deptId, reportDateStr);
+                                if (ObjUtil.isNotEmpty(taskWellPair)) {
+                                    wellNamePair.clear();
+                                    wellNamePair.put(taskWellPair.getTaskId(), taskWellPair.getWellName());
+                                    fill.setWellNamePair(wellNamePair);
+                                }
+                            }
+                            if (ryChildDeptIds.contains(deptId)) {
+                                // 瑞鹰日报
+                                IotOpeationFillDO taskWellPair = iotOpeationFillService.selectRyFillReports(deptId, reportDateStr);
+                                if (ObjUtil.isNotEmpty(taskWellPair)) {
+                                    wellNamePair.clear();
+                                    wellNamePair.put(taskWellPair.getTaskId(), taskWellPair.getWellName());
+                                    fill.setWellNamePair(wellNamePair);
+                                }
+                            }
                         }
                     }
                 });

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotopeationfill/IotOpeationFillDO.java

@@ -5,8 +5,6 @@ import lombok.*;
 import java.time.LocalDate;
 import java.util.*;
 import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -118,4 +116,6 @@ public class IotOpeationFillDO extends BaseDO {
      * 扩展字段
      */
     private String wellName;
+    private Long taskId;
+    private Map<Long, String> wellNamePair;
 }

+ 6 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java

@@ -8,8 +8,6 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.Iot
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.*;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.stat.vo.AllOrderResp;
-import cn.iocoder.yudao.module.pms.controller.admin.stat.vo.OrderVo;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO;
@@ -29,7 +27,6 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 /**
@@ -102,6 +99,12 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     @TenantIgnore
     List<IotOpeationFillDO> selectReportsByYear(@Param("deptId")Long deptId, @Param("year")int year);
 
+    @TenantIgnore
+    IotOpeationFillDO selectRyFillReports(@Param("deptId")Long deptId, @Param("reportDateStr")String reportDateStr);
+
+    @TenantIgnore
+    IotOpeationFillDO selectRhFillReports(@Param("deptId")Long deptId, @Param("reportDateStr")String reportDateStr);
+
     @TenantIgnore
     List<IotOpeationFillOrderDO> selectListByCreateTime(IotOpeationFillPageReqVO reqVO);
 

+ 15 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillService.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.pms.service.iotopeationfill;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.*;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
@@ -11,7 +10,6 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLo
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO;
-import org.apache.ibatis.annotations.Param;
 
 import javax.validation.Valid;
 import java.util.Collection;
@@ -79,6 +77,21 @@ public interface IotOpeationFillService {
 
     List<IotOpeationFillDO> fillListByUserId(IotOpeationFillRespVO vo);
 
+    /**
+     * 查询 指定部门 指定日期的 瑞鹰日报
+     * @param deptId 部门id
+     * @param reportDateStr yyyy-MM-dd格式的日期
+     * @return
+     */
+    IotOpeationFillDO selectRyFillReports(Long deptId, String reportDateStr);
+
+    /**
+     * 查询 指定部门 指定日期的 瑞恒日报
+     * @param deptId 部门id
+     * @param reportDateStr yyyy-MM-dd格式的日期
+     * @return
+     */
+    IotOpeationFillDO selectRhFillReports(Long deptId, String reportDateStr);
 
     PageResult<IotOpeationFillDO> fillListPage(IotOpeationFillPageVO vo);
 

+ 10 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotopeationfill/IotOpeationFillServiceImpl.java

@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.pms.service.iotopeationfill;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.*;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicecountdata.IotDeviceCountData;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicerunlog.IotDeviceRunLogDO;
@@ -25,13 +24,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 
 
 import java.security.SecureRandom;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ThreadLocalRandom;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -150,6 +143,16 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
         return iotOpeationFillMapper.fillListByUserId(vo);
     }
 
+    @Override
+    public IotOpeationFillDO selectRyFillReports(Long deptId, String reportDateStr) {
+        return iotOpeationFillMapper.selectRyFillReports(deptId, reportDateStr);
+    }
+
+    @Override
+    public IotOpeationFillDO selectRhFillReports(Long deptId, String reportDateStr) {
+        return iotOpeationFillMapper.selectRhFillReports(deptId, reportDateStr);
+    }
+
 
     @Override
     public PageResult<IotOpeationFillOrderDO> fillRecords(IotOpeationFillPageReqVO vo) {

+ 26 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotOpeationFillMapper.xml

@@ -497,6 +497,32 @@
         AND YEAR(create_time) = #{year}
     </select>
 
+    <select id="selectRyFillReports" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+        SELECT dr.task_id taskId, pt.well_name wellName
+        FROM rq_iot_ry_daily_report dr
+        LEFT JOIN rq_iot_project_task pt ON pt.id = dr.task_id
+        WHERE dr.deleted = 0
+        AND pt.deleted = 0
+        <if test="deptId != null">
+            AND dr.dept_id = #{deptId}
+        </if>
+        AND DATE(dr.create_time) = #{reportDateStr}
+        LIMIT 1
+    </select>
+
+    <select id="selectRhFillReports" resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO">
+        SELECT dr.task_id taskId, pt.well_name wellName
+        FROM rq_iot_rh_daily_report dr
+        LEFT JOIN rq_iot_project_task pt ON pt.id = dr.task_id
+        WHERE dr.deleted = 0
+        AND pt.deleted = 0
+        <if test="deptId != null">
+            AND dr.dept_id = #{deptId}
+        </if>
+        AND DATE(dr.create_time) = #{reportDateStr}
+        LIMIT 1
+    </select>
+
     <select id="fillRecords" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO"
             resultType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillOrderDO">
         SELECT a.*