From ccb933362251344091a3881a4950dcab33c5008f Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期六, 28 三月 2020 11:47:55 +0800
Subject: [PATCH] no message

---
 src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java |   69 ++++++++++++++++++++++++++++++----
 1 files changed, 61 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
index 3c1f5bf..a7758db 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
@@ -1,7 +1,10 @@
 package com.highdatas.mdm.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.entity.Flows;
 import com.highdatas.mdm.entity.Maintain;
 import com.highdatas.mdm.entity.MaintainField;
@@ -11,23 +14,16 @@
 import com.highdatas.mdm.pojo.Operate;
 import com.highdatas.mdm.service.IFlowsService;
 import com.highdatas.mdm.service.IMaintainFieldService;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.service.IMaintainService;
 import com.highdatas.mdm.service.ISysFieldService;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.mybatis.spring.SqlSessionTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
 import java.text.MessageFormat;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -104,6 +100,15 @@
             nowMaintain.setId(DbUtils.getUUID());
         }
         return nowMaintain;
+    }
+
+    @Override
+    public List<Maintain> getMaintainByMaintainField(String maintainFieldId, String tableName) {
+        HashMap<String, List<Maintain>> resultMap = getMaintainFieldMapByTable(tableName);
+        if (resultMap == null) {
+            return null;
+        }
+        return resultMap.get(maintainFieldId);
     }
 
     @Override
@@ -247,4 +252,52 @@
         }
         return cnt;
     }
+
+    @Override
+    public JSONArray getMaintainListByTable(String tableName) {
+        HashMap<String, List<Maintain>> resultMap = getMaintainFieldMapByTable(tableName);
+
+        Set<String> keySet = resultMap.keySet();
+        JSONArray array = new JSONArray();
+        for (String s : keySet) {
+            List<Maintain> list = resultMap.get(s);
+            Maintain max = list.stream().max(new Comparator<Maintain>() {
+                @Override
+                public int compare(Maintain o1, Maintain o2) {
+                    return o1.getOrderNo() - o2.getOrderNo();
+                }
+            }).get();
+            Maintain min = list.stream().min(new Comparator<Maintain>() {
+                @Override
+                public int compare(Maintain o1, Maintain o2) {
+                    return o1.getOrderNo() - o2.getOrderNo();
+                }
+            }).get();
+            JSONObject object = new JSONObject();
+            object.fluentPut("maintainFieldId", s);
+            object.fluentPut("version", MessageFormat.format(Constant.extent, min.getVersion(), max.getVersion()));
+
+            array.add(object);
+        }
+        return array;
+    }
+
+    private HashMap<String, List<Maintain>> getMaintainFieldMapByTable(String tableName) {
+        List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no"));
+        HashMap<String, List<Maintain>> resultMap = new HashMap<>();
+        for (Maintain maintain : maintainList) {
+            ActivitiStatus status = flowsService.getStatusByBusinessId(maintain.getId());
+            if (!status.equals(ActivitiStatus.open)) {
+                continue;
+            }
+            MaintainField maintainFieldByMaintain = fieldService.getMaintainFieldByMaintain(maintain.getId());
+            List<Maintain> list = resultMap.get(maintainFieldByMaintain.getId());
+            if (list == null) {
+                list = new ArrayList<>();
+            }
+            list.add(maintain);
+            resultMap.put(maintainFieldByMaintain.getId(), list);
+        }
+        return resultMap;
+    }
 }

--
Gitblit v1.8.0