Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -618,6 +618,8 @@ this.attrRef.queryNotIn += (item.id + ",") }); this.attrRef.data = []; this.$refs.attrRef.selectClear(); this.attrRef.selectData = []; this.closeAttrDialog(); }, // 取消属性池勾选 Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue
@@ -660,6 +660,8 @@ }); this.attrRef.queryNotIn += (item.id + ",") }); this.$refs.attrRef.selectClear(); this.attrRef.selectData = []; this.attrRef.data = []; this.closeAttrDialog(); }, Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/entity/DockingPreAttrMapping.java
@@ -35,18 +35,21 @@ */ @ApiModelProperty(value = "源系统的属性oid") private String metaListId; /** * 源分类id */ @ApiModelProperty(value = "源系统的分类oid") @TableField(value = "sourceClsfId") private String sourceClassifyId; /** * 源分类名称 */ @ApiModelProperty(value = "源系统的分类名称") @TableField(value = "sourceClsfName") private String sourceClassifyName; /** * 源属性oid */ @@ -90,22 +93,23 @@ @ApiModelProperty(value = "源系统属性名称") private String sourceAttrName; /*** * 视图名称 */ @ApiModelProperty(value = "模型视图名称") private String viewModelName; /*** * 视图名称 */ @ApiModelProperty(value = "模型视图名称") private String viewName; /*** * 目标属性名称 */ @ApiModelProperty(value = "目标属性名称") @TableField(value = "targetClsfName") private String targetClassifyName; } Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/entity/DockingPreMetaAttr.java
@@ -19,11 +19,13 @@ */ @ApiModelProperty(value = "中文名称") private String chineseName; /*** * 英文名称 */ @ApiModelProperty(value = "集团分类主键") private String englishName; /*** * 属性字段类型 */ @@ -38,6 +40,7 @@ */ @ApiModelProperty(value = "取值范围") private String range; /*** * 父属性 */ @@ -50,12 +53,14 @@ @ApiModelProperty(value = "集团分类主键") @TableField(value = "sourceClsfId") private String sourceClassifyId; /** * 视图模型id */ @ApiModelProperty(value = "视图模型主键") @TableField(value = "viewModeId") private String viewModelId; /*** * 默认值 */ Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java
@@ -1,7 +1,5 @@ package com.vci.ubcs.code.applyjtcodeservice.feign; import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException; import com.vci.ubcs.code.applyjtcodeservice.vo.DockingClassifyModelAttrVO; import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO; import com.vci.ubcs.code.applyjtcodeservice.vo.DockingReturnStoreVO; @@ -63,7 +61,7 @@ * @return 返回存储是否成功信息 */ @PostMapping(RETURNGROUPCODE) public R getApplyGroupCode( @RequestBody DockingReturnStoreVO dockingResultVO); public R getApplyGroupCode(@RequestBody DockingReturnStoreVO dockingResultVO); /*** * 主数据模型视图发布 Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/vo/DockingReturnStoreVO.java
@@ -8,10 +8,12 @@ * @date 2023-5-26 */ public class DockingReturnStoreVO { /** * 分类id */ private String classId; /** * 源系统名称 */ @@ -45,6 +47,5 @@ public void setMainData(List<MainData> mainData) { this.mainData = mainData; } } Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/vo/MainData.java
@@ -4,43 +4,68 @@ public class MainData { /** * 申请单号 */ private String applyId; /** * 申请单状态(1 集团审核中,2集团审核中, 3 集团审核中,4 审核结束,赋码失败,5审核结束,赋码成功 6:待301赋码 7:已赋码 8:已赋码(沿用)9:审核中) */ private String formState; /** * 主数据编码 */ private String customCoding; /** * 审查意见 */ private String examineOpinion; /** * 申请单中编码视图信息 */ private List<DockingViewVO> viewInfos; public String getApplyId() { return applyId; } public void setApplyId(String applyId) { this.applyId = applyId; } public String getFormState() { return formState; } public void setFormState(String formState) { this.formState = formState; } public String getCustomCoding() { return customCoding; } public void setCustomCoding(String customCoding) { this.customCoding = customCoding; } public String getExamineOpinion() { return examineOpinion; } public void setExamineOpinion(String examineOpinion) { this.examineOpinion = examineOpinion; } public List<DockingViewVO> getViewInfos() { return viewInfos; } public void setViewInfos(List<DockingViewVO> viewInfos) { this.viewInfos = viewInfos; } @@ -54,4 +79,5 @@ ", viewInfos=" + viewInfos + '}'; } } Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java
@@ -5,116 +5,152 @@ /** * 隶属单位代码 */ private String company_code; private String company_code; /** * 隶属单位名称/所属公司 */ private String company_name; private String company_name; /** * 部门编码 */ private String department_code; /** * 部门名称 */ private String department_name; /** * 部门类型 1=普通部门,2=决策部门 */ private String department_type; /** * 上级部门编码 所屋上级部门,引用部门主数据,集团命名“上级部门代码 */ private String parent_department_code; private String parent_department_code; /** * 上级部门名称 */ private String parent_department_name; private String parent_department_name; /** * 部门负责人 */ private String department_head; private String department_head; /*** * 负责人编码 */ private String department_head_code; /*** * 电话 */ private String telephone_number; /*** * 排序号 */ private String sort_order; private String sort_order; /** *启用状态 1=未启用,2=已启用,3e已停用 */ private int enable_datus; private int enable_status; /** * 部门层级 */ private String department_level; /*** * 是香虚拟部门 */ private String is_virtual; /*** * 部门状态,有效、作度 */ private String department_status; private String department_status; /*** * 部门显示状态,显示、不显示 */ private String diplay_status; private String display_status; /*** * 部门ID路径 */ private String id_route; /*** *部门名称路径 */ private String name_route; /*** *节点类型,当前新加节点的类别,部门,企业(法人单位),默认 */ private String node_type; /*** * 部门原编码,记录该部门的原有编码,作为换号时的对解 */ private String onginal_code; private String original_code; /** * 创建者 */ private String creator; /*** * 创建时间 */ private String createtime; /*** * 修改者 */ private String modifier; /** * 修改时间 */ private String modifytime; private String mdm_parentcode; private int mdm_workflow_status; private String mdm_datastatus; private String mdm_cleanstatus; private String link_fieldvalue; private String floy_middatastatus; private String originalcode; private String flow_middatastatus; private String pk_mdm; private String mdm_duplicate; private String mdm_code; private String mdm_version; private String original_nane; private String original_name; private String ts; /*** *0:正常,1数据被删除,默认为0; */ private int dr; private String dr_ndm_code; public String getCompany_code() { @@ -205,12 +241,12 @@ this.sort_order = sort_order; } public int getEnable_datus() { return enable_datus; public int getEnable_status() { return enable_status; } public void setEnable_datus(int enable_datus) { this.enable_datus = enable_datus; public void setEnable_status(int enable_status) { this.enable_status = enable_status; } public String getDepartment_level() { @@ -237,12 +273,12 @@ this.department_status = department_status; } public String getDiplay_status() { return diplay_status; public String getDisplay_status() { return display_status; } public void setDiplay_status(String diplay_status) { this.diplay_status = diplay_status; public void setDisplay_status(String display_status) { this.display_status = display_status; } public String getId_route() { @@ -269,12 +305,12 @@ this.node_type = node_type; } public String getOnginal_code() { return onginal_code; public String getOriginal_code() { return original_code; } public void setOnginal_code(String onginal_code) { this.onginal_code = onginal_code; public void setOriginal_code(String original_code) { this.original_code = original_code; } public String getCreator() { @@ -349,20 +385,12 @@ this.link_fieldvalue = link_fieldvalue; } public String getFloy_middatastatus() { return floy_middatastatus; public String getFlow_middatastatus() { return flow_middatastatus; } public void setFloy_middatastatus(String floy_middatastatus) { this.floy_middatastatus = floy_middatastatus; } public String getOriginalcode() { return originalcode; } public void setOriginalcode(String originalcode) { this.originalcode = originalcode; public void setFlow_middatastatus(String flow_middatastatus) { this.flow_middatastatus = flow_middatastatus; } public String getPk_mdm() { @@ -397,12 +425,12 @@ this.mdm_version = mdm_version; } public String getOriginal_nane() { return original_nane; public String getOriginal_name() { return original_name; } public void setOriginal_nane(String original_nane) { this.original_nane = original_nane; public void setOriginal_name(String original_name) { this.original_name = original_name; } public String getTs() { @@ -443,15 +471,14 @@ ", department_head_code='" + department_head_code + '\'' + ", telephone_number='" + telephone_number + '\'' + ", sort_order='" + sort_order + '\'' + ", enable_datus=" + enable_datus + ", enable_status=" + enable_status + ", department_level='" + department_level + '\'' + ", is_virtual='" + is_virtual + '\'' + ", department_status='" + department_status + '\'' + ", diplay_status='" + diplay_status + '\'' + ", display_status='" + display_status + '\'' + ", id_route='" + id_route + '\'' + ", name_route='" + name_route + '\'' + ", node_type='" + node_type + '\'' + ", onginal_code='" + onginal_code + '\'' + ", creator='" + creator + '\'' + ", createtime='" + createtime + '\'' + ", modifier='" + modifier + '\'' + @@ -461,13 +488,13 @@ ", mdm_datastatus='" + mdm_datastatus + '\'' + ", mdm_cleanstatus='" + mdm_cleanstatus + '\'' + ", link_fieldvalue='" + link_fieldvalue + '\'' + ", floy_middatastatus='" + floy_middatastatus + '\'' + ", originalcode='" + originalcode + '\'' + ", flow_middatastatus='" + flow_middatastatus + '\'' + ", original_code='" + original_code + '\'' + ", pk_mdm='" + pk_mdm + '\'' + ", mdm_duplicate='" + mdm_duplicate + '\'' + ", mdm_code='" + mdm_code + '\'' + ", mdm_version='" + mdm_version + '\'' + ", original_nane='" + original_nane + '\'' + ", original_name='" + original_name + '\'' + ", ts='" + ts + '\'' + ", dr=" + dr + ", dr_ndm_code='" + dr_ndm_code + '\'' + Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonDataVO.java
@@ -2,8 +2,6 @@ import lombok.Data; import java.util.List; /** * @author ludc * @date 2024/3/20 16:39 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java
@@ -1,6 +1,7 @@ package com.vci.ubcs.code.vo.webserviceModel.person; public class PersonMasterData { /*** * 数据在此系统中唯一标识 */ @@ -15,51 +16,62 @@ * 集团员工编号 */ private String group_code; /*** * 员工姓名 */ private String name; /** * 主数据编码 */ private String mdm_code; /*** *0:正常,1数据被删除,默认为0; */ private int dr; /*** * 行政区域化 */ private String admin_division; /*** * 行政区域化号码 */ private String admin_division_code; /** * 出生日期(yyyy-MM-dd) */ private String birthday; /** * 出生地 */ private String birthplace; /*** * 籍贯 */ private String cittizenship; private String citizenship; /** * 国家/地区 */ private String country; /*** * 部门 */ private String dept_type; /*** * 部门名称 */ private String deptName; private String dept_name; /*** * 学历 */ @@ -69,37 +81,42 @@ * 任职单位编码 */ private String employer_code; /*** * 用工形式 */ private String employment_form; /** * 身份证编号 */ private String id_number; /*** * 证件类型 */ private String id_type; /*** * 是否主职 */ private String is_keyposion; /** * 婚姻状况 */ private String marital_status; /** * 手机号码 */ private String mobile_phone; /*** * 名族 * 民族 */ private String nationality; /** * 办公电话 */ @@ -114,6 +131,7 @@ *上级门编码 */ private String parent_dept_code; /*** *上级门名称 */ @@ -123,6 +141,7 @@ *政治面貌 */ private String politiccountenance; /*** * 岗位 */ @@ -132,10 +151,16 @@ * 职称 */ private String work_title; /*** * 人员类别 */ private String worker_category; /** * 人员类别编码 */ private String worker_category_code; /*** * 职务 @@ -153,6 +178,31 @@ private String worker_level; /*** * 职级编码 */ private String worker_level_code; /** * 国密等级编码 */ private String country_level_code; /** * 国密等级名称 */ private String country_level_name; /** * 商密等级编码 */ private String business_level_code; /** * 商密等级名称 */ private String business_level_name; /*** * 人员密级 */ private String worker_security_level; @@ -161,44 +211,62 @@ * 流程状态 */ private int mdm_workflow; /*** * 修改者 */ private String modifier; /*** * 修改时间 */ private String modifytime; /*** * 创建者 */ private String creator; /*** * 创建时间 */ private String createtime; /** * 数据状态 */ private int mdm_datastatus; private String link_fieldvalue; private String flow_middatastatus; private String employer; private int mdm_duplicate; private EnumerableData gender_entity; private EnumerableData employment_type_entity; private String gerder; private String gender; private String employment_type; private String employment_type_nane; private String mdm_cleanstatus; private String mdm_parentcode; private String mdm_yersion; private String dr_mdm_code; private String pk_mdm; private String gender_name; private String ts; public String getId() { @@ -281,12 +349,36 @@ this.birthplace = birthplace; } public String getCittizenship() { return cittizenship; public String getCitizenship() { return citizenship; } public void setCittizenship(String cittizenship) { this.cittizenship = cittizenship; public void setCitizenship(String citizenship) { this.citizenship = citizenship; } public String getWorker_category_code() { return worker_category_code; } public String getWorker_level_code() { return worker_level_code; } public String getCountry_level_code() { return country_level_code; } public String getCountry_level_name() { return country_level_name; } public String getBusiness_level_code() { return business_level_code; } public String getBusiness_level_name() { return business_level_name; } public String getCountry() { @@ -297,6 +389,30 @@ this.country = country; } public void setWorker_category_code(String worker_category_code) { this.worker_category_code = worker_category_code; } public void setWorker_level_code(String worker_level_code) { this.worker_level_code = worker_level_code; } public void setCountry_level_code(String country_level_code) { this.country_level_code = country_level_code; } public void setCountry_level_name(String country_level_name) { this.country_level_name = country_level_name; } public void setBusiness_level_code(String business_level_code) { this.business_level_code = business_level_code; } public void setBusiness_level_name(String business_level_name) { this.business_level_name = business_level_name; } public String getDept_type() { return dept_type; } @@ -305,12 +421,12 @@ this.dept_type = dept_type; } public String getDeptName() { return deptName; public String getDept_name() { return dept_name; } public void setDeptName(String deptName) { this.deptName = deptName; public void setDept_name(String dept_name) { this.dept_name = dept_name; } public String getEducation() { @@ -577,12 +693,12 @@ this.employment_type_entity = employment_type_entity; } public String getGerder() { return gerder; public String getGender() { return gender; } public void setGerder(String gerder) { this.gerder = gerder; public void setGender(String gender) { this.gender = gender; } public String getEmployment_type() { @@ -670,10 +786,10 @@ ", admin_division_code='" + admin_division_code + '\'' + ", birthday='" + birthday + '\'' + ", birthplace='" + birthplace + '\'' + ", cittizenship='" + cittizenship + '\'' + ", citizenship='" + citizenship + '\'' + ", country='" + country + '\'' + ", dept_type='" + dept_type + '\'' + ", deptName='" + deptName + '\'' + ", dept_name='" + dept_name + '\'' + ", education='" + education + '\'' + ", employer_code='" + employer_code + '\'' + ", employment_form='" + employment_form + '\'' + @@ -707,7 +823,7 @@ ", mdm_duplicate=" + mdm_duplicate + ", gender_entity=" + gender_entity + ", employment_type_entity=" + employment_type_entity + ", gerder='" + gerder + '\'' + ", gender='" + gender + '\'' + ", employment_type='" + employment_type + '\'' + ", employment_type_nane='" + employment_type_nane + '\'' + ", mdm_cleanstatus='" + mdm_cleanstatus + '\'' + @@ -719,4 +835,5 @@ ", ts='" + ts + '\'' + '}'; } } Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -118,8 +118,9 @@ public static <T extends BaseModel> T updateDefaultAttrAssimt(T object) throws VciBaseException { BaseModel baseModel = object; try { baseModel.setLastModifyTime(new Date()); baseModel.setTs(new Date()); Date date = new Date(); baseModel.setLastModifyTime(date); baseModel.setTs(date); // 用户id // String userId = AuthUtil.getUserId().toString(); // 要求改成账号 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java
@@ -1,6 +1,5 @@ package com.vci.ubcs.code.applyjtcodeservice.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.vci.ubcs.code.applyjtcodeservice.service.*; Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -1,6 +1,7 @@ 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; @@ -12,12 +13,14 @@ 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; @@ -38,8 +41,8 @@ @Slf4j public class MdmInterJtClient implements IMdmInterJtClient { @Value("${docking.apply.partCoe:10}") public String partCoe; @Value("${docking.apply.partCode:10}") public String partCode; /** * 集团申请单服务 @@ -78,6 +81,8 @@ @Autowired(required = false) private IMdmEngineClient mdmEngineClient; private final SaveLogUtil saveLogUtil; /*** * 申请集团编码 @@ -119,9 +124,6 @@ } } /* * 主数据业务服务 */ /** * 获取集团集团码,赋值到主数据 * @param dockingReturnStoreVO @@ -133,7 +135,6 @@ log.info("获取集团集团码,赋值到主数据 start"); try { Map<String,List<BaseModel>> editObjectMap = new HashMap<>(); List<DockingPreApplyForm> dockingPreApplyFormList = new ArrayList(); //String classId = javaObject.getClassId(); //String sysName = javaObject.getSysName(); @@ -170,6 +171,8 @@ } 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); @@ -182,6 +185,7 @@ DockingPreApplyForm dockingPreApplyForm = oldDockingPreApplyFormList.get(0); dockingPreApplyForm.setMsg(msg); dockingPreApplyForm.setCode("1"); dockingPreApplyForm.setLastModifyTime(new Date()); if (res) { dockingPreApplyForm.setGroupCode(customCoding); } @@ -220,9 +224,11 @@ if(!CollectionUtils.isEmpty(dockingPreApplyFormList)){ dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList); } saveLogUtil.operateLog("申请单结果返回",false, JSON.toJSONString(dockingReturnStoreVO.getMainData())); }catch (Throwable e){ e.printStackTrace(); return R.fail("集团码集成赋值失败,原因:"+e.getMessage()); saveLogUtil.operateLog("申请单结果返回",true,"错误信息:"+e.getMessage()+"\n"+ JSON.toJSONString(dockingReturnStoreVO.getMainData())); return R.fail("集团码集成赋值失败,原因:"+e.getMessage()); } log.info("获取集团集团码,赋值到主数据 end"); return R.success("集团码赋值成功"); @@ -307,14 +313,13 @@ * @param jclassObject * @throws Throwable */ private void getVilewMode(@NotNull DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list) 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); // 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); Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/mapper/DockingPreMetaAttrMapper.java
@@ -3,5 +3,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreMetaAttr; public interface DockingPreMetaAttrMapper extends BaseMapper<DockingPreMetaAttr> { public interface DockingPreMetaAttrMapper extends BaseMapper<DockingPreMetaAttr> { } Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreMetaAttrService.java
@@ -14,17 +14,18 @@ */ public interface IDockingPreMetaAttrService extends IService<DockingPreMetaAttr> { /*** * 构造器查询方式 * @param wrapper 查询封装器 * @return */ public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper); /*** * 根据viewModel查询模型视图属性 * @param viewModelId * @return */ List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId); } Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -43,6 +43,7 @@ */ @Autowired(required = false) private DockingPreAttrMappingMapper dockingPreAttrMappingMapper; /*** * 主数据分类服务 */ @@ -60,18 +61,17 @@ */ @Autowired(required = false) private IDockingPreMetaAttrService dockingPreMetaAttrService; /*** * 属性取值范围服务 */ @Autowired(required = false) private IDockingPreAttrRangeService dockingPreAttrRangeService; /*** * 集团分类视图模型服务 */ @Autowired(required = false) private IDockingPreViewModelService dockingPreViewModelService; /*** @@ -235,7 +235,6 @@ public R search(DokingAttributeSerchVO dokingAttributeSerchVO) { return null; } /*** * 对象转换 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreMetaAttrServiceImpl.java
@@ -38,7 +38,7 @@ */ @Override public List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId) { log.info("根据模型视图oid"+viewModelId+"查询数据 star"); log.info("根据模型视图oid"+viewModelId+"查询数据 start"); List<DockingPreMetaAttr> dockingPreMetaAttrList= selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,viewModelId)); List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList= DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList); log.info("根据模型视图oid"+viewModelId+"查询数据 end"); Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/GroupMdmInterServiceImpl.java
@@ -6,14 +6,10 @@ 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.service.IGroupMdmInterService; import com.vci.ubcs.code.applyjtcodeservice.vo.*; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO; import com.vci.ubcs.code.vo.webserviceModel.apply.ApplyDataVO; import com.vci.ubcs.code.vo.webserviceModel.apply.InterParameterVO; 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; @@ -23,6 +19,7 @@ import com.vci.ubcs.starter.web.util.VciBaseUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; @@ -50,7 +47,7 @@ private String msg=""; @Value("${docking.apply.partCode:101}") public String partCoe; public String partCode; @Value("${docking.apply.usedFlag:false}") public boolean usedFlag; @@ -61,6 +58,9 @@ @Value("${docking.apply.sysName:410-MDM}") public String dockingApplySysName; @Value("${docking.apply.personUserAccount:28201728}") public String applyCodeUserAccount; @Autowired(required = false) private MdmApplyGroupCodeProvider mdmApplyGroupCodeProvider; @@ -68,36 +68,37 @@ * 集团分类服务 */ @Autowired(required = false) private com.vci.ubcs.code.applyjtcodeservice.service.IDockingPreClassifyService dockingPreClassifyService; private IDockingPreClassifyService dockingPreClassifyService; /*** * 申请单服务 */ @Autowired(required = false) private com.vci.ubcs.code.applyjtcodeservice.service.IDockingPreApplyFormService dockingPreApplyFormService; private IDockingPreApplyFormService dockingPreApplyFormService; /*** * 模型视图单服务 */ @Autowired(required = false) private com.vci.ubcs.code.applyjtcodeservice.service.IDockingPreViewModelService dockingPreViewModelService; private IDockingPreViewModelService dockingPreViewModelService; /*** * 集团分类属性属性映射配置服务 */ @Autowired(required = false) private DockingPreAttrMappingMapper dockingPreAttrMappingMapper; /*** * 属性取值范围服务 */ @Autowired(required = false) private com.vci.ubcs.code.applyjtcodeservice.service.IDockingPreAttrRangeService dockingPreAttrRangeService; private IDockingPreAttrRangeService dockingPreAttrRangeService; /*** * 集团属性服务 */ @Autowired(required = false) private com.vci.ubcs.code.applyjtcodeservice.service.IDockingPreMetaAttrService dockingPreMetaAttrService; private IDockingPreMetaAttrService dockingPreMetaAttrService; @Autowired(required = false) private IMdmEngineClient mdmEngineClient; @@ -109,8 +110,8 @@ * @return 返回结果信息 * @throws Exception */ @Transactional(rollbackFor = VciBaseException.class) @Override @Transactional(rollbackFor = Exception.class) public R applyGroupCode(String oids, String btmName) throws VciBaseException { if(usedFlag) { try { @@ -141,10 +142,12 @@ 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(resultDataObject.getCode())) {//结果正确的情况 if("1".equals(code)) { //结果正确的情况 List<DockingDataVO> dataObjectVOList = resultDataObject.getData(); res=true; dataObjectVOList.stream().forEach(dataObject -> { @@ -153,7 +156,7 @@ DockingMainDataVO data2 = dataObject.getData(); String applyId = data2.getApplyId();//申请单id BaseModel baseModel = baseModelMap.get(applyId); String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//集团码段 String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding(); msg = dataObject.getMsg(); if (code2.equals("1")) {//结果正确的情况 if (!"".equals(customCoding)) { @@ -164,7 +167,7 @@ if (editDockingPreApplyFormMap.containsKey(applyId)) { DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId); dockingPreApplyForm.setCode(code2); //dockingPreApplyForm.setDescription(baseModel.getId()); dockingPreApplyForm.setDescription(baseModel.getId()); dockingPreApplyForm.setMsg("申请:" + msg); if(StringUtils.isBlank(dockingPreApplyForm.getGroupCode())) { dockingPreApplyForm.setGroupCode(customCoding); @@ -180,8 +183,13 @@ writeValueAsString = mp.writeValueAsString(dataObject); dockingPreApplyForm.setContent(writeValueAsString); } catch (JsonProcessingException e) { throw new ServiceException("修改申请单数据时转换出错,原因"+e.getMessage()); } DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm); 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)) { @@ -196,22 +204,33 @@ writeValueAsString = mp.writeValueAsString(dataObject); dockingPreApplyForm.setContent(writeValueAsString); } catch (JsonProcessingException e) { throw new ServiceException("新增申请单数据时数据转换出错,原因"+e.getMessage()); } DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM); 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()); //Map<String,String> dataValueMap=new CaseInsensitiveMap<>(baseModel.getData()); /*String classOid=baseModel.getId(); if(partCoe.equals(classOid)){ if(partCode.equals(classOid)){ baseModel.setId(10+customCoding); customCoding=10+customCoding; }*/ BeanUtilForVCI.copyDeclaredIgnoreCase(baseModel, baseModel); DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel); // DefaultAttrAssimtUtil.updateDefaultAttrAssimt(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 } @@ -219,19 +238,32 @@ }); } else { res=false; Date date = new Date(); editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> { dockingPreApplyForm.setCode("2"); dockingPreApplyForm.setMsg("申请:" + msg); dockingPreApplyForm.setContent(""); dockingPreApplyForm.setGroupCode(""); DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm); 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(""); DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM); 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) { @@ -249,7 +281,7 @@ } return R.success("申请接口调用成功"); } catch (VciBaseException e) { return R.fail("申请接口调用失败" + e); return R.fail("申请接口调用失败" + e.getMessage()); } }else{ return R.fail("申请接口开关已关闭,不申请集团码"); @@ -263,8 +295,8 @@ * @return 返回结果信息 * @throws Throwable */ @Transactional(rollbackFor = VciBaseException.class) @Override @Transactional(rollbackFor = Exception.class) public R receiveEditApply(String oids, String btmName) throws VciBaseException { if(!usedFlag) { log.info("更新接口功能已关闭!->"+usedFlag); @@ -322,7 +354,11 @@ dockingPreApplyForm.setContent(writeValueAsString); } catch (JsonProcessingException e) { } DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm); 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)) { @@ -339,7 +375,14 @@ dockingPreApplyForm.setContent(writeValueAsString); } catch (JsonProcessingException e) { } DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM); 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) { @@ -347,30 +390,44 @@ BaseModel baseModel = baseModelMap.get(applyId); //BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel); /*String classOid=baseModel.getData().getOrDefault("CODECLSFID",""); if(partCoe.equals(classOid)){ if(partCode.equals(classOid)){ baseModel.setId(10+customCoding); }*/ DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel); // baseModel.setId(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 { Date date = new Date(); editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> { dockingPreApplyForm.setCode("2"); dockingPreApplyForm.setMsg("修改:" + msg); dockingPreApplyForm.setContent(""); dockingPreApplyForm.setGroupCode(""); DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm); 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(""); DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM); 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) { @@ -503,7 +560,7 @@ dockingPreClassify.setVersionValue(version); dockingPreClassifyList.add(dockingPreClassify); }); boolean res= dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyList); boolean res = dockingPreClassifyService.saveOrUpdateBatch(dockingPreClassifyList); if(res){ R.success(message); }else{ @@ -558,6 +615,11 @@ 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){ @@ -591,7 +653,7 @@ e.printStackTrace(); //message=""+e; log.error("获取申请单状态失败"+e); throw new VciBaseException(e.getMessage()); throw new VciBaseException(e.getMessage()); } log.info("查询申请单状态接口end"); return R.success(message); @@ -613,7 +675,7 @@ VciBaseUtil.alertNotNull(operationType,"集成操作类型"); try { if(operationType.equals("all")){ return queryMdmModel(); return queryMdmModel(); }else{ VciBaseUtil.alertNotNull(classifyId,"集团分类主键"); return queryClassModel(classifyId); @@ -861,10 +923,18 @@ /** * 组织数据 * */ private DockingGroupDataVO queryApplycodeDataObjects(int optationtype,List<BaseModel> codeWupins,Map<String,DockingPreApplyForm> addDockingPreApplyFormMap,Map<String,DockingPreApplyForm> editDockingPreApplyFormMap,Map<String,BaseModel> codeWupinMap) throws VciBaseException{ * @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 { String curUserName =AuthUtil.getUser().getUserName(); // TODO:主数据推送过来的数据是拿不到可以申请集团码的用户信息的,并且这一块儿的逻辑也还没敲定,所以这儿采用配置的用户来申请集团码 String curUserName = Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount(); //申请的数据 List<DockingMainData> mainDataList=new ArrayList<DockingMainData>(); for (BaseModel dataBusinessObject : codeWupins) { @@ -876,29 +946,30 @@ 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 apllyCode = ""; // 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); apllyCode = dockingPreApplyForm.getId(); editDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系 applyCode = dockingPreApplyForm.getId(); editDockingPreApplyFormMap.put(applyCode, dockingPreApplyForm);//申请单和申请单对象关系 } else {*/ apllyCode = dockingApplyUnitCode + "-" + format; dockingPreApplyForm.setId(apllyCode); applyCode = dockingApplyUnitCode + "-" + format; dockingPreApplyForm.setId(applyCode); dockingPreApplyForm.setName(""); dockingPreApplyForm.setOperationType(optationtype+""); dockingPreApplyForm.setDescription(dataBusinessObject.getId());//获取数据描述信息 dockingPreApplyForm.setDataOid(oid); dockingPreApplyForm.setDataBtmName(btmName); addDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//申请单和申请单对象关系 // } addDockingPreApplyFormMap.put(applyCode, dockingPreApplyForm);//申请单和申请单对象关系 // } codeWupinMap.put(apllyCode, dataBusinessObject);//申请单和对应数据关系 conditionsMap = new HashMap<String, String>(); conditionsMap.put("jtargetclsfid", codeclsfid);//视图oid //申请单和对应数据关系 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)) { @@ -909,7 +980,7 @@ DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid); DockingMainData mainData = new DockingMainData(); mainData.setApplyEntId(dockingApplyUnitCode);//申请单位代码 mainData.setApplyId(apllyCode);//申请单号 mainData.setApplyId(applyCode);//申请单号 mainData.setClassName(dockingPreClassify.getNodeLinkName());//分类名称 mainData.setCreateBy(curUserName);// if(optationtype==2) { @@ -917,18 +988,21 @@ dockingPreApplyForm.setGroupCode(groucode); mainData.setCustomCoding(groucode); } mainData.setSecretLevel("内部");//密级,默认为内部 mainData.setViewInfos(getviewInfos(optationtype,dockingPreClassify, dataBusinessObject));//获取视图模型 //密级,默认为内部 mainData.setSecretLevel("内部"); //获取视图模型 mainData.setViewInfos(getviewInfos(optationtype,dockingPreClassify, dataBusinessObject)); mainDataList.add(mainData); } //根据数据模型,组织所需要数据 DockingGroupDataVO postParameters=new DockingGroupDataVO(); postParameters.setSysName(dockingApplySysName);//系统标识 DockingGroupDataVO postParameters = new DockingGroupDataVO(); //系统标识 postParameters.setSysName(dockingApplySysName); postParameters.setMainData(mainDataList);// return postParameters; } catch (Throwable e) { // TODO Auto-generated catch block throw new VciBaseException("查询数据出错"+e); throw new VciBaseException("查询数据出错,原因:"+e.getMessage()); } } @@ -993,7 +1067,7 @@ String jenglishname=dockingPreMetaAttr.getEnglishName();////集团配置属性 if(jintegmappconfigMap.containsKey(jenglishname)){ DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname); String attrId = dockingPreAttrMapping.getTargetAttrId();//编码属性id // String attrId = dockingPreAttrMapping.getTargetAttrId();//编码属性id String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//编码属性id Object newVaue=null; if(StringUtils.isNotBlank(jtargetattrkey)){ @@ -1012,7 +1086,7 @@ }else{ newVaue = getVaue(dockingPreMetaAttr, ""); } if(newVaue==null||"".equals(newVaue)){ if(newVaue==null || "".equals(newVaue)){ newVaue= dockingPreMetaAttr.getDefaultValue(); } //newVaue= Func.isNotEmpty(newVaue)?newVaue:""; @@ -1035,14 +1109,15 @@ if(attrRangeMap.containsKey(jmetalistoid)) { return; } Map<String,String>conditionsMap=new HashMap<String, String>(); conditionsMap.put("jmetalistid", jmetalistoid);//视图oid // 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>(); rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getNumTextValue(), t -> t, (o1, o2) -> o2)); // TODO: 这儿存内部存储值,无法在后续进行转换 rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getTargetNumText(), t -> t, (o1, o2) -> o2)); attrRangeMap.put(jmetalistoid, rangeMap); } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/Scheduling/DockingDataSyncScheduling.java
@@ -23,7 +23,7 @@ @Slf4j public class DockingDataSyncScheduling { // private Logger logger = LoggerFactory.getLogger(getClass()); // private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private ICodeDuckingSyncService codeDuckingSyncServiceI; @@ -44,7 +44,9 @@ FINISH_INIT = "true"; } //默认每分钟执行方法 /** * 默认每分钟执行方法 */ @Scheduled(cron = "${dataSyncPush.cronTime:0 0/10 * * * ?}") public void scheduled() { log.info("执行主数据集成数据推送 start:"); @@ -57,4 +59,5 @@ } log.info("执行主数据集成数据推送 end: "+ "开关是否开启:" +DATA_SYNC_PUSH_ISSTARE); } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java
@@ -1,7 +1,6 @@ package com.vci.ubcs.code.controller; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.shaded.com.google.gson.JsonObject; import com.vci.ubcs.code.service.UniversalInterfaceI; import com.vci.ubcs.code.vo.webserviceModel.person.*; import org.slf4j.Logger; Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -1,6 +1,5 @@ package com.vci.ubcs.code.controller; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -33,11 +32,9 @@ import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.rmi.ServerException; import java.util.*; @RestController //@AllArgsConstructor @RequestMapping("/mdmEngineController") @Api(value = "编码数据管理", tags = "编码数据管理") public class MdmEngineController { @@ -358,7 +355,7 @@ * @param baseModelDTO 数据传输对象 * @return 执行结果 */ @PostMapping("changeStatus") @PostMapping("/changeStatus") public R changeStatus(@RequestBody BaseModelDTO baseModelDTO) { engineService.changeStatus(baseModelDTO); return R.success("操作成功!"); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -68,6 +68,6 @@ Map<String,Object> getCurrentRevision(@Param("tableName")String tableName,@Param("nameoid") String nameoid); // Integer updateByTaleAndOid(@Param("tableName")String tableName, @Param("nameoid") String nameoid, @Param("lcStatus") String lcStatus); // Integer updateByTaleAndOid(@Param("tableName")String tableName, @Param("nameoid") String nameoid, @Param("lcStatus") String lcStatus); } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/UniversalInterfaceI.java
@@ -2,12 +2,9 @@ import com.vci.ubcs.code.vo.webserviceModel.person.OrgData; import com.vci.ubcs.code.vo.webserviceModel.person.PersonData; import com.vci.ubcs.code.vo.webserviceModel.person.ResultOrgData; import org.springframework.web.bind.annotation.RequestParam; import javax.jws.WebService; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Context; /** * 统一接口 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -2,6 +2,7 @@ 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.conditions.query.LambdaQueryWrapper; @@ -51,7 +52,6 @@ import com.vci.ubcs.starter.web.util.BeanUtilForVCI; import com.vci.ubcs.starter.web.util.VciBaseUtil; import com.vci.ubcs.starter.web.util.WebUtil; import com.xkcoding.http.support.Http; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.springblade.core.redis.cache.BladeRedis; @@ -66,7 +66,6 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.DefaultTransactionStatus; import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -81,6 +80,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK; import static com.vci.ubcs.code.constant.MdmDuckingConstant.*; import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST; import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC; @@ -123,7 +123,6 @@ @Value("${erp.item.tenant:10000}") private String ERPXHDHTENANT; /** * 业务类型的服务 @@ -185,8 +184,8 @@ @Autowired(required = false) private MdmSearchItemCodeProvider mdmSearchItemCodeProvider; @Autowired HttpServletRequest request; @Resource private ICodeAllCodeService codeAllCodeService; @Override public void DockingDataSyncScheduing() { @@ -283,7 +282,6 @@ } org.springblade.core.tool.utils.WebUtil.setRequest(new ServletRequestAttributes(request)); } return request; } @@ -311,20 +309,24 @@ lastchangedon=endDate; } searchItemParam.setLastchangedon(lastchangedon); searchItemParam.setStatus(itemStatus);// Map<String,String> searchDataMap = VciBaseUtil.objectToMapString(searchItemParam); searchItemParam.setIsenabled(""); searchItemParam.setStatus(itemStatus); //Map<String,String> searchDataMap = VciBaseUtil.objectToMapString(searchItemParam); try { paramString=JSONObject.toJSON(searchItemParam).toString(); String sendParamString=JSONObject.toJSON(searchItemParam).toString(); // TODO: 改为使用HttpUtils方式进行申请,因为现在申请用之前的方式会报错 LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); headers.add("Authorization",ERPXHDHAUTH); headers.add("X-ECC-Current-Tenant",ERPXHDHTENANT); headers.add("Accept-Language","zh-CHS"); headers.add("Content-Type",MediaType.APPLICATION_JSON.toString()); String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",paramString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON); String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",sendParamString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON); // String res= mdmSearchItemCodeProvider.getppModelByElem(searchItemParam); SearchItemVO searchItemVO = JSONObject.toJavaObject(JSONObject.parseObject(res), SearchItemVO.class); if (searchItemVO != null) { if(!"200".equals(searchItemVO.getStatus())){ throw new ServiceException(String.format("接口返回状态码为:%s,原因:%s",searchItemVO.getStatus(),searchItemVO.getMessage())); } BladeUser finalUser; paramString = JSONObject.toJSON(searchItemVO).toString(); log.info("型号代号数据值-------》"+paramString); @@ -948,7 +950,7 @@ /*** * 发送编码主数据 */ private void sendpushDataForService (List<DockingTask> dockingTaskS){ private void sendpushDataForService(List<DockingTask> dockingTaskS){ //每个task依次执行推送 for (DockingTask dockingTask:dockingTaskS){ //每个task一个事务,开启 @@ -969,9 +971,28 @@ List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes(); Map<String/**英文名称**/, String/**中文名称**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2)); Map<String, String> data = new HashMap<>(); if (r == null) { JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid); data = (Map) josni; // TODO: 回收编码的情况,会出现数据已经回收,但是事务还未执行的情况, // 导致取不到码值,所以这儿通过查询码值表中存储的已回收的业务数据信息,解析出来 if (!r.isSuccess() || Func.isEmpty(r.getData())) { List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getId, dockingTask.getId())); CodeAllCode codeAllCode = codeAllCodes.get(0); BaseModel baseModel = JSONObject.parseObject(codeAllCode.getBusinessData(), BaseModel.class); Map<String, Object> objectMap = VciBaseUtil.objectToMap(baseModel); for (Map.Entry<String,Object> entry : objectMap.entrySet()){ if(entry.getKey().equals("data") && Func.isNotEmpty(entry.getValue())){ Map<String, Object> dataMap = (Map<String,Object>)((JSONObject) entry.getValue()); for(Map.Entry<String,Object> dataEntry : dataMap.entrySet()){ String v = String.valueOf(dataEntry.getValue()); data.put(dataEntry.getKey().toLowerCase(Locale.ROOT), v == null ? "" : v); } }else{ String key = entry.getKey().toLowerCase(Locale.ROOT); String value = String.valueOf(entry.getValue()); data.put(key, value == null ? "" : value); } } /*JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid); data = (Map) josni;*/ } else { data = r.getData().get(0); } @@ -1001,8 +1022,10 @@ } if(isGroupCodeFlage){ code=data.getOrDefault("groupcode",""); if(StringUtils.isBlank(code)) {//如果是集团码,没有领取到集团码则任务不结束等待集团码申请后再通过定时器调用集团码段 if(StringUtils.isBlank(code)) { //如果是推送集团码,没有领取到集团码则任务不结束等待集团码申请后再通过定时器调用集团码段 dockingTask.setDescription("等待集团申请集团码"); // TODO:可能会出现未获取到集团码,但是又立马执行了回收,此时这条任务就永远无法结束,所以这儿判断只要是集团码为空,并且是回收的就关闭推送这条任务 dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_FALSE); dockingTask.setLastModifyTime(new Date()); dockingTaskService.updateById(dockingTask); @@ -1204,7 +1227,7 @@ /*** * 查询需要集成的业务数据任务 */ private void sendpushDataForService (){ private void sendpushDataForService(){ initSysadmin(); //查询哪些任务还没有执行完成 //VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class); @@ -1224,7 +1247,7 @@ */ private void sendpushClsfForService(){ initSysadmin(); /* //查询哪些任务还没有执行完成 /* //查询哪些任务还没有执行完成 VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class); queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE); queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -147,6 +147,7 @@ */ @Value("${bzApply.seriesFlow:seriesFlow}") private String seriesFlow; /*** * 是否变更系列 */ @@ -316,6 +317,12 @@ public static final String BTM_NAME = "btm:name"; /** * 配置的用来申请集团码的用户 */ @Value("${docking.apply.personUserAccount:28201728}") public String applyCodeUserAccount; /** * 密级的字段 */ public static final String SECRET_FILED = "secretgrade"; @@ -451,7 +458,7 @@ } R r = updateBatchByBaseModel(baseModelDTO.getBtmname(), baseModels); if (!r.isSuccess()) { throw new VciBaseException("更新数据出错,重试!" + r.getMsg()); throw new VciBaseException("更新数据出错,请重试!" + r.getMsg()); } } // 刚好顺序是一致的,所以直接按照codeallcode的顺序来拿业务数据 @@ -3468,19 +3475,19 @@ cbos.add(data); }); // List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage()); // List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage()); if (CollectionUtils.isEmpty(cbos)) { throw new VciBaseException("数据在系统中不存在,是否因为修改过业务类型?"); return R.fail("数据在系统中不存在,是否因为修改过业务类型?"); } // Map<String, String> data = new HashMap<>(); // Map<String, String> data = new HashMap<>(); Map<String, String> cbo = cbos.get(0); // WebUtil.copyValueToMapFromCbos(cbo, data); // WebUtil.copyValueToMapFromCbos(cbo, data); List<Map<String, String>> dataList = new ArrayList<>(); dataList.add(cbo); wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true); R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo)); if(templateVO.getAttributes().isEmpty()){ throw new ServiceException(String.format("主键为:{}的模板下,模板属性配置为空!",templateVO.getOid())); return R.fail(String.format("主键为:%s的模板下,模板属性配置为空!",templateVO.getOid())); } //处理返回数据与模板数据配置的字段不一样问题 templateVO.getAttributes().stream().forEach(e -> { @@ -3493,42 +3500,42 @@ }); //我们要看是否不是升版的,升版的话,需要对比不相等的属性 /* String copy = cbo.get("copyfromversion"); // if (StringUtils.isBlank(copy)) { // copy = cbo.getAttributeValue("copyfromversion"); // } if (StringUtils.isNotBlank(copy)) { //说明有变更的内容 /* String copy = cbo.get("copyfromversion"); // if (StringUtils.isBlank(copy)) { // copy = cbo.getAttributeValue("copyfromversion"); // } if (StringUtils.isNotBlank(copy)) { //说明有变更的内容 CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1)); //我们使用和业务类型的来查询 // List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); List<Map> oldCbos = commonsMapper.selectBySql(oldSqlBO.getSqlUnPage()); if (!CollectionUtils.isEmpty(oldCbos)) { // Map<String, String> newData = new HashMap<>(); // WebUtil.copyValueToMapFromCbos(cbo, newData); Map<String, String> oldData = new HashMap<>(); oldData = oldCbos.get(0); Map<String, String> difFieldMap = new HashMap<>(); Map<String, String> finalOldData = oldData; cbo.forEach((key, value) -> { // 这儿oldmap中的全是大写,而cbo中的全是小写所以会拿不到只,这儿直接处理成小写拿不到就用大写拿 String oldValue = String.valueOf(finalOldData.getOrDefault(key.toUpperCase(Locale.ROOT), finalOldData.getOrDefault(key, ""))); if (value == null || value == "null") { value = ""; } if (oldValue == null || oldValue == "null") { oldValue = ""; } if (!value.equalsIgnoreCase(oldValue)) { difFieldMap.put(key, oldValue); } }); List<Map<String, String>> difFieldList = new ArrayList<>(); difFieldList.add(difFieldMap); result.setData(difFieldList); } }*/ CodeTemplateAttrSqlBO oldSqlBO = getSqlByTemplateVO(btmId, templateVO, WebUtil.getOidQuery(copy), new PageHelper(-1)); //我们使用和业务类型的来查询 // List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage()); List<Map> oldCbos = commonsMapper.selectBySql(oldSqlBO.getSqlUnPage()); if (!CollectionUtils.isEmpty(oldCbos)) { // Map<String, String> newData = new HashMap<>(); // WebUtil.copyValueToMapFromCbos(cbo, newData); Map<String, String> oldData = new HashMap<>(); oldData = oldCbos.get(0); Map<String, String> difFieldMap = new HashMap<>(); Map<String, String> finalOldData = oldData; cbo.forEach((key, value) -> { // 这儿oldmap中的全是大写,而cbo中的全是小写所以会拿不到只,这儿直接处理成小写拿不到就用大写拿 String oldValue = String.valueOf(finalOldData.getOrDefault(key.toUpperCase(Locale.ROOT), finalOldData.getOrDefault(key, ""))); if (value == null || value == "null") { value = ""; } if (oldValue == null || oldValue == "null") { oldValue = ""; } if (!value.equalsIgnoreCase(oldValue)) { difFieldMap.put(key, oldValue); } }); List<Map<String, String>> difFieldList = new ArrayList<>(); difFieldList.add(difFieldMap); result.setData(difFieldList); } }*/ return result; } @@ -4399,8 +4406,8 @@ if (cboMap.containsKey(oid)) { CodeAllCode codeAllCode = cboMap.get(oid); codeAllCode.setId(baseModel.getId()); // codeAllCode.setLastModifier(AuthUtil.getUser().getUserName()); codeAllCode.setLastModifier(AuthUtil.getUser().getAccount()); // 主数据推送形式,是拿不到用户信息的 codeAllCode.setLastModifier(Func.isBlank(AuthUtil.getUserAccount()) ? applyCodeUserAccount:AuthUtil.getUserAccount()); codeAllCode.setLastModifyTime(new Date()); codeAllCode.setLcStatus(baseModel.getLcStatus()); newCodeAllCodeList.add(codeAllCode); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -2826,9 +2826,9 @@ List<CodeAllCode> codeAllCodeList = new ArrayList<>(); List<String> deleteList = new ArrayList<>(); CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); // CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid()); Map<String, ClientBusinessObject> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t)); // boolean finalIsProcess = isProcess; // boolean finalIsProcess = isProcess; orderDTOMap.keySet().stream().forEach(code -> { CodeOrderDTO orderDTO = orderDTOMap.get(code); ClientBusinessObject cbo = cboMap.get(code); @@ -2981,9 +2981,6 @@ //是否调用集团接口申请接口 if(isCodeOrGroupCode){ List<String> IdList=resultDataObjectDetailDOs.stream().filter(xMLResultDataObjectDetailDO-> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(xMLResultDataObjectDetailDO.getId())).map(XMLResultDataObjectDetailDO::getId).distinct().collect(Collectors.toList()); if(!CollectionUtils.isEmpty(IdList)) { this.sendApplyGroupcode(IdList, classifyFullInfo.getTopClassifyVO().getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue()); } @@ -5286,8 +5283,8 @@ * @param file * @return */ @Transactional(rollbackFor = VciBaseException.class) @Override @Transactional(rollbackFor = Exception.class) public String importGroupCode(String codeClassifyOid, File file) throws Throwable { VciBaseUtil.alertNotNull(codeClassifyOid,"分类的主键"); ReadExcelOption reo = new ReadExcelOption(); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -360,7 +360,7 @@ List<CodeBasicSecVO> attrSecVOList = new ArrayList<>(); for (int i = 0; i < secVOList.size(); i++) { CodeBasicSecVO secVO = secVOList.get(i); try { try{ switchSecValue(secVO, secValueMap, classifyFullInfoBO, serialSecVOList, attrSecVOList, serialUnitList, secValueList); }catch (Exception e){ throw new ServiceException("码值转换时出现错误,原因:"+e.getMessage()); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -69,10 +69,9 @@ import javax.servlet.http.HttpServletRequest; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import java.io.PrintWriter; import java.io.StringWriter; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.stream.Collectors; @@ -86,7 +85,7 @@ @Service @Slf4j @VciWebservice(path = "/universalInterface") public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI { public class UniversalInterfaceImpl implements UniversalInterfaceI { /*** * 操作类型 @@ -114,11 +113,13 @@ */ @Value("${bzApply.seriesFlow:seriesFlow}") private String seriesFlow; /*** * 是否变更系列 */ @Value("${bzApply.isEditSeries:isEditSeries}") private String isEditSeries; /*** * 控制是否写入值的码段名称 */ @@ -130,7 +131,6 @@ */ @Value("${bzApply.yearSecName:年代号}") private String yearSecName; @Value("${code.universalinterface.checkSystemConfig:true}") public boolean CODE_CHECKCONFIG; @@ -203,8 +203,14 @@ */ @Resource private IDockingLogeService dockingLogeService; @Resource private IPasswordFreeLoginService passwordFreeLoginService; /** * 自定义并发ForkJoinPool */ private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() - 1); private static String separator="##VCI##"; private String errorid="0"; @@ -290,17 +296,17 @@ throw new Throwable("用户鉴权失败."); } List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; //InterParameterVO finalInterParameterVO = interParameterVO; //这是账号信息 SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); sessionInfo.setUserName(userVo.getTrueName()); sessionInfo.setIp(userVo.getIp()); VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); // List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); //List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); String finalSystemId = systemId; classVOList.stream().forEach(classVO -> { log.info("参数:分类COde:" + classVO.getClassCode()); log.info("参数:分类Code:" + classVO.getClassCode()); boolean isCodeOrGroupCode=false; LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>(); String libray =""; @@ -451,7 +457,6 @@ */ @Override public ResultOrgData syncDataForPerson(PersonData personData) { boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); ResultOrgData resultOrgData=new ResultOrgData(); @@ -483,7 +488,7 @@ ClassfyVO classfyVO = new ClassfyVO(); classfyVO.setLibrary(personLibrary); classfyVO.setClassCode(personClassCode); CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,personLibrary); CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,personLibrary); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ @@ -501,8 +506,7 @@ ).collect(Collectors.toList()); List<PersonMasterData> personMasterDataList= personData.getMasterData(); List<Map> dataList=new ArrayList<>(); //List<Map> dataList=new ArrayList<>(); List<String> codeList=new ArrayList<>(); List<ApplyDataVO> applyDataVOList=new ArrayList<>(); @@ -521,7 +525,7 @@ */ fields.stream().forEach(field->{ if(dataMap.containsKey(field)){ String enumFiled= dataMap.get(field); String enumFiled = dataMap.get(field); EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class); String enumCode=enumerableData.getCode(); //String enumCodeValue=enumerableData.getName(); @@ -541,11 +545,11 @@ object.setProp(proppertyVOList); if(personMasterData.getDr()==1){ object.setOperate("delete");//操作类型 //操作类型 object.setOperate("delete"); deleteDataVOList.add(object); }else{ String worker_category=personMasterData.getWorker_category(); //String worker_category=personMasterData.getWorker_category(); object.setOperate("create"); applyDataVOList.add(object); } @@ -573,7 +577,7 @@ sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); sb.append(")"); List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); ApplyDatasVO applyDatasVO=new ApplyDatasVO(); ApplyDatasVO editDatasVO=new ApplyDatasVO(); @@ -618,7 +622,8 @@ throw new Throwable("编码规则"); } List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); dataObjectVO.getRowData().parallelStream().forEach(rowData->{ final List<RowDatas> rowDatas = dataObjectVO.getRowData(); rowDatas.parallelStream().forEach(rowData->{ String mesg=""; try { CodeOrderDTO orderDTO = new CodeOrderDTO(); @@ -681,16 +686,19 @@ resultDataObjectDetailDOs.addAll(xDOs); boolean finalSuccess1 = success.get(); String finalMessage1 = message; resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); resultMdMapping.setSuccess(finalSuccess1); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); resultMdMapping.setMessage(finalMessage1); resultMdMapping.setSubMdMappings(null); resultMdMappingList.add(resultMdMapping); }); // 限制线程并行数量 customForkJoinPool.submit(()->{ resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ ResultMdMapping resultMdMapping=new ResultMdMapping(); resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); resultMdMapping.setSuccess(finalSuccess1); resultMdMapping.setEntityCode(" "); resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); resultMdMapping.setMessage(finalMessage1); resultMdMapping.setSubMdMappings(null); resultMdMappingList.add(resultMdMapping); }); }).join(); log.info("end:申请获取完毕"); } }catch (Throwable e){ @@ -713,7 +721,7 @@ resultOrgData.setMessage(message); resultOrgData.setSuccess(success.get()); resultOrgData.setMdMappings(resultMdMappingList); Object object = JSONObject.toJSON(resultOrgData); //Object object = JSONObject.toJSON(resultOrgData); } String resultStr = JSONObject.toJSONString(resultOrgData); String data = JSONObject.toJSONString(personData); @@ -738,13 +746,13 @@ public ResultOrgData syncDataForOrg(OrgData orgData) { boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); ResultOrgData resultOrgData=new ResultOrgData(); boolean isPersonApplyGroupCode= personAndDeptConfig.isDeptApplyGroupCode(); // boolean isPersonApplyGroupCode= personAndDeptConfig.isDeptApplyGroupCode(); List<ResultMdMapping> resultMdMappingList=new ArrayList<>(); AtomicBoolean success= new AtomicBoolean(true); String message=""; String systemCode=""; if(isUsedFlag){ List<OrgMasterData> orgMasterDataList=new ArrayList<>(); List<OrgMasterData> orgMasterDataList = new ArrayList<>(); List<String> fields = Func.toStrList(personAndDeptConfig.getDeptFields()); try { if(orgData==null){ @@ -767,7 +775,7 @@ ClassfyVO classfyVO = new ClassfyVO(); classfyVO.setLibrary(deptLibrary); classfyVO.setClassCode(deptClassCode); CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,deptLibrary); CodeClassifyVO codeClassifyVO = this.getClassfy(classfyVO,deptLibrary); log.info("end:分类查询完毕"); //获取分类模板信息 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ @@ -783,7 +791,6 @@ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag())) ).collect(Collectors.toList()); List<Map> dataList=new ArrayList<>(); List<String> codeList=new ArrayList<>(); List<ApplyDataVO> applyDataVOList=new ArrayList<>(); List<ApplyDataVO> deleteDataVOList=new ArrayList<>(); @@ -792,10 +799,10 @@ object.setCode(orgMasterData.getMdm_code());//编码 object.setCreator(orgMasterData.getCreator());//创建者 object.setEditor(orgMasterData.getModifier());//修改者 object.setId(orgMasterData.getPk_mdm());//主键 object.setId(orgMasterData.getDepartment_code());//主键 object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断 Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData); List<ProppertyVO> proppertyVOList=new ArrayList<>(); List<ProppertyVO> proppertyVOList = new ArrayList<>(); /*** * 根据配置文件获取枚举值 */ @@ -824,7 +831,6 @@ object.setOperate("delete");//操作类型 deleteDataVOList.add(object); }else{ object.setOperate("create"); applyDataVOList.add(object); } @@ -840,10 +846,10 @@ throw new Throwable("根据业务类型未查询到业务类型对象!"); } String tableName = btmTypeVO.getTableName(); if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { if (StringUtils.isBlank(tableName)) { throw new Throwable("根据业务类型未查询到业务类型相关联的表"); } StringBuffer sb=new StringBuffer(); StringBuffer sb = new StringBuffer(); sb.append(" select * from "); sb.append(tableName); sb.append(" where 1=1 "); @@ -851,15 +857,16 @@ sb.append(" and id in ("); sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); sb.append(")"); List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); List<Map<String,String>> dataMapList = commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true); List<ClientBusinessObject> cboList = ChangeMapTOClientBusinessObjects(dataMapList); ApplyDatasVO applyDatasVO=new ApplyDatasVO(); ApplyDatasVO editDatasVO=new ApplyDatasVO(); if(!CollectionUtils.isEmpty(cboList)){ Map<String,ClientBusinessObject> oldpplyDataVOMap= cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); Map<String,ClientBusinessObject> oldpplyDataVOMap = cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); //数据库不存在的 List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { String code =cbo.getCode(); String code = cbo.getCode(); return !oldpplyDataVOMap.containsKey(code); }).collect(Collectors.toList()); applyDatasVO.setObject(applyApplyDataVOList); @@ -882,7 +889,7 @@ DataObjectVO dataObjectVO = new DataObjectVO(); this.getConfigDatas(systemCode, deptLibrary, editDatasVO, attrVOS, dataObjectVO); log.info("start:修改数据执行完毕"); boolean personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode(); boolean personApplyGroupCode = personAndDeptConfig.isPersonApplyGroupCode(); mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode); log.info("end:修改数据执行完毕"); } @@ -896,32 +903,34 @@ throw new Throwable("编码规则"); } List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); dataObjectVO.getRowData().parallelStream().forEach(rowData->{ String mesg=""; try { CodeOrderDTO orderDTO = new CodeOrderDTO(); List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 orderDTO.setTemplateOid(templateVO.getOid()); orderDTO.setCreator(rowData.getCreator()); orderDTO.setLastModifier(rowData.getEditor()); orderDTO.setLcStatus(rowData.getStatus()); if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//规则之定义为可变码段存储主数据传递过来的数据 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); CodeOrderSecDTO.setSecValue(rowData.getCode()); codeOrderSecDTOList.add(CodeOrderSecDTO); } }); } orderDTO.setCodeRuleOid(ruleVO.getOid()); orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 orderDTO.setData(rowData.getFiledValue()); String code=engineService.addSaveCodeNotauthUser(orderDTO,false); if(StringUtils.isNotBlank(code)) { //限制线程并行数量 customForkJoinPool.submit(()->{ dataObjectVO.getRowData().parallelStream().forEach(rowData->{ String mesg=""; try { CodeOrderDTO orderDTO = new CodeOrderDTO(); List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键 orderDTO.setTemplateOid(templateVO.getOid()); orderDTO.setCreator(rowData.getCreator()); orderDTO.setLastModifier(rowData.getEditor()); orderDTO.setLcStatus(rowData.getStatus()); if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { if (codeBasicSecVO.getSecType().equals("codevariablesec")) { //规则之定义为可变码段存储主数据传递过来的数据 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); CodeOrderSecDTO.setSecValue(rowData.getOid()); codeOrderSecDTOList.add(CodeOrderSecDTO); } }); } orderDTO.setCodeRuleOid(ruleVO.getOid()); orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码 orderDTO.setData(rowData.getFiledValue()); String code = engineService.addSaveCodeNotauthUser(orderDTO,false); /*if(StringUtils.isNotBlank(code)) { //rowData.setCode(code); StringBuffer sqlsb = new StringBuffer(); sqlsb.append(" select * from "); @@ -943,20 +952,21 @@ mesg = "数据保存成功,等待申请集团码"; } } }*/ } catch (Exception e) { mesg=e.getMessage(); e.printStackTrace(); throw new ServiceException(e.getMessage()); }finally { XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); x.setId(rowData.getOid()); x.setCode(rowData.getCode()); x.setMsg(mesg); x.setErrorid("1"); xDOs.add(x); } } catch (Exception e) { mesg=e.getMessage(); e.printStackTrace(); throw new ServiceException(e.getMessage()); }finally { XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); x.setId(rowData.getOid()); x.setCode(rowData.getCode()); x.setMsg(mesg); x.setErrorid("1"); xDOs.add(x); } }); }); }).join(); resultDataObjectDetailDOs.addAll(xDOs); boolean finalSuccess1 = success.get(); String finalMessage1 = message; @@ -1059,7 +1069,7 @@ throw new Throwable("用户鉴权失败"); } List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; //InterParameterVO finalInterParameterVO = interParameterVO; //这是账号信息 SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -1501,7 +1511,8 @@ sb.append(" and lastr=1 and lastv=1" ); sb.append(" and codeclsfid in (" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) +")"); sb.append(" and Lcstatus in (" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) +")"); List<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString()); List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString()); DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true); List<ClientBusinessObject> clientBusinessObjects= ChangeMapTOClientBusinessObjects(newDataList); List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>(); if(!CollectionUtils.isEmpty(clientBusinessObjects)){ @@ -2447,7 +2458,7 @@ */ public void getConfigDatas(String systemId,String libray, ApplyBZDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable { LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>(); // LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>(); //如果将数据转换成所需要的数据对象 Map<String, String> attrMapConfigMap=new HashMap<>(); Map<String, String> propMaps=new HashMap<>(); Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -2,7 +2,6 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vci.ubcs.code.mapper.CommonsMapper"> <select id="selectByCount" resultType="java.util.Map"> select COUNT(w.OID) count from ${tableName} w Source/UBCS/ubcs-service/ubcs-deploy/src/main/java/com/vci/ubcs/deploy/controller/DeployAppsController.java
@@ -4,24 +4,17 @@ import com.vci.ubcs.deploy.entity.DeployApps; import com.vci.ubcs.deploy.service.IDeployAppsService; import com.vci.ubcs.deploy.vo.DeployAppsVO; import com.vci.ubcs.starter.util.LocalFileUtil; import com.vci.ubcs.starter.web.util.ControllerUtil; import com.vci.ubcs.starter.web.util.LangBaseUtil; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.http.auth.AuthenticationException; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.ServletRequest; import java.io.File; import java.util.List; /** @@ -70,7 +63,7 @@ */ @PostMapping("/saveOrUpdateServiceInfo") public R saveOrUpdateDefault(@RequestBody DeployAppsVO deployAppsVO) throws ServiceException { return R.status(deployAppsService.saveOrUpdateServiceInfo(deployAppsVO)); return deployAppsService.saveOrUpdateServiceInfo(deployAppsVO); } /** Source/UBCS/ubcs-service/ubcs-deploy/src/main/java/com/vci/ubcs/deploy/service/IDeployAppsService.java
@@ -40,7 +40,7 @@ * @return * @throws ServiceException */ boolean saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException; R saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException; /** * 新增服务信息 Source/UBCS/ubcs-service/ubcs-deploy/src/main/java/com/vci/ubcs/deploy/service/impl/DeployAppsServiceImpl.java
@@ -202,8 +202,12 @@ * @throws ServiceException */ @Override public boolean saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException { return this.saveOrUpdate(deployAppsVO); public R saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException { boolean checkBoolean = checkCmdVer(deployAppsVO.getStartCmd()) && checkCmdVer(deployAppsVO.getStopCmd()) && checkCmdVer(deployAppsVO.getRestartCmd()); if(checkBoolean){ return R.fail("配置的命令中包含危险命令,如:rm、mv、rm -rf、chmod等命令和关键字! "); } return R.status(this.saveOrUpdate(deployAppsVO)); } /** @@ -349,6 +353,9 @@ if(Func.isEmpty(cmd)){ return "The executed command is empty"; } if(checkCmdVer(cmd)){ return "配置的命令中包含危险命令,如:rm、mv、rm -rf、chmod等命令和关键词! "; } // 执行Linux命令 log.info("开始执行命令:"+cmd); // Process process = Runtime.getRuntime().exec(cmd); @@ -429,4 +436,22 @@ return "8080"; } /** * 启动、停止、重启命令校验 * @param cmd * @return true: 包含高风险命令, false:不包含 */ private boolean checkCmdVer(String cmd){ if(Func.isEmpty(cmd)){ return false; } String[] highRiskCommands = {"rm", "rmdir", "mv", "unlink", "rm -rf", "mv -rf", "dd", "chmod", "chown", "mkfs", "shutdown", "reboot", "kill"}; for(String highRiskCmd : highRiskCommands){ if(cmd.contains(highRiskCmd)){ return true; } } return false; } } Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleServiceImpl.java
@@ -204,7 +204,7 @@ @Override public String getRoleIds(String tenantId, String roleNames) { List<Role> roleList = baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getTenantId, tenantId).in(Role::getRoleName, Func.toStrList(roleNames))); List<Role> roleList = baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getTenantId, tenantId).in(Role::getRoleAlias, Func.toStrList(roleNames))); if (roleList != null && roleList.size() > 0) { return roleList.stream().map(role -> Func.toStr(role.getId())).distinct().collect(Collectors.joining(",")); }