Quellcode durchsuchen

fit:资料归纳基础代码

zzw vor 1 Monat
Ursprung
Commit
f4fcad1b16

+ 9 - 0
assistMg/src/main/java/com/hotent/enterpriseDeclare/controller/material/CostProjectTaskEvidenceController.java

@@ -54,6 +54,15 @@ public class CostProjectTaskEvidenceController {
         return CommonResult.<String>ok().value("操作成功");
     }
 
+    /**
+     * 更新资料登记
+     */
+    @PostMapping(value = "/update")
+    @ApiOperation(value = "更新资料登记", httpMethod = "POST", notes = "更新资料登记")
+    public CommonResult<String> update(@RequestBody CostProjectTaskEvidence evidence) {
+        costProjectTaskEvidenceManager.createOrUpdate(evidence);
+        return CommonResult.<String>ok().value("更新成功");
+    }
 
     /**
      * 删除资料登记

+ 45 - 34
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectTaskMaterialSummaryManagerImpl.java

@@ -211,45 +211,56 @@ public class CostProjectTaskMaterialSummaryManagerImpl extends BaseManagerImpl<C
         }
 
         String taskId = current.getTaskId();
-        Integer currentOrderNum = current.getMaterialOrderNum() != null ? current.getMaterialOrderNum() : 0;
 
-        // 查询同任务下的其他记录
+        // 查询同任务下的所有记录,按序号和ID排序
         LambdaQueryWrapper<CostProjectTaskMaterialSummary> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CostProjectTaskMaterialSummary::getTaskId, taskId)
-                .ne(CostProjectTaskMaterialSummary::getId, id)
-                .orderByAsc(CostProjectTaskMaterialSummary::getMaterialOrderNum);
-
-        List<CostProjectTaskMaterialSummary> otherList = this.list(queryWrapper);
-
-        if ("down".equals(direction)) {
-            // 下移:找到比当前orderNum大的最小orderNum的记录,交换
-            CostProjectTaskMaterialSummary next = otherList.stream()
-                    .filter(s -> s.getMaterialOrderNum() != null && s.getMaterialOrderNum() > currentOrderNum)
-                    .min(java.util.Comparator.comparing(CostProjectTaskMaterialSummary::getMaterialOrderNum))
-                    .orElse(null);
-
-            if (next != null) {
-                Integer temp = current.getMaterialOrderNum();
-                current.setMaterialOrderNum(next.getMaterialOrderNum());
-                next.setMaterialOrderNum(temp);
-                this.updateById(current);
-                this.updateById(next);
-            }
-        } else if ("up".equals(direction)) {
-            // 上移:找到比当前orderNum小的最大orderNum的记录,交换
-            CostProjectTaskMaterialSummary prev = otherList.stream()
-                    .filter(s -> s.getMaterialOrderNum() != null && s.getMaterialOrderNum() < currentOrderNum)
-                    .max(java.util.Comparator.comparing(CostProjectTaskMaterialSummary::getMaterialOrderNum))
-                    .orElse(null);
-
-            if (prev != null) {
-                Integer temp = current.getMaterialOrderNum();
-                current.setMaterialOrderNum(prev.getMaterialOrderNum());
-                prev.setMaterialOrderNum(temp);
-                this.updateById(current);
-                this.updateById(prev);
+                .orderByAsc(CostProjectTaskMaterialSummary::getMaterialOrderNum)
+                .orderByAsc(CostProjectTaskMaterialSummary::getId);
+        List<CostProjectTaskMaterialSummary> list = this.list(queryWrapper);
+
+        // 找到当前位置
+        int currentIndex = -1;
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).getId().equals(id)) {
+                currentIndex = i;
+                break;
             }
         }
+        if (currentIndex == -1) {
+            return;
+        }
+
+        // 获取最大序号作为临时序号
+        Integer tempOrderNum = list.stream()
+                .filter(s -> s.getMaterialOrderNum() != null)
+                .map(CostProjectTaskMaterialSummary::getMaterialOrderNum)
+                .max(Integer::compareTo)
+                .orElse(0) + 10000;
+
+        if ("down".equals(direction) && currentIndex < list.size() - 1) {
+            // 下移:与下一个交换
+            CostProjectTaskMaterialSummary next = list.get(currentIndex + 1);
+            Integer currentOrder = current.getMaterialOrderNum();
+            Integer nextOrder = next.getMaterialOrderNum();
+            current.setMaterialOrderNum(tempOrderNum);
+            this.updateById(current);
+            next.setMaterialOrderNum(currentOrder);
+            this.updateById(next);
+            current.setMaterialOrderNum(nextOrder);
+            this.updateById(current);
+        } else if ("up".equals(direction) && currentIndex > 0) {
+            // 上移:与上一个交换
+            CostProjectTaskMaterialSummary prev = list.get(currentIndex - 1);
+            Integer currentOrder = current.getMaterialOrderNum();
+            Integer prevOrder = prev.getMaterialOrderNum();
+            current.setMaterialOrderNum(tempOrderNum);
+            this.updateById(current);
+            prev.setMaterialOrderNum(currentOrder);
+            this.updateById(prev);
+            current.setMaterialOrderNum(prevOrder);
+            this.updateById(current);
+        }
     }
 }
 

+ 0 - 1
assistMg/src/main/java/com/hotent/project/manager/impl/CostProjectTaskPreliminaryOpinionManagerImpl.java

@@ -29,7 +29,6 @@ public class CostProjectTaskPreliminaryOpinionManagerImpl extends BaseManagerImp
     public CostProjectTaskPreliminaryOpinion getByTaskId(String taskId) {
         LambdaQueryWrapper<CostProjectTaskPreliminaryOpinion> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CostProjectTaskPreliminaryOpinion::getTaskId, taskId)
-                   .eq(CostProjectTaskPreliminaryOpinion::getIsDeleted, BaseConstant.NORMAL_STATUS)
                    .last("LIMIT 1");
 
         return this.getOne(queryWrapper);