package com.vci.ubcs.code.applyjtcodeservice.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.vci.ubcs.code.applyjtcodeservice.service.*;
|
import com.vci.ubcs.code.feign.IMdmEngineClient;
|
import com.vci.ubcs.code.applyjtcodeservice.entity.*;
|
import com.vci.ubcs.code.applyjtcodeservice.vo.*;
|
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
|
import com.vci.ubcs.code.applyjtcodeservice.feign.MdmApplyGroupCodeProvider;
|
import com.vci.ubcs.code.applyjtcodeservice.mapper.DockingPreAttrMappingMapper;
|
import com.vci.ubcs.starter.exception.VciBaseException;
|
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
|
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
|
import com.vci.ubcs.starter.web.util.VciBaseUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.map.CaseInsensitiveMap;
|
import org.springblade.core.secure.utils.AuthUtil;
|
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.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import com.vci.ubcs.starter.revision.model.BaseModel;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/***
|
* 与集团集成服务
|
* @author xiejun
|
* @date 2023-05-26
|
*/
|
@Service
|
@Slf4j
|
public class GroupMdmInterServiceImpl implements IGroupMdmInterService {
|
|
private String code="";
|
|
private String msg="";
|
|
@Value("${docking.apply.partCode:101}")
|
public String partCode;
|
|
@Value("${docking.apply.usedFlag:false}")
|
public boolean usedFlag;
|
|
@Value("${docking.apply.unitCode:4100}")
|
public String dockingApplyUnitCode;
|
|
@Value("${docking.apply.sysName:410-MDM}")
|
public String dockingApplySysName;
|
|
@Value("${docking.apply.personUserAccount:28201728}")
|
public String applyCodeUserAccount;
|
|
@Autowired(required = false)
|
private MdmApplyGroupCodeProvider mdmApplyGroupCodeProvider;
|
|
/***
|
* 集团分类服务
|
*/
|
@Autowired(required = false)
|
private IDockingPreClassifyService dockingPreClassifyService;
|
|
/***
|
* 申请单服务
|
*/
|
@Autowired(required = false)
|
private IDockingPreApplyFormService dockingPreApplyFormService;
|
|
/***
|
* 模型视图单服务
|
*/
|
@Autowired(required = false)
|
private IDockingPreViewModelService dockingPreViewModelService;
|
|
/***
|
* 集团分类属性属性映射配置服务
|
*/
|
@Autowired(required = false)
|
private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
|
|
/***
|
* 属性取值范围服务
|
*/
|
@Autowired(required = false)
|
private IDockingPreAttrRangeService dockingPreAttrRangeService;
|
|
/***
|
* 集团属性服务
|
*/
|
@Autowired(required = false)
|
private IDockingPreMetaAttrService dockingPreMetaAttrService;
|
|
@Autowired(required = false)
|
private IMdmEngineClient mdmEngineClient;
|
|
/***
|
* 主数据向集团申请编码
|
* @param oids 需要申请的数据主键数组
|
* @param btmName 业务类型
|
* @return 返回结果信息
|
* @throws Exception
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R applyGroupCode(String oids, String btmName) throws VciBaseException {
|
if(usedFlag) {
|
try {
|
List<BaseModel> updateCbos = new ArrayList<BaseModel>();
|
List<DockingPreApplyForm> dockingPreAttrMappings = new ArrayList<>();
|
VciBaseUtil.alertNotNull(oids, "选择的数据");
|
VciBaseUtil.alertNotNull(btmName, "业务类型");
|
R<List<BaseModel>> baseModelR = mdmEngineClient.selectByTypeAndOid(btmName, oids);
|
List<BaseModel> dataModelList = baseModelR.getData();
|
if (!CollectionUtils.isEmpty(dataModelList)) {
|
DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
|
//申请单和申请单对象关系
|
Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
|
Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
|
Map<String, BaseModel> baseModelMap = new HashMap<String, BaseModel>();
|
//数据库不存在的
|
/*List<BaseModel> newDdataModelList = dataModelList.stream().filter(cbo -> {
|
String groupcode =cbo.getData().getOrDefault("GROUPCODE","");
|
return StringUtils.isBlank(groupcode);
|
}).collect(Collectors.toList());
|
if(newDdataModelList.size()==0)
|
return R.fail("申请接口调用成功,所有数据已经存在集团码");*/
|
|
//组织数据
|
dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
|
Object object = JSONObject.toJSON(dockingGroupDataVO);
|
String resultStr = object.toString();
|
log.info("申请集团码数据格式:->"+resultStr);
|
DockingResultVO resultDataObject = new DockingResultVO();
|
resultDataObject = mdmApplyGroupCodeProvider.receiveAddApply(dockingGroupDataVO);
|
log.info("申请集团码返回结果:->"+JSONObject.toJSONString(resultDataObject));
|
code = resultDataObject.getCode();
|
msg = resultDataObject.getMsg();
|
boolean res=false;
|
if("1".equals(code)) {
|
//结果正确的情况
|
List<DockingDataVO> dataObjectVOList = resultDataObject.getData();
|
res=true;
|
dataObjectVOList.stream().forEach(dataObject -> {
|
boolean isEditDatas = false;
|
String code2 = dataObject.getCode();
|
DockingMainDataVO data2 = dataObject.getData();
|
String applyId = data2.getApplyId();//申请单id
|
BaseModel baseModel = baseModelMap.get(applyId);
|
String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();
|
msg = dataObject.getMsg();
|
if (code2.equals("1")) {//结果正确的情况
|
if (!"".equals(customCoding)) {
|
isEditDatas = true;
|
}
|
}
|
//需要修改的申请单数据
|
if (editDockingPreApplyFormMap.containsKey(applyId)) {
|
DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
|
dockingPreApplyForm.setCode(code2);
|
dockingPreApplyForm.setDescription(baseModel.getId());
|
dockingPreApplyForm.setMsg("申请:" + msg);
|
if(StringUtils.isBlank(dockingPreApplyForm.getGroupCode())) {
|
dockingPreApplyForm.setGroupCode(customCoding);
|
}else{
|
isEditDatas = true;
|
if (StringUtils.isBlank(customCoding)) {
|
customCoding=dockingPreApplyForm.getGroupCode();
|
}
|
}
|
ObjectMapper mp = new ObjectMapper();
|
String writeValueAsString = null;
|
try {
|
writeValueAsString = mp.writeValueAsString(dataObject);
|
dockingPreApplyForm.setContent(writeValueAsString);
|
} catch (JsonProcessingException e) {
|
}
|
Date date = new Date();
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setTs(date);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
|
}
|
//新增的申请单数据
|
if (addDockingPreApplyFormMap.containsKey(applyId)) {
|
DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
|
dockingPreApplyForm.setCode(code2);
|
dockingPreApplyForm.setDescription(baseModel.getId());
|
dockingPreApplyForm.setMsg("申请:" + msg);
|
dockingPreApplyForm.setGroupCode(customCoding);
|
ObjectMapper mp = new ObjectMapper();
|
String writeValueAsString = null;
|
try {
|
writeValueAsString = mp.writeValueAsString(dataObject);
|
dockingPreApplyForm.setContent(writeValueAsString);
|
} catch (JsonProcessingException e) {
|
}
|
Date date = new Date();
|
dockingPreApplyForm.setCreateTime(date);
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setCreator(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setBtmname(MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
dockingPreApplyForm.setTs(date);
|
// DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
}
|
//如果有集团码则更新数据
|
if (isEditDatas) {
|
if (baseModelMap.containsKey(applyId)) {
|
baseModel = baseModelMap.get(applyId);
|
//Map<String,String> dataValueMap=new CaseInsensitiveMap<>(baseModel.getData());
|
/*String classOid=baseModel.getId();
|
if(partCode.equals(classOid)){
|
baseModel.setId(10+customCoding);
|
customCoding=10+customCoding;
|
}*/
|
BeanUtilForVCI.copyDeclaredIgnoreCase(baseModel, baseModel);
|
Date date = new Date();
|
baseModel.setLastModifyTime(date);
|
baseModel.setTs(date);
|
baseModel.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
|
baseModel.getData().put("GROUPCODE",customCoding);
|
updateCbos.add(baseModel);//更新数据集团code
|
}
|
}
|
});
|
} else {
|
res=false;
|
Date date = new Date();
|
editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
|
dockingPreApplyForm.setCode("2");
|
dockingPreApplyForm.setMsg("申请:" + msg);
|
dockingPreApplyForm.setContent("");
|
dockingPreApplyForm.setGroupCode("");
|
dockingPreApplyForm.setCreateTime(date);
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setBtmname(MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setCreator(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setTs(date);
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
|
});
|
addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
|
dockingPreApplyForm.setCode("2");
|
dockingPreApplyForm.setMsg("申请:" + msg);
|
dockingPreApplyForm.setContent("");
|
dockingPreApplyForm.setGroupCode("");
|
dockingPreApplyForm.setCreateTime(date);
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setBtmname(MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setCreator(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setTs(date);
|
//DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
});
|
}
|
if (editDockingPreApplyFormMap.size() > 0) {
|
dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
|
}
|
if (addDockingPreApplyFormMap.size() > 0) {
|
dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
|
}
|
//保存表单数据
|
dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
|
mdmEngineClient.updateBatchBtypeDatas(btmName, updateCbos);//保存数据
|
if(!res){
|
throw new VciBaseException(msg);
|
}
|
}
|
return R.success("申请接口调用成功");
|
} catch (VciBaseException e) {
|
return R.fail("申请接口调用失败" + e.getMessage());
|
}
|
}else{
|
return R.fail("申请接口开关已关闭,不申请集团码");
|
}
|
}
|
|
/***
|
* 主数据像集团更改编码
|
* @param oids 需要修改的数据主键数组
|
* @param btmName 业务类型
|
* @return 返回结果信息
|
* @throws Throwable
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R receiveEditApply(String oids, String btmName) throws VciBaseException {
|
if(!usedFlag) {
|
log.info("更新接口功能已关闭!->"+usedFlag);
|
R.success("更新接口功能已关闭!");
|
}
|
List<BaseModel> updateCbos = new ArrayList<BaseModel>();
|
List<DockingPreApplyForm> dockingPreAttrMappings = new ArrayList<>();
|
VciBaseUtil.alertNotNull(oids, "选择的数据");
|
VciBaseUtil.alertNotNull(btmName, "业务类型");
|
//List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
|
List<BaseModel> dataModelList = new ArrayList<>();
|
try {
|
R<List<BaseModel>> listR = mdmEngineClient.selectByTypeAndOid(btmName, oids);
|
if(listR.getData().size() == 0){
|
return R.fail("为查询到相关业务数据!");
|
}
|
dataModelList = listR.getData();
|
if (!CollectionUtils.isEmpty(dataModelList)) {
|
DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
|
//申请单和申请单对象关系
|
Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
|
Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
|
Map<String, BaseModel> baseModelMap = new HashMap<String, BaseModel>();
|
//组织数据
|
dockingGroupDataVO = queryApplycodeDataObjects(2, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
|
DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveEditApply(dockingGroupDataVO);
|
code = resultDataObject.getCode();
|
msg = resultDataObject.getMsg();
|
if ("1".equals(resultDataObject.getCode())) {//结果正确的情况
|
List<DockingDataVO> dataObjectVOList = resultDataObject.getData();
|
dataObjectVOList.stream().forEach(dataObject -> {
|
boolean isEditDatas = false;
|
String code2 = dataObject.getCode();
|
DockingMainDataVO data2 = dataObject.getData();
|
String applyId = data2.getApplyId();//申请单id
|
String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//集团码段
|
msg = dataObject.getMsg();
|
if (code2.equals("1")) {//结果正确的情况
|
if (!"".equals(customCoding)) {
|
isEditDatas = true;
|
}
|
}
|
//需要修改的申请单数据
|
if (editDockingPreApplyFormMap.containsKey(applyId)) {
|
DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
|
dockingPreApplyForm.setCode(code2);
|
dockingPreApplyForm.setMsg("修改:" + msg);
|
if(StringUtils.isBlank(dockingPreApplyForm.getGroupCode())) {
|
dockingPreApplyForm.setGroupCode(customCoding);
|
}
|
ObjectMapper mp = new ObjectMapper();
|
String writeValueAsString = null;
|
try {
|
writeValueAsString = mp.writeValueAsString(dataObject);
|
dockingPreApplyForm.setContent(writeValueAsString);
|
} catch (JsonProcessingException e) {
|
}
|
Date date = new Date();
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setTs(date);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
|
}
|
//新增的申请单数据
|
if (addDockingPreApplyFormMap.containsKey(applyId)) {
|
DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
|
dockingPreApplyForm.setCode(code2);
|
dockingPreApplyForm.setMsg("修改:" + msg);
|
if(StringUtils.isBlank(dockingPreApplyForm.getGroupCode())) {
|
dockingPreApplyForm.setGroupCode(customCoding);
|
}
|
ObjectMapper mp = new ObjectMapper();
|
String writeValueAsString = null;
|
try {
|
writeValueAsString = mp.writeValueAsString(dataObject);
|
dockingPreApplyForm.setContent(writeValueAsString);
|
} catch (JsonProcessingException e) {
|
}
|
Date date = new Date();
|
dockingPreApplyForm.setCreateTime(date);
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setBtmname(MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
dockingPreApplyForm.setTs(date);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setCreator(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
}
|
//如果有集团码则更新数据
|
if (isEditDatas) {
|
if (baseModelMap.containsKey(applyId)) {
|
BaseModel baseModel = baseModelMap.get(applyId);
|
//BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
|
/*String classOid=baseModel.getData().getOrDefault("CODECLSFID","");
|
if(partCode.equals(classOid)){
|
baseModel.setId(10+customCoding);
|
}*/
|
Date date = new Date();
|
baseModel.setLastModifyTime(date);
|
baseModel.setTs(date);
|
baseModel.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
|
//baseModel.setId(customCoding);
|
baseModel.getData().put("GROUPCODE", customCoding);
|
updateCbos.add(baseModel);//更新数据集团code
|
}
|
}
|
});
|
} else {
|
editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
|
dockingPreApplyForm.setCode("2");
|
dockingPreApplyForm.setMsg("修改:" + msg);
|
dockingPreApplyForm.setContent("");
|
dockingPreApplyForm.setGroupCode("");
|
Date date = new Date();
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setTs(date);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
|
});
|
addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
|
dockingPreApplyForm.setCode("2");
|
dockingPreApplyForm.setMsg("修改:" + msg);
|
dockingPreApplyForm.setContent("");
|
dockingPreApplyForm.setGroupCode("");
|
Date date = new Date();
|
dockingPreApplyForm.setCreateTime(date);
|
dockingPreApplyForm.setLastModifyTime(date);
|
dockingPreApplyForm.setTs(date);
|
dockingPreApplyForm.setBtmname(MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
dockingPreApplyForm.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
dockingPreApplyForm.setCreator(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount());
|
//DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
|
});
|
}
|
if (editDockingPreApplyFormMap.size() > 0) {
|
dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
|
}
|
if (addDockingPreApplyFormMap.size() > 0) {
|
dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
|
}
|
//保存表单数据
|
dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
|
mdmEngineClient.updateBatchBtypeDatas(btmName, updateCbos);//保存数据
|
}
|
return R.success("更新接口调用成功");
|
} catch (VciBaseException e) {
|
return R.fail("更新接口调用失败" + e.getMessage());
|
}
|
}
|
|
/***
|
* 获取集团模型详细信息执行保存
|
* @param groupClassifyId
|
* @return
|
* @throws VciBaseException
|
*/
|
@Override
|
public R queryClassModel(String groupClassifyId) throws Throwable {
|
log.info("获取集团模型详细信息执行保存start");
|
String message="执行成功!";
|
if(!usedFlag){
|
log.info("获取集团模型详细信息执行保存功能已关闭!->"+usedFlag);
|
return R.fail("获取集团模型详细信息接口已关闭!");
|
}
|
try {
|
if (StringUtils.isBlank(groupClassifyId)) {
|
message = "参数:集团分类主键,为空!";
|
log.info(message);
|
throw new Throwable(message);
|
}
|
if (StringUtils.isBlank(dockingApplySysName)) {
|
message = "获取系统标识" + dockingApplySysName + "为空,请查看配置!";
|
log.info(message);
|
throw new Throwable(message);
|
}
|
DockingModelQueryVO dockingModelQueryVO = new DockingModelQueryVO();
|
dockingModelQueryVO.setClassId(groupClassifyId);
|
dockingModelQueryVO.setSysName(dockingApplySysName);
|
DockingQueryClassModelVO dockingQueryClassifyModelVO = mdmApplyGroupCodeProvider.queryClassModel(dockingModelQueryVO);
|
if (dockingQueryClassifyModelVO != null) {
|
int code = dockingQueryClassifyModelVO.getCode();
|
message = dockingQueryClassifyModelVO.getMsg();
|
if (code == 1) {
|
this.saveDatas(dockingQueryClassifyModelVO);
|
} else {
|
log.info(message);
|
throw new Throwable(message);
|
}
|
} else {
|
message = "未从集团获取到任何模型信息";
|
log.info(message);
|
throw new Throwable(message);
|
}
|
return R.success(message);
|
} catch (Throwable e) {
|
e.printStackTrace();
|
log.error("获取数据模型详细信息失败" + e);
|
return R.fail(message);
|
}finally {
|
log.info("获取集团模型详细信息执行保存end");
|
}
|
}
|
|
/***
|
* 从集团获取主模型信息执行保存
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public R queryMdmModel() throws Throwable {
|
String message="执行成功!";
|
log.info("从集团获取主模型信息执行保存接口statr");
|
if(!usedFlag){
|
log.info("从集团获取主模型信息执行保存接口功能已关闭!->"+usedFlag);
|
return R.fail("查询模型视图接口已关闭!");
|
}
|
try {
|
if (StringUtils.isBlank(dockingApplySysName)) {
|
message = "获取系统标识" + dockingApplySysName + "为空,请查看配置!";
|
log.info(message);
|
throw new Throwable(message);
|
}
|
|
DockingModelQueryVO dockingModelQueryVO = new DockingModelQueryVO();
|
dockingModelQueryVO.setSysName(dockingApplySysName);
|
DockingQueryModelVO dockingQueryModelVO= mdmApplyGroupCodeProvider.queryMdmModel(dockingModelQueryVO);
|
if (dockingQueryModelVO != null) {
|
int code = dockingQueryModelVO.getCode();
|
message = dockingQueryModelVO.getMsg();
|
if (code == 1) {
|
List<DockingClassifyVO> dockingClassifyVOList=dockingQueryModelVO.getData();
|
List<DockingPreClassify>dockingPreClassifyList=new ArrayList<>();
|
dockingClassifyVOList.stream().forEach(dockingClassifyVO -> {
|
String id = StringUtils.isBlank(dockingClassifyVO.getId())?"":dockingClassifyVO.getId();
|
String className = StringUtils.isBlank(dockingClassifyVO.getClassName())?"":dockingClassifyVO.getClassName();
|
String classNumber = StringUtils.isBlank(dockingClassifyVO.getClassNumber())?"":dockingClassifyVO.getClassNumber();
|
String nodeLink = StringUtils.isBlank(dockingClassifyVO.getNodeLink())?"":dockingClassifyVO.getNodeLink();
|
String nodeLinkName = StringUtils.isBlank(dockingClassifyVO.getNodeLinkName())?"":dockingClassifyVO.getNodeLinkName();
|
String pid = StringUtils.isBlank(dockingClassifyVO.getPid())?"":dockingClassifyVO.getPid();
|
String version = StringUtils.isBlank(dockingClassifyVO.getVersion())?"":dockingClassifyVO.getVersion();
|
DockingPreClassify dockingPreClassify= this.dockingPreClassifyService.getById(id);
|
|
log.info("classify:-------------->集团分类主机:"+id);
|
log.info("classify:-------------->集团分类名称:"+className);
|
log.info("classify:--------------> 集团分类父节点:"+pid);
|
log.info("classify:-------------->链接:"+nodeLink);
|
log.info("classify:-------------->集团分类代号:"+classNumber);
|
log.info("classify:-------------->链接名称:"+nodeLinkName);
|
log.info("classify:-------------->链接版本:"+version);
|
if (dockingPreClassify == null || StringUtils.isBlank(dockingPreClassify.getOid())) {
|
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);
|
dockingPreClassify.setVersionValue(version);
|
dockingPreClassifyList.add(dockingPreClassify);
|
});
|
boolean res = dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyList);
|
if(res){
|
R.success(message);
|
}else{
|
message="保存分类主模型失败";
|
throw new Throwable(message);
|
}
|
} else {
|
log.info(message);
|
throw new Throwable(message);
|
}
|
}else{
|
message="未从集团获取到任何模型信息";
|
log.info(message);
|
throw new Throwable(message);
|
}
|
return R.success(message);
|
}catch (Throwable e){
|
e.printStackTrace();
|
log.error("获取数据模型失败"+e);
|
R.fail(message);
|
}
|
log.info("从集团获取主模型信息执行保存接口end");
|
return R.success(message);
|
}
|
|
/***
|
* 查询申请单状态
|
* @param dataOids
|
* @return 执行结果
|
*/
|
@Override
|
public R queryApplyState(String dataOids) throws VciBaseException {
|
if(!usedFlag){
|
log.info("查询申请单状态接口开关已关闭");
|
return R.fail("查询申请单状态接口开关已关闭");
|
}
|
String message="执行成功!";
|
log.info("查询申请单状态接口start");
|
try {
|
VciBaseUtil.alertNotNull(dataOids,"所查申请单数据主键");
|
VciBaseUtil.alertNotNull(dockingApplySysName,"系统标识配置:docking.apply.unitCode");
|
List<String> applyIdList=new ArrayList<>();
|
List<DockingPreApplyForm> dockingPreApplyFormList= this.dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().in(DockingPreApplyForm::getDataOid, VciBaseUtil.str2List(dataOids)));
|
Map<String,DockingPreApplyForm> dockingPreApplyFormMap=new HashMap<>();
|
dockingPreApplyFormList.stream().forEach(dockingPreApplyForm -> {
|
applyIdList.add(dockingPreApplyForm.getId());
|
dockingPreApplyFormMap.put(dockingPreApplyForm.getId(),dockingPreApplyForm);
|
});
|
|
DockingModelQueryVO dockingModelQueryVO=new DockingModelQueryVO();
|
dockingModelQueryVO.setApplyNums(VciBaseUtil.array2String(applyIdList.toArray(new String[]{})));
|
dockingModelQueryVO.setSysName(dockingApplySysName);
|
DockingApplyFormQueryStatusVO dockingApplyFormQueryStatusVO = mdmApplyGroupCodeProvider.queryApplyState(dockingModelQueryVO);
|
|
if(Func.isEmpty(dockingApplyFormQueryStatusVO)){
|
log.error("获取申请单为空!");
|
return R.fail("没有获取到相关数据信息!");
|
}
|
|
int code=dockingApplyFormQueryStatusVO.getCode();
|
String mesg=dockingApplyFormQueryStatusVO.getMsg();
|
if(code==1){
|
message=mesg;
|
List<DockingApplyFormStatusVO> dockingApplyFormStatusVOList=dockingApplyFormQueryStatusVO.getData();
|
if(!CollectionUtils.isEmpty(dockingApplyFormStatusVOList)){
|
for (DockingApplyFormStatusVO applyFormDataState : dockingApplyFormStatusVOList) {
|
String applyId=applyFormDataState.getApplyNum();
|
String state= applyFormDataState.getFormState();
|
String examineOpinion=applyFormDataState.getExamineOpinion();
|
String jmsg=getCodeState(state)+",意见:"+examineOpinion;
|
if(dockingPreApplyFormMap.containsKey(applyId)){
|
DockingPreApplyForm applyFormObject=dockingPreApplyFormMap.get(applyId);
|
applyFormObject.setMsg(jmsg);
|
}
|
}
|
boolean res = this.dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
|
}else{
|
throw new Throwable("没有获取到相关数据信息");
|
}
|
}else{
|
message=mesg;
|
dockingPreApplyFormList.stream().forEach(dockingPreApplyForm -> {
|
dockingPreApplyForm.setMsg("申请单查看失败:"+mesg);
|
});
|
this.dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
|
throw new Throwable(message);
|
}
|
|
}catch (Throwable e){
|
e.printStackTrace();
|
//message=""+e;
|
log.error("获取申请单状态失败"+e);
|
throw new VciBaseException(e.getMessage());
|
}
|
log.info("查询申请单状态接口end");
|
return R.success(message);
|
}
|
|
/***
|
* 同步集团模型信息
|
* @param classifyId
|
* @param operationType
|
* @return 返回执行结果
|
* @throws VciBaseException
|
*/
|
@Override
|
public R syncClassifyModel(String classifyId, String operationType) throws VciBaseException {
|
if(!usedFlag){
|
log.info("同步集团模型信息开关已关闭");
|
return R.fail("同步集团模型信息开关已关闭");
|
}
|
VciBaseUtil.alertNotNull(operationType,"集成操作类型");
|
try {
|
if(operationType.equals("all")){
|
return queryMdmModel();
|
}else{
|
VciBaseUtil.alertNotNull(classifyId,"集团分类主键");
|
return queryClassModel(classifyId);
|
}
|
} catch (Throwable e) {
|
throw new VciBaseException(e.getMessage());
|
}
|
}
|
|
/***
|
* 组织 保存数据方法
|
*
|
* @param dockingQueryClassifyModelVO
|
* @return
|
* @throws Throwable
|
* @throws
|
* @throws Throwable
|
*/
|
private boolean saveDatas(DockingQueryClassModelVO dockingQueryClassifyModelVO) throws Throwable {
|
try {
|
DockingClassifyMainVO data = dockingQueryClassifyModelVO.getData();
|
List<DockingClassifyVO> classList = data.getClassList();
|
Map<String,List<DockingClassifyViewVO>>classInfoMap = data.getClassInfos();
|
////initVCIInvocationInfo("1");
|
List<DockingPreClassify> dockingPreClassifyArrayList=new ArrayList<>();
|
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();
|
//根据分类查询模型视图对象
|
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(DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
|
throws Throwable {
|
String nodeLinkName = jclassObject.getNodeLinkName();
|
try {
|
String jclassId = com.alibaba.cloud.commons.lang.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,jclassId));// 根据分类查询模型视图对象
|
for (DockingPreViewModel dockingPreViewModel : dockingPreViewModelList) {
|
jviewmodelMap.put(dockingPreViewModel.getViewName(),dockingPreViewModel);
|
}
|
|
for (DockingClassifyViewVO viewInfo : list) {
|
String viewName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
|
String impactList = viewInfo.getImpactList() == null ? "" : viewInfo.getImpactList().get(0)==null||viewInfo.getImpactList().get(0).size()==0?"":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 -> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(s.getEnglishName())).collect(Collectors.toMap(s -> s.getEnglishName(), t -> t));
|
|
for (DockingClassifyMetaAttrVO dockingClassifyMetaAttrVO : metaList) {
|
String chineseName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingClassifyMetaAttrVO.getChineseName())?"":dockingClassifyMetaAttrVO.getChineseName();// 属性名称
|
String englishName = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingClassifyMetaAttrVO.getEnglishName())?"":dockingClassifyMetaAttrVO.getEnglishName();// 英文名称
|
String defaultValue = com.alibaba.cloud.commons.lang.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 = com.alibaba.cloud.commons.lang.StringUtils.isBlank(dockingPreMetaAttr.getOid())?"":dockingPreMetaAttr.getOid();// 当前oid
|
List<DockingClassifyMetaAttrVO> childMetaList = new ArrayList<>();
|
childMetaList.add(compositeMeta);
|
getMetaAttrObject(childMetaList, jclassId,jviewModelObject, pid,allDockingPreMetaAttrList);
|
}else{
|
allDockingPreMetaAttrList.add(dockingPreMetaAttr);
|
}
|
|
}
|
|
} 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 = com.alibaba.cloud.commons.lang.StringUtils.isBlank(metaAttrObject.getOid())?"":metaAttrObject.getOid();// 属性的oid
|
|
String jchinesename = com.alibaba.cloud.commons.lang.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));// 根据分类查询模型视图对象
|
log.info("获取属性美剧 属性id------->"+metaAttrOid);
|
//rangeMap= jmetaattrList.stream().collect(Collectors.toMap(s ->StringUtils.isNotBlank(s.getNumText())?"":s.getNumText(), t -> t));
|
rangeMap=jmetaattrList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getNumText())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getNumText(), t -> t));
|
|
for (String rangeKey : range.keySet()) {
|
DockingPreAttrRange rangeObject = new DockingPreAttrRange();
|
String keyValue = com.alibaba.cloud.commons.lang.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);
|
}
|
}
|
|
/**
|
* 组织数据
|
* @param optationtype
|
* @param codeWupins
|
* @param addDockingPreApplyFormMap
|
* @param editDockingPreApplyFormMap
|
* @param codeWupinMap
|
* @return
|
* @throws VciBaseException
|
*/
|
private DockingGroupDataVO queryApplycodeDataObjects(int optationtype,List<BaseModel> codeWupins,Map<String,DockingPreApplyForm> addDockingPreApplyFormMap,Map<String,DockingPreApplyForm> editDockingPreApplyFormMap,Map<String,BaseModel> codeWupinMap) throws VciBaseException{
|
try {
|
// TODO:主数据推送过来的数据是拿不到可以申请集团码的用户信息的,并且这一块儿的逻辑也还没敲定,所以这儿采用配置的用户来申请集团码
|
String curUserName = Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount();
|
//申请的数据
|
List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
|
for (BaseModel dataBusinessObject : codeWupins) {
|
String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
|
//String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid".toUpperCase(Locale.ROOT),"");
|
Map<String,String> dataMap=new CaseInsensitiveMap<>(dataBusinessObject.getData());
|
String codeclsfid=dataMap.getOrDefault("codeclsfid","");
|
String btmName = dataBusinessObject.getBtmname();
|
String oid = dataBusinessObject.getOid();
|
DockingPreApplyForm dockingPreApplyForm = new DockingPreApplyForm();
|
|
// String dataOid = dataBusinessObject.getOid();
|
// Map<String, String> conditionsMap = new HashMap<String, String>();
|
// List<DockingPreApplyForm> applyFormObjects = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().eq(DockingPreApplyForm::getDataOid, dataOid).eq(DockingPreApplyForm::getOperationType, optationtype));
|
// DockingPreApplyForm dockingPreApplyForm=new DockingPreApplyForm();
|
String applyCode = "";
|
/*if (!CollectionUtils.isEmpty(applyFormObjects)) {
|
dockingPreApplyForm = applyFormObjects.get(0);
|
applyCode = dockingPreApplyForm.getId();
|
editDockingPreApplyFormMap.put(applyCode, dockingPreApplyForm);//申请单和申请单对象关系
|
} else {*/
|
applyCode = dockingApplyUnitCode + "-" + format;
|
dockingPreApplyForm.setId(applyCode);
|
dockingPreApplyForm.setName("");
|
dockingPreApplyForm.setOperationType(optationtype+"");
|
dockingPreApplyForm.setDescription(dataBusinessObject.getId());//获取数据描述信息
|
dockingPreApplyForm.setDataOid(oid);
|
dockingPreApplyForm.setDataBtmName(btmName);
|
addDockingPreApplyFormMap.put(applyCode, dockingPreApplyForm);//申请单和申请单对象关系
|
// }
|
|
//申请单和对应数据关系
|
codeWupinMap.put(applyCode, dataBusinessObject);
|
// conditionsMap = new HashMap<String, String>();
|
// conditionsMap.put("jtargetclsfid", codeclsfid);//视图oid
|
|
List<DockingPreAttrMapping> dockingPreAttrMappingList = dockingPreAttrMappingMapper.selectList(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid));
|
if (CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
|
throw new Exception("根据所选的数据,没有找到对应的集团分类设置,请核对!");
|
}
|
String jsourceclsfid = dockingPreAttrMappingList.get(0).getSourceClassifyId();
|
//获取数据模型分类信息
|
DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid);
|
DockingMainData mainData = new DockingMainData();
|
mainData.setApplyEntId(dockingApplyUnitCode);//申请单位代码
|
mainData.setApplyId(applyCode);//申请单号
|
mainData.setClassName(dockingPreClassify.getNodeLinkName());//分类名称
|
mainData.setCreateBy(curUserName);//
|
if(optationtype==2) {
|
String groucode=dataBusinessObject.getData().getOrDefault("GROUPCODE","");
|
dockingPreApplyForm.setGroupCode(groucode);
|
mainData.setCustomCoding(groucode);
|
}
|
//密级,默认为内部
|
mainData.setSecretLevel("内部");
|
//获取视图模型
|
mainData.setViewInfos(getviewInfos(optationtype,dockingPreClassify, dataBusinessObject));
|
mainDataList.add(mainData);
|
}
|
//根据数据模型,组织所需要数据
|
DockingGroupDataVO postParameters = new DockingGroupDataVO();
|
//系统标识
|
postParameters.setSysName(dockingApplySysName);
|
postParameters.setMainData(mainDataList);//
|
return postParameters;
|
} catch (Throwable e) {
|
// TODO Auto-generated catch block
|
throw new VciBaseException("查询数据出错,原因:"+e.getMessage());
|
}
|
}
|
|
/**
|
* 获取模型视图
|
* @param dockingPreClassify
|
* @param dataBusinessObject
|
* @throws VciBaseException
|
*/
|
private List<DockingViewVO>getviewInfos(int type, DockingPreClassify dockingPreClassify, BaseModel dataBusinessObject) throws Throwable{
|
List<DockingViewVO> viewInfoList=new ArrayList<>();
|
String jclassOid= dockingPreClassify.getOid();
|
List<DockingPreViewModel> dockingPreViewModels=new ArrayList<>();
|
if(type==1) {
|
//根据分类查询模型视图对象
|
dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid).eq(DockingPreViewModel::getViewName,"编码视图"));
|
}else{
|
//根据分类查询模型视图对象
|
dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid));
|
}
|
for (DockingPreViewModel dockingPreViewModel : dockingPreViewModels) {
|
//组织数据属性信息
|
DockingViewVO viewInfo=new DockingViewVO();
|
viewInfo.setViewName(dockingPreViewModel.getViewName());//视图名称
|
viewInfo.setViewValue(getViewValueList(dockingPreViewModel,jclassOid,dataBusinessObject));//视图
|
viewInfoList.add(viewInfo);
|
}
|
return viewInfoList;
|
}
|
|
/***
|
* 获取配置信息
|
* @param dockingPreViewModel
|
* @param jclassOid
|
* @param dataBusinessObject
|
* @return
|
* @throws VciBaseException
|
*/
|
private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModel dataBusinessObject) throws Throwable{
|
//构造模型视图数据
|
List<Map<String, Object>> viewValueList=new ArrayList<Map<String,Object>>();
|
String oid = dockingPreViewModel.getOid();
|
Map<String,String> dataValueMap=new CaseInsensitiveMap<>(dataBusinessObject.getData());
|
String codeClassifyId=dataValueMap.get("codeclsfid");
|
Map<String,String>conditionsMap=new HashMap<String, String>();
|
List<DockingPreAttrMapping> dockingPreAttrMappingList = dockingPreAttrMappingMapper.selectList(Wrappers.<DockingPreAttrMapping>query().lambda()
|
.eq(DockingPreAttrMapping::getSourceClassifyId, jclassOid).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
|
if(CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
|
return viewValueList;
|
}
|
|
Map<String,DockingPreAttrMapping> jintegmappconfigMap=new HashMap<String, DockingPreAttrMapping>();
|
for (DockingPreAttrMapping businessObject : dockingPreAttrMappingList) {
|
jintegmappconfigMap.put(businessObject.getSourceAttrKey(), businessObject);
|
}
|
List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(
|
Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,dockingPreViewModel.getOid())
|
.eq(DockingPreMetaAttr::getSourceClassifyId,dockingPreViewModel.getSourceClassifyId()));
|
|
Map<String,Object> viewValueMap=new HashMap<String,Object>();
|
for (DockingPreMetaAttr dockingPreMetaAttr : dockingPreMetaAttrList) {
|
String jenglishname=dockingPreMetaAttr.getEnglishName();////集团配置属性
|
if(jintegmappconfigMap.containsKey(jenglishname)){
|
DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname);
|
// String attrId = dockingPreAttrMapping.getTargetAttrId();//编码属性id
|
String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//编码属性id
|
Object newVaue=null;
|
if(StringUtils.isNotBlank(jtargetattrkey)){
|
getAttrRange(dockingPreMetaAttr);//获取字段取值范围
|
String value="";
|
if(jtargetattrkey.toLowerCase(Locale.ROOT).equals("name")){
|
value=dataBusinessObject.getName();
|
}else if(jtargetattrkey.toLowerCase(Locale.ROOT).equals("id")){
|
value=dataBusinessObject.getId();
|
}else if(jtargetattrkey.toLowerCase(Locale.ROOT).equals("description")){
|
value=dataBusinessObject.getDescription();
|
}else{
|
value=dataValueMap.get(jtargetattrkey)==null?"":dataValueMap.getOrDefault(jtargetattrkey,"");
|
}
|
newVaue = getVaue(dockingPreMetaAttr, value);
|
}else{
|
newVaue = getVaue(dockingPreMetaAttr, "");
|
}
|
if(newVaue==null || "".equals(newVaue)){
|
newVaue= dockingPreMetaAttr.getDefaultValue();
|
}
|
//newVaue= Func.isNotEmpty(newVaue)?newVaue:"";
|
viewValueMap.put(jenglishname, newVaue);
|
}
|
}
|
|
viewValueList.add(viewValueMap);
|
return viewValueList;
|
}
|
|
/***
|
* 获取属性枚举映射配置
|
*/
|
Map<String,Map<String, DockingPreAttrRange>> attrRangeMap=new HashMap<String, Map<String,DockingPreAttrRange>>();
|
|
private void getAttrRange(DockingPreMetaAttr jmetaatter) throws Throwable{
|
|
String jmetalistoid = jmetaatter.getOid();
|
if(attrRangeMap.containsKey(jmetalistoid)) {
|
return;
|
}
|
// Map<String,String>conditionsMap=new HashMap<String, String>();
|
// conditionsMap.put("jmetalistid", jmetalistoid);//视图oid
|
List<DockingPreAttrRange> dockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, jmetalistoid));
|
if (CollectionUtils.isEmpty(dockingPreAttrRangeList)) {
|
return;
|
}
|
Map<String, DockingPreAttrRange> rangeMap = new HashMap<String, DockingPreAttrRange>();
|
// TODO: 这儿存内部存储值,无法在后续进行转换
|
rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getTargetNumText(), t -> t, (o1, o2) -> o2));
|
attrRangeMap.put(jmetalistoid, rangeMap);
|
|
}
|
|
/****
|
* 值类型转换
|
* @param jmetaatter
|
* @param value
|
* @return
|
* @throws Throwable
|
*/
|
private Object getVaue(DockingPreMetaAttr jmetaatter,String value) throws Throwable{
|
//jmetadatatype 元数据类型(1 字符型, 2 整型, 3 长整型, 4 单精度, 5 双精度,6 日期型, 7 时间型, 8 布尔型, 9 文件, 10复合型)
|
int jmetadatatype = jmetaatter.getMetaDataType();
|
String jmetalistoid = jmetaatter.getOid();
|
Map<String, DockingPreAttrRange> rangeMap=new HashMap<String, DockingPreAttrRange>();
|
if(attrRangeMap.containsKey(jmetalistoid)){
|
rangeMap = attrRangeMap.get(jmetalistoid);
|
if(rangeMap.containsKey(value)){
|
DockingPreAttrRange dockingPreAttrRange = rangeMap.get(value);
|
value=dockingPreAttrRange.getNumText();//将编码属性域值转换成集团对应的域值
|
}
|
}
|
|
if(jmetadatatype==1){//1 字符型
|
return StringUtils.isBlank(value)?"":value;
|
}else if(jmetadatatype==2){//2 整型
|
return StringUtils.isBlank(value)?null:Integer.parseInt(value);
|
}else if(jmetadatatype==3){//3 长整型
|
return StringUtils.isBlank(value)?null:Long.parseLong(value);
|
}else if(jmetadatatype==4){//4 单精度,
|
return StringUtils.isBlank(value)?null:Float.parseFloat(value);
|
}else if(jmetadatatype==5){// 5 双精度
|
return StringUtils.isBlank(value)?null:Double.parseDouble(value);
|
}else if(jmetadatatype==6){//6 日期型
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
|
if(StringUtils.isBlank(value)) {
|
return null;
|
}else {
|
try {
|
return simpleDateFormat.format(simpleDateFormat.parse(value));
|
} catch (ParseException e) {
|
throw new VciBaseException("date", new String[]{"日期格式转换错误"});
|
}
|
}
|
}else if(jmetadatatype==7){//7 时间型
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
|
if(StringUtils.isBlank(value)) {
|
return null;
|
}else{
|
try {
|
return simpleDateFormat.format(simpleDateFormat.parse(value));
|
} catch (ParseException e) {
|
throw new VciBaseException("date", new String[]{"日期格式转换错误"});
|
}
|
}
|
}else if(jmetadatatype==8){//8 布尔型
|
return value;
|
}else if(jmetadatatype==9){//9 文件,
|
return value;
|
}else if(jmetadatatype==10){//10复合型
|
return value;//符合型是什么东东如何处理
|
}
|
return value;
|
}
|
|
private String getCodeState(String formState){
|
String msg="";
|
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)){
|
msg="审核结束,赋码成功";
|
}else if("6".equals(formState)){
|
msg="待301赋码";
|
}else if("7".equals(formState)){
|
msg="已赋码";
|
}else if("8".equals(formState)){
|
msg="已赋码(沿用)";
|
}else if("9".equals(formState)){
|
msg="审核中";
|
}
|
return msg;
|
}
|
|
}
|