ludc
2023-09-19 8381325223bee254168855b1b697db31fc591b9e
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/GroupMdmInterServiceImpl.java
@@ -9,6 +9,8 @@
import com.vci.ubcs.code.applyjtcodeservice.entity.*;
import com.vci.ubcs.code.applyjtcodeservice.service.IGroupMdmInterService;
import com.vci.ubcs.code.applyjtcodeservice.vo.*;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.code.applyjtcodeservice.feign.MdmApplyGroupCodeProvider;
import com.vci.ubcs.code.applyjtcodeservice.mapper.DockingPreAttrMappingMapper;
@@ -41,8 +43,10 @@
   private String code="";
   private String msg="";
   @Value("${docking.apply.partCoe:10}")
   public String partCoe;
   @Value("${docking.apply.userFlag:false}")
   public boolean usedFlag;
   @Value("${docking.apply.unitCode:41000}")
   public String dockingApplyUnitCode;
@@ -101,111 +105,118 @@
   @Transactional(rollbackFor = VciBaseException.class)
   @Override
   public R applyGroupCode(String oids, String btmName) throws VciBaseException {
      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>();
            //组织数据
            dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
            DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveAddApply(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(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>();
               //组织数据
               dockingGroupDataVO = queryApplycodeDataObjects(1, dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelMap);
               DockingResultVO resultDataObject = mdmApplyGroupCodeProvider.receiveAddApply(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);
                     //需要修改的申请单数据
                     if (editDockingPreApplyFormMap.containsKey(applyId)) {
                        DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
                        dockingPreApplyForm.setCode(code2);
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setGroupCode(customCoding);
                        ObjectMapper mp = new ObjectMapper();
                        String writeValueAsString = null;
                        try {
                           writeValueAsString = mp.writeValueAsString(dataObject);
                           dockingPreApplyForm.setContent(writeValueAsString);
                        } catch (JsonProcessingException e) {
                        }
                     }
                     //新增的申请单数据
                     if (addDockingPreApplyFormMap.containsKey(applyId)) {
                        DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
                        dockingPreApplyForm.setCode(code2);
                        dockingPreApplyForm.setMsg("申请:" + msg);
                        dockingPreApplyForm.setGroupCode(customCoding);
                        ObjectMapper mp = new ObjectMapper();
                        String writeValueAsString = null;
                        try {
                           writeValueAsString = mp.writeValueAsString(dataObject);
                           dockingPreApplyForm.setContent(writeValueAsString);
                        } catch (JsonProcessingException e) {
                        }
                     }
                     //如果有集团码则更新数据
                     if (isEditDatas) {
                        if (baseModelMap.containsKey(applyId)) {
                           BaseModel baseModel = baseModelMap.get(applyId);
                           String classOid=baseModel.getData().getOrDefault("CODECLSFID","");
                           if(partCoe.equals(classOid)){
                              baseModel.setId(10+customCoding);
                           }
                           BeanUtilForVCI.copyDeclaredIgnoreCase(baseModel, baseModel);
                           DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                           DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                           baseModel.getData().getOrDefault("groupCode", customCoding);
                           updateCbos.add(baseModel);//更新数据集团code
                        }
                     }
                  });
               } else {
                  editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                     dockingPreApplyForm.setCode("2");
                     dockingPreApplyForm.setMsg("申请:" + msg);
                     dockingPreApplyForm.setGroupCode(customCoding);
                     ObjectMapper mp = new ObjectMapper();
                     String writeValueAsString = null;
                     try {
                        writeValueAsString = mp.writeValueAsString(dataObject);
                        dockingPreApplyForm.setContent(writeValueAsString);
                     } catch (JsonProcessingException e) {
                     }
                  }
                  //新增的申请单数据
                  if (addDockingPreApplyFormMap.containsKey(applyId)) {
                     DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
                     dockingPreApplyForm.setCode(code2);
                     dockingPreApplyForm.setContent("");
                     dockingPreApplyForm.setGroupCode("");
                     DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
                  });
                  addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                     dockingPreApplyForm.setCode("2");
                     dockingPreApplyForm.setMsg("申请:" + msg);
                     dockingPreApplyForm.setGroupCode(customCoding);
                     ObjectMapper mp = new ObjectMapper();
                     String writeValueAsString = null;
                     try {
                        writeValueAsString = mp.writeValueAsString(dataObject);
                        dockingPreApplyForm.setContent(writeValueAsString);
                     } catch (JsonProcessingException e) {
                     }
                  }
                  //如果有集团码则更新数据
                  if (isEditDatas) {
                     if (baseModelMap.containsKey(applyId)) {
                        BaseModel baseModel = baseModelMap.get(applyId);
                        BeanUtilForVCI.copyDeclaredIgnoreCase(baseModel, baseModel);
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                        //baseModel.setId(customCoding);
                        baseModel.getData().getOrDefault("groupCode",customCoding);
                        updateCbos.add(baseModel);//更新数据集团code
                     }
                  }
               });
            } else {
               editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                  dockingPreApplyForm.setCode("2");
                  dockingPreApplyForm.setMsg("申请:" + msg);
                  dockingPreApplyForm.setContent("");
                  dockingPreApplyForm.setGroupCode("");
                  DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
               });
               addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
                  dockingPreApplyForm.setCode("2");
                  dockingPreApplyForm.setMsg("申请:" + msg);
                  dockingPreApplyForm.setContent("");
                  dockingPreApplyForm.setGroupCode("");
                  DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
               });
                     dockingPreApplyForm.setContent("");
                     dockingPreApplyForm.setGroupCode("");
                     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 (editDockingPreApplyFormMap.size() > 0) {
               dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//添加申请单数据
            }
            if (addDockingPreApplyFormMap.size() > 0) {
               dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//需要修改的申请单数据
            }
            //保存表单数据
            dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
            mdmEngineClient.updateBatchByType(btmName,updateCbos);//保存数据
            return R.success("申请接口调用成功");
         } catch (VciBaseException e) {
            return R.fail("申请接口调用失败" + e);
         }
         return R.success("申请接口调用成功");
      }catch (VciBaseException e){
         return R.fail("申请接口调用失败"+e);
      }else{
         return R.fail("申请接口开关已关闭,不申请集团码");
      }
   }
   /***
    * 主数据像集团更改编码
    * @param oids 需要修改的数据主键数组
@@ -216,10 +227,14 @@
   @Transactional(rollbackFor = VciBaseException.class)
   @Override
   public R receiveEditApply(String oids, String btmName) throws VciBaseException {
      List<BaseModel> updateCbos=new ArrayList<BaseModel>();
      List<DockingPreApplyForm> dockingPreAttrMappings=new ArrayList<>();
      VciBaseUtil.alertNotNull(oids,"选择的数据");
      VciBaseUtil.alertNotNull(btmName,"业务类型");
      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 {
@@ -281,9 +296,13 @@
                     if (baseModelMap.containsKey(applyId)) {
                        BaseModel baseModel = baseModelMap.get(applyId);
                        //BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
                        String classOid=baseModel.getData().getOrDefault("CODECLSFID","");
                        if(partCoe.equals(classOid)){
                           baseModel.setId(10+customCoding);
                        }
                        DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
                     //   baseModel.setId(customCoding);
                        baseModel.getData().getOrDefault("groupCode",customCoding);
                        //   baseModel.setId(customCoding);
                        baseModel.getData().put("groupCode", customCoding);
                        updateCbos.add(baseModel);//更新数据集团code
                     }
                  }
@@ -312,11 +331,11 @@
            }
            //保存表单数据
            dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
            mdmEngineClient.updateBatchByType(btmName,updateCbos);//保存数据
            mdmEngineClient.updateBatchBtypeDatas(btmName, updateCbos);//保存数据
         }
         return R.success("申请接口调用成功");
      }catch (VciBaseException e){
         return R.fail("申请接口调用失败"+e.getMessage());
         return R.success("更新接口调用成功");
      } catch (VciBaseException e) {
         return R.fail("更新接口调用失败" + e.getMessage());
      }
   }
@@ -330,6 +349,10 @@
   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 = "参数:集团分类主键,为空!";
@@ -354,19 +377,19 @@
               log.info(message);
               throw new Throwable(message);
            }
         }else{
            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);
      } catch (Throwable e) {
         e.printStackTrace();
         log.error("获取数据模型详细信息失败" + e);
         return R.fail(message);
      }finally {
         log.info("获取集团模型详细信息执行保存end");
      }
      log.info("获取集团模型详细信息执行保存end");
      return R.success(message);
   }
   /***
@@ -378,6 +401,10 @@
   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 + "为空,请查看配置!";
@@ -461,7 +488,10 @@
    */
   @Override
   public R queryApplyState(String dataOids) throws VciBaseException {
      if(usedFlag){
         log.info("查询申请单状态接口开关已关闭");
         return R.fail("查询申请单状态接口开关已关闭");
      }
      String message="执行成功!";
      log.info("查询申请单状态接口statr");
      try {
@@ -524,6 +554,10 @@
    */
   @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")){