ludc
2024-04-12 f21bdede8546a348e2b16ffc3bbe292df7eeba76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
package com.vci.ubcs.code.applyjtcodeservice.feigh;
 
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.applyjtcodeservice.entity.*;
import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
import com.vci.ubcs.code.applyjtcodeservice.service.*;
import com.vci.ubcs.code.applyjtcodeservice.vo.*;
import com.vci.ubcs.code.feign.IMdmEngineClient;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.util.SaveLogUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
 
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
 
/***
 * 提供与集团申请feigh
 */
@NonDS
@ApiIgnore
@RestController
@Data
@Slf4j
public class MdmInterJtClient implements IMdmInterJtClient {
 
    @Value("${docking.apply.partCoe:10}")
    public String partCoe;
 
    /**
     * 集团申请单服务
     */
    private final IDockingPreApplyFormService dockingPreApplyFormService;
 
    /**
     * 集团分类模型视图服务
     */
    private final IDockingPreViewModelService dockingPreViewModelService;
 
    /**
     * 集团分类属性服务
     */
    private final IDockingPreMetaAttrService dockingPreMetaAttrService;
 
    /**
     * 集团分类申请单服务
     */
    private final IDockingPreClassifyService dockingPreClassifyService;
 
    /***
     * 属性映射服务
     */
    private final IDockingPreAttrMappingService dockingPreAttrMappingService;
 
    /**
     * 集团取值范围申请单服务
     */
    private final IDockingPreAttrRangeService dockingPreAttrRangeService;
 
    /**
     * 集团属性映射配置属性
     */
    private final IGroupMdmInterService groupMdmInterService;
 
    @Autowired(required = false)
    private IMdmEngineClient mdmEngineClient;
 
    private final SaveLogUtil saveLogUtil;
 
    /***
     * 申请集团编码
     * @return
     */
    public R applyGroupCode(String oids,String btmName){
        try {
            return groupMdmInterService.applyGroupCode(oids,btmName);
        }catch (Throwable e){
            return R.fail("集团码申请失败:"+e.getMessage());
        }
    }
 
