From ff5d803034d471b6d6acd63cd775cad80b4b69ac Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期六, 09 九月 2023 14:16:41 +0800
Subject: [PATCH] 人员组织结构申请接口开发
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 169 ++++++++++++++++++++++++++++++++++++------
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java | 29 ++++++
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/ResultOrgData.java | 8 +
3 files changed, 177 insertions(+), 29 deletions(-)
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/ResultOrgData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/ResultOrgData.java
index 3063b7f..dd3880a 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/ResultOrgData.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/ResultOrgData.java
@@ -1,5 +1,7 @@
package com.vci.ubcs.code.vo.webserviceModel.person;
+import java.util.List;
+
public class ResultOrgData {
/***
* 鏍囪瘑澶勭悊鎴愬姛鎴栧け璐�
@@ -12,7 +14,7 @@
/**
* 鍒嗗彂鐨勬墍鏈夋暟鎹殑淇℃伅
*/
- private ResultMdMapping mdMappings;
+ private List<ResultMdMapping> mdMappings;
public boolean isSuccess() {
return success;
@@ -30,11 +32,11 @@
this.message = message;
}
- public ResultMdMapping getMdMappings() {
+ public List<ResultMdMapping> getMdMappings() {
return mdMappings;
}
- public void setMdMappings(ResultMdMapping mdMappings) {
+ public void setMdMappings(List<ResultMdMapping> mdMappings) {
this.mdMappings = mdMappings;
}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index b54c7ba..fd19302 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -64,6 +64,7 @@
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
+import static com.vci.ubcs.code.constant.MdmEngineConstant.IMPORT_ROW_INDEX;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
/***
@@ -353,6 +354,7 @@
public ResultOrgData syncDataForPerson(PersonData personData) {
boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
ResultOrgData resultOrgData=new ResultOrgData();
+ List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
boolean success=true;
String message="";
if(isUsedFlag){
@@ -380,12 +382,17 @@
success=false;
throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�");
}
+
+ List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
+ ).collect(Collectors.toList());
+
List<PersonMasterData> personMasterDataList= personData.getMasterData();
List<Map> dataList=new ArrayList<>();
- ApplyDatasVO applyDatasVO=new ApplyDatasVO();
+ List<String> codeList=new ArrayList<>();
List<ApplyDataVO> applyDataVOList=new ArrayList<>();
+ List<ApplyDataVO> deleteDataVOList=new ArrayList<>();
personMasterDataList.stream().forEach(personMasterData -> {
ApplyDataVO object=new ApplyDataVO();
object.setCode(personMasterData.getLm_code());//缂栫爜
@@ -393,6 +400,7 @@
object.setEditor(personMasterData.getModifier());//淇敼鑰�
object.setId(personMasterData.getId());//涓婚敭
object.setStatus(CodeDefaultLC.RELEASED.getValue());//鐘舵�佸垯闇�瑕佸垽鏂�
+
Map<String,String> dataMap= VciBaseUtil.objectToMapString(personMasterData);
List<ProppertyVO> proppertyVOList=new ArrayList<>();
dataMap.forEach((key,vaule)->{
@@ -402,41 +410,154 @@
proppertyVOList.add(proppertyVO);
});
object.setProp(proppertyVOList);
- applyDataVOList.add(object);
+ if(personMasterData.getDr()==1){
+ object.setOperate("delete");//鎿嶄綔绫诲瀷
+ deleteDataVOList.add(object);
+ }else{
+ String worker_category=personMasterData.getWorker_category();
+ codeList.add(personMasterData.getLm_code());
+ object.setOperate("create");
+ applyDataVOList.add(object);
+ }
});
- applyDatasVO.setObject(applyDataVOList);
- DataObjectVO dataObjectVO = new DataObjectVO();
- List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
- ).collect(Collectors.toList());
- this.getConfigDatas("ERP", personLibrary, applyDatasVO, attrVOS, dataObjectVO);
- log.info("end锛氭暟鎹粍缁囧畬姣�");
- //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
- CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
- if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
- success=false;
- log.info("classifyFullInfo:"+"鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�");
- }
- CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
- if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
- success=false;
- throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旇鍒�");
- }
- log.info("end锛氳鍒欒幏鍙栧畬姣�");
+ R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
+ if(!r.isSuccess()) {
+ throw new Throwable(r.getMsg());
+ }
+ BtmTypeVO btmTypeVO = r.getData();
+ if (btmTypeVO == null) {
+ throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�");
+ }
+ String tableName = btmTypeVO.getTableName();
+ if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) {
+ throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�");
+ }
+ StringBuffer sb=new StringBuffer();
+ sb.append(" select * from ");
+ sb.append(tableName);
+ sb.append(" where 1=1 ");
+ sb.append(" and lastr=1 and lastv=1" );
+ 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);
+ 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));
+ //鏁版嵁搴撲笉瀛樺湪鐨�
+ List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> {
+ String code =cbo.getCode();
+ return !oldpplyDataVOMap.containsKey(code);
+ }).collect(Collectors.toList());
+ applyDatasVO.setObject(applyApplyDataVOList);
+ //鏁版嵁搴撳瓨鍦ㄧ殑
+ List<ApplyDataVO> editApplyDataVOList = applyDataVOList.stream().filter(cbo -> {
+ String code =cbo.getCode();
+ if(oldpplyDataVOMap.containsKey(code)){
+ cbo.setOperate("update");
+ }
+ return oldpplyDataVOMap.containsKey(code);
+ }).collect(Collectors.toList());
+ editApplyDataVOList.addAll(deleteDataVOList);
+ editDatasVO.setObject(editApplyDataVOList);
+ }else{
+ applyDatasVO.setObject(applyDataVOList);
+ }
+
+ LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
+ if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){
+ DataObjectVO dataObjectVO = new DataObjectVO();
+ this.getConfigDatas("ERP", personLibrary, editDatasVO, attrVOS, dataObjectVO);
+ log.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�");
+ boolean personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode();
+ mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode);
+ log.info("end锛氫慨鏀规暟鎹墽琛屽畬姣�");
+ }
+ if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) {
+ DataObjectVO dataObjectVO = new DataObjectVO();
+ this.getConfigDatas("ERP", personLibrary, editDatasVO, attrVOS, dataObjectVO);
+
+ CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
+ CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+ if(ruleVO==null||"".equals(ruleVO.getOid())){
+ 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());//鍒嗙被涓婚敭
+ 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.setSecDTOList(codeOrderSecDTOList);//瀛樺偍缂栫爜
+ orderDTO.setData(rowData.getFiledValue());
+ engineService.addSaveCode(orderDTO);
+ } catch (Exception e) {
+ mesg=e.getMessage();
+ e.getMessage();
+ e.printStackTrace();
+ }finally {
+ XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
+ x.setId(rowData.getOid());
+ x.setCode(rowData.getCode());
+ x.setMsg(mesg);
+ x.setErrorid("1");
+ xDOs.add(x);
+ }
+ });
+ resultDataObjectDetailDOs.addAll(xDOs);
+ boolean finalSuccess1 = success;
+ 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);
+ });
+ log.info("end锛氱敵璇疯幏鍙栧畬姣�");
+ }
}catch (Throwable e){
success=false;
message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage();
- }finally {
//缁勭粐杩斿洖缁撴灉
+ boolean finalSuccess = success;
+ String finalMessage = message;
masterDataList.stream().forEach(masterData -> {
ResultMdMapping resultMdMapping=new ResultMdMapping();
resultMdMapping.setBusiDataId(masterData.getId());
+ resultMdMapping.setSuccess(finalSuccess);
+ resultMdMapping.setEntityCode(" ");
+ resultMdMapping.setMdmCode(masterData.getLm_code());
+ resultMdMapping.setMessage(finalMessage);
+ resultMdMapping.setSubMdMappings(null);
});
+ }finally {
+ resultOrgData.setMessage(message);
+ resultOrgData.setSuccess(success);
+ resultOrgData.setMdMappings(resultMdMappingList);
+ Object object = JSONObject.toJSON(resultOrgData);
+ return resultOrgData;
}
-
}
-
+ Object object = JSONObject.toJSON(resultOrgData);
return resultOrgData;
}
/****
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java
index 48d0413..2156249 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java
@@ -3,7 +3,7 @@
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
-@ConfigurationProperties(prefix="code.applypersonanddept")
+@ConfigurationProperties(prefix="org.applypersonanddept")
@Component
public class PersonAndDeptConfig {
/***
@@ -23,7 +23,14 @@
* 閮ㄩ棬鍒嗙被缂栫爜
*/
private String deptClassCode;
-
+ /**
+ * 浜哄憳鏄惁鐢宠闆嗗洟鐮�
+ */
+ private boolean personApplyGroupCode;
+ /**
+ * 缁勭粐鏈烘瀯鏄惁鐢宠闆嗗洟鐮�
+ */
+ private boolean deptApplyGroupCode;
/***
* 鏄惁寮�鍚�
*/
@@ -69,6 +76,22 @@
isUsedFlag = usedFlag;
}
+ public boolean isPersonApplyGroupCode() {
+ return personApplyGroupCode;
+ }
+
+ public void setPersonApplyGroupCode(boolean personApplyGroupCode) {
+ this.personApplyGroupCode = personApplyGroupCode;
+ }
+
+ public boolean isDeptApplyGroupCode() {
+ return deptApplyGroupCode;
+ }
+
+ public void setDeptApplyGroupCode(boolean deptApplyGroupCode) {
+ this.deptApplyGroupCode = deptApplyGroupCode;
+ }
+
@Override
public String toString() {
return "PersonAndDeptConfig{" +
@@ -76,6 +99,8 @@
", personClassCode='" + personClassCode + '\'' +
", deptLibrary='" + deptLibrary + '\'' +
", deptClassCode='" + deptClassCode + '\'' +
+ ", personApplyGroupCode=" + personApplyGroupCode +
+ ", deptApplyGroupCode=" + deptApplyGroupCode +
", isUsedFlag=" + isUsedFlag +
'}';
}
--
Gitblit v1.9.3