Explorar o código

运行记录1212-运行记录工单查询保存优化

yuanchao hai 1 semana
pai
achega
53d58171bc

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

@@ -269,6 +269,7 @@ public class IotOpeationFillController {
                     IotRhDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringRhObjectMap,IotRhDailyReportSaveReqVO.class,false);
                     saveReqVO1.setDeptId(fillDO1.getDeptId());
                     saveReqVO1.setFillOrderCreateTime(fillList.get(0).getCreateTime().atStartOfDay());
+                    saveReqVO1.setCreator(String.valueOf(fillList.get(0).getUserId()));
                     iotRhDailyReportService.createIotRhDailyReport(saveReqVO1);
                 }else if(ryIdList.contains(fillDO1.getDeptId())){
                     for (IotDeviceRunLogDO logDO1:logDO) {
@@ -287,6 +288,7 @@ public class IotOpeationFillController {
                     IotRyDailyReportSaveReqVO saveReqVO1 = BeanUtil.mapToBean(stringRyObjectMap, IotRyDailyReportSaveReqVO.class,false);
                     saveReqVO1.setDeptId(fillDO1.getDeptId());
                     saveReqVO1.setFillOrderCreateTime(fillList.get(0).getCreateTime().atStartOfDay());
+                    saveReqVO1.setCreator(String.valueOf(fillList.get(0).getUserId()));
                     if(fillDO1.getDeviceCategoryId()==228){
                         saveReqVO1.setProjectClassification("2");
                     }
@@ -334,8 +336,7 @@ public class IotOpeationFillController {
             LocalDate createDate = allFillData.get(0).getCreateTime();
             Integer userId = allFillData.get(0).getUserId();
 
-            // 5. 更新填写状态
-            updateFillOrderStatus(orderId, userId, createDate);
+
 
             // 6. 批量保存日志(有则更新,无则插入)
             batchSaveLogs(logDOList);
@@ -344,10 +345,13 @@ public class IotOpeationFillController {
             Map<String, Set<Long>> deptMap = getDeptIdSets();
 
             // 8. 生成日报
-            generateDailyReports(logDOList, deptMap, createDate);
+            generateDailyReports(logDOList, deptMap, createDate,userId);
 
-            // 9. 更新工单填写状态
-            iotOpeationFillService.updateFill(allFillData.get(0));
+            // 9. 批量更新工单填写状态
+            iotOpeationFillService.batchUpdateFill(allFillData);
+
+            // 5. 更新填写状态
+            updateFillOrderStatus(orderId, userId, createDate);
 
             return success(1);
 
@@ -556,7 +560,8 @@ public class IotOpeationFillController {
      */
     private void generateDailyReports(List<IotDeviceRunLogDO> logDOList,
                                       Map<String, Set<Long>> deptMap,
-                                      LocalDate createDate) {
+                                      LocalDate createDate,
+                                      Integer userId) {
         // 按设备分组处理
         Map<Long, List<IotDeviceRunLogDO>> deviceLogsMap = logDOList.stream()
                 .collect(Collectors.groupingBy(IotDeviceRunLogDO::getDeviceId));
@@ -573,6 +578,7 @@ public class IotOpeationFillController {
             reportQuery.setCreateTime(sampleLog.getCreateTime());
 
             IotOpeationFillDO fillStatus = iotOpeationFillService.isReport(reportQuery);
+            fillStatus.setUserId(userId);
 
             if (fillStatus != null && fillStatus.getIsReport() != null &&
                     fillStatus.getIsReport() == 1) {
@@ -622,6 +628,7 @@ public class IotOpeationFillController {
                 IotRhDailyReportSaveReqVO.class, false);
         finalReport.setDeptId(fillStatus.getDeptId());
         finalReport.setFillOrderCreateTime(createDate.atStartOfDay());
+        finalReport.setCreator(String.valueOf(fillStatus.getUserId()));
 
         iotRhDailyReportService.createIotRhDailyReport(finalReport);
     }
@@ -649,6 +656,7 @@ public class IotOpeationFillController {
                 IotRyDailyReportSaveReqVO.class, false);
         finalReport.setDeptId(fillStatus.getDeptId());
         finalReport.setFillOrderCreateTime(createDate.atStartOfDay());
+        finalReport.setCreator(String.valueOf(fillStatus.getUserId()));
 
         if (fillStatus.getDeviceCategoryId() != null &&
                 fillStatus.getDeviceCategoryId() == 228) {

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

@@ -172,6 +172,10 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
 
     @TenantIgnore
     int updateFill(IotOpeationFillSaveReqVO vo);
+
+    @TenantIgnore
+    int batchUpdateFill(@Param("list") List<IotOpeationFillSaveReqVO> list);
+
     @TenantIgnore
     List<IotOpeationFillRespVO> getFillList(IotOpeationFillRespVO vo);
     @TenantIgnore

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

@@ -13,6 +13,7 @@ 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;
@@ -116,6 +117,14 @@ public interface IotOpeationFillService {
      */
     int updateFill(IotOpeationFillSaveReqVO vo);
 
+    /**
+     * 批量更新状态
+     * @param list
+     * @return
+     */
+
+    int batchUpdateFill(List<IotOpeationFillSaveReqVO> list);
+
     List<IotOpeationFillRespVO> getFillList(IotOpeationFillRespVO vo);
 
     List<IotDeviceRunLogDO> getDeivceFillInfo(IotDeviceRunLogDO vo);

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

@@ -247,6 +247,11 @@ public class IotOpeationFillServiceImpl implements IotOpeationFillService {
         return iotOpeationFillMapper.updateFill(vo);
     }
 
+    @Override
+    public int batchUpdateFill(List<IotOpeationFillSaveReqVO> list) {
+        return iotOpeationFillMapper.batchUpdateFill(list);
+    }
+
     @Override
     public List<IotOpeationFillRespVO> getFillList(IotOpeationFillRespVO vo) {
         return iotOpeationFillMapper.getFillList(vo);

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

@@ -692,6 +692,19 @@
           and DATE(create_time) = DATE(#{createTime})
     </update>
 
+
+
+    <!-- 推荐使用这个方案 -->
+    <update id="batchUpdateFill" parameterType="java.util.List">
+        UPDATE rq_iot_opeation_fill
+        SET is_fill = '1'
+        WHERE (device_id, DATE(create_time)) IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            (#{item.deviceId}, DATE(#{item.createTime}))
+        </foreach>
+    </update>
+
+
     <select id="getFillList" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO"
             resultType="cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillRespVO">
         select distinct b.* from