    /***
     * 查询集团属性映射
     * @param codeClassifyOid:编码分类oid
     * @return
     */
    @Override
    public R<List<DockingPreAttrMappingVO>> list_mapping(String codeClassifyOid) {
        List<DockingPreAttrMapping> dockingPreAttrMappings=    dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId,codeClassifyOid));
        List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
        if(!CollectionUtils.isEmpty(dockingPreAttrMappings)){
            dockingPreAttrMappingVOList=dockingPreAttrMappingService.dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,true);
        }
        return R.data(dockingPreAttrMappingVOList);
    }
 
    /***
     * 申请集团编码数据维护
     * @return
     */
    @Override
    public R receiveEditApply(String oids, String btmName) {
        try {
            return groupMdmInterService.receiveEditApply(oids,btmName);
        }catch (Throwable e){
            return R.fail("集团码数据修改失败:"+e.getMessage());
        }
    }
 
    /**
     * 获取集团集团码,赋值到主数据
     * @param dockingReturnStoreVO
     * @return 返回集成结果信息
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R getApplyGroupCode(DockingReturnStoreVO dockingReturnStoreVO) {
        log.info("获取集团集团码,赋值到主数据 start");
        try {
            Map<String,List<BaseModel>> editObjectMap = new HashMap<>();
 
            List<DockingPreApplyForm> dockingPreApplyFormList = new ArrayList();
            //String classId = javaObject.getClassId();
            //String sysName = javaObject.getSysName();
            List<MainData> mainDataList = dockingReturnStoreVO.getMainData();
            for (MainData mainData : mainDataList) {
                JSONObject jcontent = new JSONObject();
                //编码状态
                String formState = mainData.getFormState();
                //申请单
                String applyId = mainData.getApplyId();
                String customCoding = StringUtils.isBlank(mainData.getCustomCoding()) ? "" : mainData.getCustomCoding();//集团码
                String msg = "";
                log.info("申请单:"+applyId+",集团码:"+customCoding);
                boolean res = false;
                if ("1".equals(formState)) {
                    msg = "集团审核中";
                } else if ("2".equals(formState)) {
                    msg = "驳回";
                } else if ("3".equals(formState)) {
                    msg = "集团审核中";
                } else if ("4".equals(formState)) {
                    msg = "审核结束,赋码失败";
                } else if ("5".equals(formState)) {
                    res = true;
                    msg = "审核结束,赋码成功";
                } else if ("6".equals(formState)) {
                    msg = "待301赋码";
                } else if ("7".equals(formState)) {
                    res = true;
                    msg = "已赋码";
                } else if ("8".equals(formState)) {
                    res = true;
                    msg = "已赋码(沿用)";
                } else if ("9".equals(formState)) {
                    msg = "审核中";
                }
                msg = Func.isNotBlank(mainData.getExamineOpinion()) ? msg+",意见:"+mainData.getExamineOpinion():msg;
                jcontent.put("applyId", applyId);
                jcontent.put("formState", formState);
                jcontent.put("customCoding", customCoding);
                jcontent.put("msg", msg);
                List<DockingPreApplyForm> oldDockingPreApplyFormList = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda()
                    .eq(DockingPreApplyForm::getId, applyId));
                if (CollectionUtils.isEmpty(oldDockingPreApplyFormList)) {
                    continue; //// return false;
                }
                DockingPreApplyForm dockingPreApplyForm = oldDockingPreApplyFormList.get(0);
                dockingPreApplyForm.setMsg(msg);
                dockingPreApplyForm.setCode("1");
                dockingPreApplyForm.setLastModifyTime(new Date());
                if (res) {
                    dockingPreApplyForm.setGroupCode(customCoding);
                }
                //返回结果信息
                dockingPreApplyForm.setContent(jcontent.toJSONString());
                dockingPreApplyFormList.add(dockingPreApplyForm);
                String jdataid = dockingPreApplyForm.getDataOid();
                String jdatabtmname = dockingPreApplyForm.getDataBtmName();
                if (res) {
                    //此处需要查询业务数据,去更改
                    R<List<BaseModel>> R = mdmEngineClient.selectByTypeAndOid(jdatabtmname,jdataid);
                    if(R.isSuccess()){
                        List<BaseModel> oldDatalist=new ArrayList<>();
                        List<BaseModel> newDatalist=R.getData();
                        if(!CollectionUtils.isEmpty(newDatalist)){
                            if(editObjectMap.containsKey(jdatabtmname)){
                                oldDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
                            }
                            BaseModel baseModel=oldDatalist.get(0);
                            //DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                            baseModel.setLastModifyTime(new Date());
                            baseModel.getData().put("groupcode",customCoding);
                            log.info("申请单:"+applyId+",集团码:"+customCoding+"编码:"+baseModel.getId());
                            oldDatalist.add(baseModel);
                            editObjectMap.put(jdatabtmname,oldDatalist);
                        }
                    }
                }
            }
            if(!CollectionUtils.isEmpty(editObjectMap)) {
                //调用主数据服务批量保存接口
                editObjectMap.forEach((btmName, modeList) -> {
                    mdmEngineClient.updateBatchBtypeDatas(btmName, modeList);
                });
            }
            if(!CollectionUtils.isEmpty(dockingPreApplyFormList)){
                dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
            }
            saveLogUtil.operateLog("申请单结果返回",false,JSON.toJSONString(dockingReturnStoreVO.getMainData()));
        }catch (Throwable e){
            e.printStackTrace();
            saveLogUtil.operateLog("申请单结果返回",true,"错误信息:"+e.getMessage()+"\n"+ JSON.toJSONString(dockingReturnStoreVO.getMainData()));
            return R.fail("集团码集成赋值失败,原因:"+e.getMessage());
        }
        log.info("获取集团集团码,赋值到主数据 end");
        return R.success("集团码赋值成功");
    }
 
    /***
     * 接受集团分类主模型数据
     * @param dockingClassifyModelAttrVO
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R pubMdmModel(DockingClassifyModelAttrVO dockingClassifyModelAttrVO) {
        log.info("");
        try {
            this.saveDatas(dockingClassifyModelAttrVO);
        }catch (Throwable e){
            e.printStackTrace();
            return R.fail("接受集团分类主模型数据失败"+e);
        }
        log.info("接受集团分类主模型数据 end");
        return R.success("接受集团分类主模型数据成功");
    }
 
    /***
     * 组织 保存数据方法
     * @param dockingClassifyModelAttrVO
     * @throws Throwable
     */
    private boolean saveDatas(DockingClassifyModelAttrVO dockingClassifyModelAttrVO) throws Throwable {
        List<DockingPreClassify> dockingPreClassifyArrayList=new ArrayList<>();
        try {
            DockingClassifyMainVO mainData = dockingClassifyModelAttrVO.getDataStructure();
            List<DockingClassifyVO> classList = mainData.getClassList();
            Map<String, List<DockingClassifyViewVO>> classInfoMap = mainData.getClassInfos();
            for (DockingClassifyVO jclassObject : classList) {
                String id =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
                String className = StringUtils.isBlank(jclassObject.getClassName())?"":jclassObject.getClassName();
                String pid = StringUtils.isBlank(jclassObject.getPid())?"":jclassObject.getPid();
                String nodeLink = StringUtils.isBlank(jclassObject.getNodeLink())?"":jclassObject.getNodeLink();
                String nodeLinkName = StringUtils.isBlank(jclassObject.getNodeLinkName())?"":jclassObject.getNodeLinkName();
                String classNumber = StringUtils.isBlank(jclassObject.getClassNumber())?"":jclassObject.getClassNumber();
                //ClientBusinessObject classObject = objectOperation.readBusinessObjectById(id, "jclass");// 获取分类信息
                 DockingPreClassify dockingPreClassify=dockingPreClassifyService.getById(id);
                log.info("classify:-------------->集团分类主机:"+id);
                log.info("classify:-------------->集团分类名称:"+className);
                log.info("classify:--------------> 集团分类父节点:"+pid);
                log.info("classify:-------------->链接:"+nodeLink);
                log.info("classify:-------------->链接名称:"+nodeLinkName);
 
                if (dockingPreClassify == null|| StringUtils.isBlank(dockingPreClassify.getOid())) {
                    dockingPreClassify = new DockingPreClassify();
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreClassify, MdmBtmTypeConstant.DOCKING_PRE_JCLASSIFY);
                } else {
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreClassify);
                }
                dockingPreClassify.setOid(id);
                dockingPreClassify.setName(className);
                dockingPreClassify.setPid(pid);
                dockingPreClassify.setId(classNumber);
                dockingPreClassify.setNodeLink(nodeLink);
                dockingPreClassify.setNodeLinkName(nodeLinkName);
                dockingPreClassify.setClassName(className);
                dockingPreClassifyArrayList.add(dockingPreClassify);
                // 获取对应的分类视图模型
                if (classInfoMap.containsKey(id)) {
                    List<DockingClassifyViewVO> list = classInfoMap.get(id);
                    getVilewMode(jclassObject, list);
                }
            }
            boolean res= dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyArrayList);
            return res;
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("存储视图模型出现问题");
        }
    }
 
    /***
     * 获取分类视图
     *
     * @param jclassObject
     * @throws Throwable
     */
    private void getVilewMode(@NotNull DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list) throws Throwable {
        String nodeLinkName = jclassObject.getNodeLinkName();
        try {
            String jclassId =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
            Map<String, DockingPreViewModel> jviewmodelMap = new HashMap<String, DockingPreViewModel>();
            //Map<String, String> condtionMa = new HashMap<String, String>();
        //    condtionMa.put("jsourceclsfid", jclassId);
            List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,false));// 根据分类查询模型视图对象
            for (DockingPreViewModel dockingPreViewModel : dockingPreViewModelList) {
                jviewmodelMap.put(dockingPreViewModel.getViewName(),dockingPreViewModel);
            }
 
            for (DockingClassifyViewVO viewInfo : list) {
                String viewName =StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
                String impactList = viewInfo.getImpactList() == null ? "" : viewInfo.getImpactList().get(0).get(0);
                log.info("VilewMode:-------------->视图名称:"+viewName);
                log.info("VilewMode:-------------->影响编码项:"+impactList);
                log.info("VilewMode:--------------> 集团分类主键:"+jclassId);
                List<DockingClassifyMetaAttrVO> metaList = viewInfo.getMetaList();
                DockingPreViewModel jviewModelObject = null;
                if (jviewmodelMap.containsKey(viewName)) {
                    jviewModelObject = jviewmodelMap.get(viewName);
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(jviewModelObject);
                } else {
                    jviewModelObject =new DockingPreViewModel();
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(jviewModelObject,MdmBtmTypeConstant.DOCKING_PRE_JVIEWMODEL);
                    jviewModelObject.setSourceClassifyId(jclassId);// 集团分类id
                    jviewModelObject.setViewName(viewName);// 集团视图名称
                    //影响编码项的数据
                    jviewModelObject.setImpactList(impactList);
                    dockingPreViewModelList.add(jviewModelObject);
                }
                // 获取模型视图下的属性集
                // String oid = jviewModelObject.getOid();
                List<DockingPreMetaAttr>allDockingPreMetaAttrList=new ArrayList<>();
                getMetaAttrObject(metaList, jclassId, jviewModelObject, "root",allDockingPreMetaAttrList);
                //保存模型视图属性
                dockingPreMetaAttrService.saveOrUpdateBatch(allDockingPreMetaAttrList);
                //保存模型视图
                dockingPreViewModelService.saveOrUpdateBatch(dockingPreViewModelList);
            }
        } catch (Throwable e) {
            e.printStackTrace();
            throw new Throwable("组织分类" + nodeLinkName + "模型视图存储出现问题");
        }
    }
 
    /***
     * 获取模型视图属性
     * @throws Throwable
     */
    private void getMetaAttrObject(List<DockingClassifyMetaAttrVO> metaList,
                                   String jclassId, DockingPreViewModel jviewModelObject, String pid,List<DockingPreMetaAttr>allDockingPreMetaAttrList)throws Throwable {
        try {
            //// 根据分类查询模型视图对象
            List<DockingPreMetaAttr> dockingPreMetaAttrList = dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda()
                .eq(DockingPreMetaAttr::getSourceClassifyId,jclassId).eq(DockingPreMetaAttr::getViewModelId,jviewModelObject.getOid())
                .eq(DockingPreMetaAttr:: getPid,pid));
                Map<String,DockingPreMetaAttr> jmetaattrMap = dockingPreMetaAttrList.stream().filter(
                s -> StringUtils.isNotBlank(s.getEnglishName())).collect(Collectors.toMap(s -> s.getEnglishName().toLowerCase(Locale.ROOT), t -> t));
 
            for (DockingClassifyMetaAttrVO dockingClassifyMetaAttrVO : metaList) {
                String chineseName =StringUtils.isBlank(dockingClassifyMetaAttrVO.getChineseName())?"":dockingClassifyMetaAttrVO.getChineseName();// 属性名称
                String englishName = StringUtils.isBlank(dockingClassifyMetaAttrVO.getEnglishName())?"":dockingClassifyMetaAttrVO.getEnglishName();// 英文名称
                String defaultValue = StringUtils.isBlank(dockingClassifyMetaAttrVO.getDefaultValue())?"":dockingClassifyMetaAttrVO.getDefaultValue();
                Integer metadataType =dockingClassifyMetaAttrVO.getMetadataType();// 类型
                Integer necessaryConf = dockingClassifyMetaAttrVO.getNecessaryConf();// 是否必填
                Map<String, String> range = dockingClassifyMetaAttrVO.getRange()==null?new HashMap<String, String>():dockingClassifyMetaAttrVO.getRange();// 取值范围
 
                log.info("metaAttr:-------------->属性名称:"+chineseName);
                log.info("metaAttr:-------------->英文名称:"+englishName);
                log.info("metaAttr:-------------->默认值:"+defaultValue);
                log.info("metaAttr:--------------> 类型:"+metadataType);
                log.info("metaAttr:-------------->  是否必填:"+necessaryConf);
                DockingPreMetaAttr dockingPreMetaAttr = new DockingPreMetaAttr();
                if (jmetaattrMap.containsKey(englishName)) {
                    dockingPreMetaAttr = jmetaattrMap.get(englishName);
                    dockingPreMetaAttr.setChineseName(chineseName);
                    dockingPreMetaAttr.setDefaultValue(defaultValue);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreMetaAttr);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreMetaAttr,MdmBtmTypeConstant.DOCKING_PRE_JMETAATRR);
                    dockingPreMetaAttr.setSourceClassifyId(jclassId);// 集团分类id
                    dockingPreMetaAttr.setViewModelId(jviewModelObject.getOid());// 集团视图模型id
                    dockingPreMetaAttr.setChineseName(chineseName);// 属性名称
                    dockingPreMetaAttr.setEnglishName(englishName);// 属性字段
                    dockingPreMetaAttr.setDefaultValue(defaultValue);// 属性名称
                    dockingPreMetaAttr.setMetaDataType(metadataType);// 属性类型
                    dockingPreMetaAttr.setNecesSaryConf(necessaryConf);// 属性必填项
                    dockingPreMetaAttr.setPid(pid);// 父节点id
                }
                if(range!=null&&range.size()>0){
                    // 获取属性值域
                    getRange(dockingPreMetaAttr, range);
                }
                /***
                 * 获取子节点
                 */
                DockingClassifyMetaAttrVO compositeMeta = dockingClassifyMetaAttrVO.getCompositeMeta();
                if (compositeMeta != null) {
                    pid = StringUtils.isBlank(dockingPreMetaAttr.getOid())?"":dockingPreMetaAttr.getOid();// 当前oid
                    List<DockingClassifyMetaAttrVO> childMetaList = new ArrayList<>();
                    childMetaList.add(compositeMeta);
                    getMetaAttrObject(childMetaList, jclassId,jviewModelObject, pid,allDockingPreMetaAttrList);
                }
 
            }
 
        } catch (Throwable e) {
            e.printStackTrace();
            log.error("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
            throw new Throwable("组织模型视图"+ jviewModelObject.getViewName()
                + "属性存储出现问题" + e);
        }
    }
 
    /**
     * @throws Throwable
     *             * 获取值域
     * @param metaAttrObject
     * @param range
     * @throws
     */
    private void getRange(DockingPreMetaAttr metaAttrObject,Map<String, String> range) throws Throwable {
        String metaAttrOid =StringUtils.isBlank(metaAttrObject.getOid())?"":metaAttrObject.getOid();// 属性的oid
        String jchinesename = StringUtils.isBlank(metaAttrObject.getChineseName())?"":metaAttrObject.getChineseName();
        Map<String, DockingPreAttrRange> rangeMap = new HashMap<>();
        try {
            Map<String, String> condtionMa = new HashMap<String, String>();
            condtionMa.put("jmetalistid", metaAttrOid);
            List<DockingPreAttrRange> jmetaattrList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda()
                .eq(DockingPreAttrRange::getMetaListId,metaAttrOid));// 根据分类查询模型视图对象
            rangeMap= jmetaattrList.stream().collect(Collectors.toMap(s -> StringUtils.isNotBlank(s.getNumText().toLowerCase(Locale.ROOT))?"":s.getNumText().toLowerCase(Locale.ROOT), t -> t));
 
            for (String rangeKey : range.keySet()) {
                DockingPreAttrRange rangeObject = new DockingPreAttrRange();
                String keyValue = StringUtils.isBlank(range.get(rangeKey))?"":range.get(rangeKey);
                log.info("range:-------------->显示值"+rangeKey+",内部值"+keyValue);
                if (rangeMap.containsKey(rangeKey)) {
                    rangeObject = rangeMap.get(rangeKey);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    DefaultAttrAssimtUtil.updateDefaultAttrAssimt(rangeObject);
                } else {
                    DefaultAttrAssimtUtil.addDefaultAttrAssimt(rangeObject,MdmBtmTypeConstant.DOCKING_PRE_JRANGE);
                    rangeObject.setNumTextValue(keyValue);
                    rangeObject.setNumText(rangeKey);
                    rangeObject.setTs(rangeObject.getLastModifyTime());
                    rangeObject.setMetaListId(metaAttrOid);
                    log.info("range:-------------->属性内部值:"+metaAttrOid);
                    log.info("range:-------------->时间:"+rangeObject.getLastModifyTime());
                    jmetaattrList.add(rangeObject);
                }
            }
            dockingPreAttrRangeService.saveOrUpdateBatch(jmetaattrList);
        } catch (Throwable e) {
            e.printStackTrace();
            log.info("组织属性:【" + jchinesename + "】值域出现问题"+ e);
            throw new Throwable("组织属性:【" + jchinesename + "】值域出现问题"+ e);
        }
    }
 
}