Commit d022922ad3c2322ba809896f2f14fffd01e321a1
1 parent
de1d27ff9f
Exists in
master
and in
8 other branches
permission2
Showing 4 changed files with 61 additions and 7 deletions
- platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java
- platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java
- platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java
- platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java
platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java
View file @
d022922
... | ... | @@ -58,10 +58,18 @@ |
58 | 58 | Class cla = Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key)); |
59 | 59 | // 批量修改的情况下,ID字段是要修改的CLASS |
60 | 60 | Class updateClass = Class.forName(LymsEncodeUtil.aesDecrypt(id, mongo_crypto_key)); |
61 | - Object obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); | |
61 | + Object obj = null; | |
62 | + try { | |
63 | + obj = SerializUtils.byteToObj(Base64.decodeBase64(json)); | |
64 | + } catch (Exception ee) { | |
65 | + obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); | |
66 | + } | |
62 | 67 | if (obj instanceof UpdateMultiData) { |
63 | 68 | UpdateMultiData data = (UpdateMultiData) obj; |
64 | - if (data.getQuery() != null && data.getUpdate() != null) { | |
69 | + if (data.getMongoQuery() != null && data.getMongoUpdate() != null) { | |
70 | + mongoTemplate.updateMulti(data.getMongoQuery(), data.getMongoUpdate(), updateClass); | |
71 | + return true; | |
72 | + } else if (data.getQuery() != null && data.getUpdate() != null) { | |
65 | 73 | MongoCondition c = null; |
66 | 74 | for (String key:data.getQuery().keySet()) { |
67 | 75 | if (c == null) { |
68 | 76 | |
... | ... | @@ -80,13 +88,23 @@ |
80 | 88 | } |
81 | 89 | } |
82 | 90 | } else if ("ADD".equals(action)) { |
83 | - Object entity = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key))); | |
91 | + Object entity = null; | |
92 | + try { | |
93 | + entity = SerializUtils.byteToObj(Base64.decodeBase64(json)); | |
94 | + } catch (Exception ee) { | |
95 | + entity = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key))); | |
96 | + } | |
84 | 97 | Assert.notNull(entity, "execute insert method must not null."); |
85 | 98 | mongoTemplate.save(entity); |
86 | 99 | return true; |
87 | 100 | } else if ("UPDATE".equals(action)) { |
88 | 101 | Class cla = Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key)); |
89 | - Object obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); | |
102 | + Object obj = null; | |
103 | + try { | |
104 | + obj = SerializUtils.byteToObj(Base64.decodeBase64(json)); | |
105 | + } catch (Exception ee) { | |
106 | + obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); | |
107 | + } | |
90 | 108 | Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(obj)); |
91 | 109 | Assert.notNull(update, "execute update method must not null."); |
92 | 110 | mongoTemplate.updateMulti(new MongoQuery(new MongoCondition("id", LymsEncodeUtil.aesDecrypt(id, mongo_crypto_key), MongoOper.IS)).convertToMongoQuery(), update, cla); |
platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java
View file @
d022922
... | ... | @@ -4,6 +4,7 @@ |
4 | 4 | import com.lyms.platform.common.pojo.SyncDataModel; |
5 | 5 | import com.lyms.platform.common.pojo.UpdateMultiData; |
6 | 6 | import com.lyms.platform.common.utils.*; |
7 | +import org.apache.commons.codec.binary.Base64; | |
7 | 8 | import org.apache.commons.collections.CollectionUtils; |
8 | 9 | import org.springframework.beans.factory.annotation.Autowired; |
9 | 10 | import org.springframework.data.mongodb.core.MongoTemplate; |
... | ... | @@ -11,6 +12,7 @@ |
11 | 12 | import org.springframework.data.mongodb.core.query.Update; |
12 | 13 | import org.springframework.util.Assert; |
13 | 14 | |
15 | +import java.io.Serializable; | |
14 | 16 | import java.util.Collection; |
15 | 17 | import java.util.Date; |
16 | 18 | import java.util.List; |
... | ... | @@ -142,6 +144,7 @@ |
142 | 144 | // 数据上传 |
143 | 145 | UpdateMultiData data = new UpdateMultiData(); |
144 | 146 | data.setMongoQuery(query); |
147 | + data.setMongoUpdate(update); | |
145 | 148 | data.setUpdate(ReflectionUtils.getUpdateField(obj)); |
146 | 149 | // 批量修改的情况下,ID字段是要修改的CLASS |
147 | 150 | addSyncData("UPDATEMULTI", data, obj.getClass().getName()); |
... | ... | @@ -162,7 +165,8 @@ |
162 | 165 | model.setAction(action); |
163 | 166 | if (null != data) { |
164 | 167 | model.setClassName(LymsEncodeUtil.aesEncrypt(data.getClass().getName(), mongo_crypto_key)); |
165 | - model.setJsonData(LymsEncodeUtil.aesEncrypt(JsonUtil.obj2Str(data), mongo_crypto_key)); | |
168 | + model.setJsonData(Base64.encodeBase64String(SerializUtils.objToByte((Serializable)data))); | |
169 | + model.setType(1); | |
166 | 170 | } |
167 | 171 | model.setCreated(new Date()); |
168 | 172 | model.setModified(model.getCreated()); |
... | ... | @@ -173,6 +177,7 @@ |
173 | 177 | mongoTemplate.insert(model); |
174 | 178 | } catch (Exception e) { |
175 | 179 | e.printStackTrace(); |
180 | + System.out.println(data); | |
176 | 181 | } |
177 | 182 | } |
178 | 183 | } |
platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java
View file @
d022922
... | ... | @@ -20,7 +20,16 @@ |
20 | 20 | private String className; |
21 | 21 | private String jsonData; |
22 | 22 | private String dataId; |
23 | - private Integer status; | |
23 | + private Integer status; // 1:未同步 , 2:已同步 | |
24 | + private Integer type; // null:旧版本(JSON),1:jsonData 为 SerializData | |
25 | + | |
26 | + public Integer getType() { | |
27 | + return type; | |
28 | + } | |
29 | + | |
30 | + public void setType(Integer type) { | |
31 | + this.type = type; | |
32 | + } | |
24 | 33 | |
25 | 34 | public Integer getStatus() { |
26 | 35 | return status; |
platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java
View file @
d022922
... | ... | @@ -4,17 +4,38 @@ |
4 | 4 | import org.springframework.data.mongodb.core.query.Query; |
5 | 5 | import org.springframework.data.mongodb.core.query.Update; |
6 | 6 | |
7 | +import java.io.Serializable; | |
7 | 8 | import java.util.HashMap; |
8 | 9 | import java.util.Map; |
9 | 10 | |
10 | 11 | /** |
11 | 12 | * Created by riecard on 2016/10/30. |
12 | 13 | */ |
13 | -public class UpdateMultiData { | |
14 | +public class UpdateMultiData implements Serializable { | |
14 | 15 | |
16 | + /** | |
17 | + * | |
18 | + */ | |
19 | + private static final long serialVersionUID = 1L; | |
20 | + | |
15 | 21 | private Map<String, Object> query; |
16 | 22 | private Map<String, Object> update; |
17 | 23 | |
24 | + private Query mongoQuery; | |
25 | + private Update mongoUpdate; | |
26 | + | |
27 | + public Update getMongoUpdate() { | |
28 | + return mongoUpdate; | |
29 | + } | |
30 | + | |
31 | + public void setMongoUpdate(Update mongoUpdate) { | |
32 | + this.mongoUpdate = mongoUpdate; | |
33 | + } | |
34 | + | |
35 | + public Query getMongoQuery() { | |
36 | + return mongoQuery; | |
37 | + } | |
38 | + | |
18 | 39 | public void setQuery(Map<String, Object> query) { |
19 | 40 | this.query = query; |
20 | 41 | } |
... | ... | @@ -24,6 +45,7 @@ |
24 | 45 | } |
25 | 46 | |
26 | 47 | public void setMongoQuery(Query query) { |
48 | + this.mongoQuery = query; | |
27 | 49 | DBObject dbObject = query.getQueryObject(); |
28 | 50 | this.query = new HashMap<>(); |
29 | 51 | for (String key:dbObject.keySet()) { |