From fc4d1e17b9ed87e34835316d0e8b89feebe32be6 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期一, 11 九月 2023 17:54:29 +0800
Subject: [PATCH] 人员组织结构申请接口开发

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java                |  292 ++++++++++++++++++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java                               |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                      |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/PersonAndDeptConfig.java              |   37 +++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java    |   12 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/DMS.xml                      |   12 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/org..json             |  152 +++++++-------
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/EnumerableData.java   |   42 ++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java |   16 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java            |    9 
 10 files changed, 473 insertions(+), 109 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/DMS.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/DMS.xml
new file mode 100644
index 0000000..b63b345
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/DMS.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<clsfs>
+    <clsf library="renyuan">
+        <prop	sourceKey="id"	sourceName="缂栫爜"	targetKey="lm_code"	targetName="缂栫爜"/>
+        <prop	sourceKey="group_code"	sourceName="闆嗗洟鐮�"	targetKey="ordernum"	targetName="闆嗗洟鐮�"/>
+        <prop	sourceKey="name"	sourceName="鍚嶇О"	targetKey="name"	targetName="鍚嶇О"/>
+        <prop	sourceKey="creator"	sourceName="鍒涘缓浜�"	targetKey="	creator	"	targetName="鍒涘缓浜�"/>
+        <prop	sourceKey="createtime"	sourceName="鍒涘缓鏃堕棿"	targetKey="createtime"	targetName="鍒涘缓鏃堕棿"/>
+        <prop	sourceKey="modifier"	sourceName="鏈�鍚庝慨鏀逛汉"	targetKey="modifier"	targetName="鏈�鍚庝慨鏀逛汉"/>
+        <prop	sourceKey="modifytime"	sourceName="鏈�鍚庝慨鏀规椂闂�"	targetKey="modifytime"	targetName="鏈�鍚庝慨鏀规椂闂�"/>
+    </clsf>
+</clsfs>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/EnumerableData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/EnumerableData.java
index c96f200..a255829 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/EnumerableData.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/EnumerableData.java
@@ -17,4 +17,46 @@
 	 * 鎻忚堪
 	 */
 	private String descript;
+
+	public String getMdm_code() {
+		return mdm_code;
+	}
+
+	public void setMdm_code(String mdm_code) {
+		this.mdm_code = mdm_code;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDescript() {
+		return descript;
+	}
+
+	public void setDescript(String descript) {
+		this.descript = descript;
+	}
+
+	@Override
+	public String toString() {
+		return "EnumerableData{" +
+			"mdm_code='" + mdm_code + '\'' +
+			", code='" + code + '\'' +
+			", name='" + name + '\'' +
+			", descript='" + descript + '\'' +
+			'}';
+	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java
index 9d0edef..4ee33f1 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/OrgMasterData.java
@@ -106,7 +106,7 @@
 	private String  link_fieldvalue;
 	private String floy_middatastatus;
 	private String originalcode;
-	private String pk_mdn;
+	private String pk_mdm;
 	private String mdm_duplicate;
 	private String mdm_code;
 	private String mdm_version;
@@ -366,12 +366,12 @@
 		this.originalcode = originalcode;
 	}
 
-	public String getPk_mdn() {
-		return pk_mdn;
+	public String getPk_mdm() {
+		return pk_mdm;
 	}
 
-	public void setPk_mdn(String pk_mdn) {
-		this.pk_mdn = pk_mdn;
+	public void setPk_mdm(String pk_mdn) {
+		this.pk_mdm = pk_mdn;
 	}
 
 	public String getMdm_duplicate() {
@@ -464,7 +464,7 @@
 			", link_fieldvalue='" + link_fieldvalue + '\'' +
 			", floy_middatastatus='" + floy_middatastatus + '\'' +
 			", originalcode='" + originalcode + '\'' +
-			", pk_mdn='" + pk_mdn + '\'' +
+			", pk_mdm='" + pk_mdm + '\'' +
 			", mdm_duplicate='" + mdm_duplicate + '\'' +
 			", mdm_code='" + mdm_code + '\'' +
 			", mdm_version='" + mdm_version + '\'' +
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java
index d75d269..7c200d0 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/PersonMasterData.java
@@ -187,7 +187,7 @@
 	private String flow_middatastatus;
 	private String employer;
 	private int mdm_duplicate;
-	private EnumerableData gerder_entity;
+	private EnumerableData gender_entity;
 	private EnumerableData employment_type_entity;
 	private String gerder;
 	private  String employment_type;
@@ -561,12 +561,12 @@
 		this.mdm_duplicate = mdm_duplicate;
 	}
 
-	public EnumerableData getGerder_entity() {
-		return gerder_entity;
+	public EnumerableData getGender_entity() {
+		return gender_entity;
 	}
 
-	public void setGerder_entity(EnumerableData gerder_entity) {
-		this.gerder_entity = gerder_entity;
+	public void setGender_entity(EnumerableData gender_entity) {
+		this.gender_entity = gender_entity;
 	}
 
 	public EnumerableData getEmployment_type_entity() {
@@ -659,7 +659,7 @@
 
 	@Override
 	public String toString() {
-		return "MasterData{" +
+		return "PersonMasterData{" +
 			"id='" + id + '\'' +
 			", lm_code='" + lm_code + '\'' +
 			", group_code='" + group_code + '\'' +
@@ -705,8 +705,8 @@
 			", flow_middatastatus='" + flow_middatastatus + '\'' +
 			", employer='" + employer + '\'' +
 			", mdm_duplicate=" + mdm_duplicate +
-			", gerder_entity='" + gerder_entity + '\'' +
-			", employment_type_entity='" + employment_type_entity + '\'' +
+			", gender_entity=" + gender_entity +
+			", employment_type_entity=" + employment_type_entity +
 			", gerder='" + gerder + '\'' +
 			", employment_type='" + employment_type + '\'' +
 			", employment_type_nane='" + employment_type_nane + '\'' +
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/org..json b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/org..json
index 78ec2df..1fbbea3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/org..json
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/person/org..json
@@ -1,79 +1,77 @@
 {
-  msg:null,
-  masterData:[
-  {
-    "departnent_code": "108040",
-    "is_virtual": 0,
-    "id_route": "2843121148743936]2843121413050624]",
-    "departnent_type": "1",
-    "nodifytime": "2023-06-1510:34:37",
-    "mdm_workflow_status":l,
-    "modifier":"鐜嬬",
-    "telephone_nunber":null,
-    "mdm_datastatus":3,
-    "parent_departnent_nane":鈥滆储鍔$鐞嗛儴",
-    "ndn_cleanstatus": "VAITING",
+  "msg": null,
+  "masterData": [{
+    "country": "涓浗澶ч檰",
+    "education": "澶у鏈",
+    "mdm_workflow_status": 0,
+    "worker_category": "鍦ㄥ矖",
+    "modifier": "涓绘暟鎹郴缁�",
+    "mdm_datastatus": 3,
     "link_fieldvalue": null,
-    "dr:0,"
-    dr_ndm_code
-    ":"
-    0,
-    "enable_status :3,"
-    ndn_parentcode
-    ";null,"
-    departent
-    head
-    ":null,"
-    floy_middatastatus
-    ":null,"
-    originalcode
-    ":null,"
-    node
-    type
-    ":"
-    閮�,
-    "company_code": "20220423,department_level"
-    :
-    "2",
-    "nane_route": null,
-    "sort_order": "81鈥濓紝"
-    pk_mdn
-    ":"
-    1720683591179436130
-    ",display_status": "涓嶆樉绀�,"
-    parent_department
-    _code
-    ":"
-    108000
-    ",creator:"
-    鐜嬬憺娉�
-    鈥�,
-    "createtine": 2023-05-08
-    10: 45
-    :
-    33
-    锛�
-    "departnent nane": 闆嗗洟璐㈠姟澶�6666
-    鈥�
-    .
-    "ndm duplicate": 0,
-    ndn
-    code
-    ?
-    :
-    "99",
-    /dcpartment_status
-    ":"
-    浣滃簾
-    鈥�
-    锛�
-    ndm_version
-    ":4,company name :涓浗鑸彂榛庢槑"
-    original
-    nane: null,
-    "departnent head code": null,
-    "ts :"
-    2023-06-1510: 34
-    :
-    37.451
-    "]], distributeToken=, code=0, systemCode=nhdept,ndType=departnent_basic, action=distribute_manual}
+    "dr": 0,
+    "flow_middatastatus": null,
+    "employer": "棰嗙剨鍔犲伐鍘�",
+    "parent_dept_code": "403000",
+    "politiccountenance": null,
+    "outer_email": null,
+    "id_number": "210104198806062312",
+    "worker_level": "鍒濈骇宸ャ�婂熀鏈敓浜с��",
+    "admin_division_code": null,
+    "work_title": null,
+    "mdm_duplicate":0,
+    "employer_code":"403000",
+    "birthplace": "杈藉畞鐪佹矆闃冲競鈥濓紝",
+    "nationality": "姹夋棌",
+    "gender_entity":{
+      "mdm_code":"1",
+      "code":"5",
+      "name":"鐢锋��",
+      "descript":"鐢峰コ锛岄泦鍥㈡爣鍑嗚姹�: 鐢锋�� 1鍜�5锛屽コ鎬�2鍜�6"
+    },
+    "name":"鐢拌嫍",
+    "position":"椋炴満鍙戝姩鏈洪閲戝伐",
+    "employment_type_entity":{
+      "mdm_code":"1",
+      "code":"1,",
+      "name":"閮ㄩ棬涓昏亴",
+      "descript":"1銆侀儴闂ㄧ帇鑱� 2銆侀儴闂ㄥ吋鑱�"
+    },
+    "parent_dept_name":"棰嗙剨鍔犲伐鍘�",
+    "brithday": "1988-06-06",
+    "employment_type": "1",
+    "employment_type_nane":"閮ㄩ棬涓昏亴",
+    "group_code":"19885013",
+    "gender":1,
+    "admin_division":null,
+    "modifytime" :"2023-08-29",
+    "worker_security_level":null,
+    "mdm_cleanstatus":"WAITINC",
+    "dr_mdm_code": "0",
+    "mdm_parentcode":null,
+    "mobile_phone":"15140256567",
+    "id_type":"韬唤璇�",
+    "dept_type":"鏈哄專鐏劙绛掑伐娈�",
+    "worker_email":null,
+    "pk_mdm":"1723S7091785C804868",
+    "employment_form":"姝e紡鍦ㄥ矖浜哄憳",
+    "lm_code":"19885013",
+    "creator":"涓绘暟鎹郴缁�" ,
+    "createtime":"2023-06-1201:39:40",
+    "office_telephone":null,
+    "citizenship":"杈藉箍鐪佹矆闃冲競",
+    "dept_name":"403002",
+    "mdm_code":"16305",
+    "gender_name":"鐢锋�р��,",
+    "is_keyposion":"鏄�",
+    "worker_duty":"椋炴満鍙嬪姩鏈洪挘閲戝伐",
+    "marital_status":"鏈",
+    "mdm_version":"75,",
+    "ts":"2025-08-t9 17:52:19.026"
+
+  }],
+  "distributeToken":"",
+  "code":0,
+  "systemCode":"mhperson",
+  "mdType": "person_basic",
+  "action": "distribute_subscribe"
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java
index 695023c..5b7d4d4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplyOrgPersonController.java
@@ -7,10 +7,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 鐢宠浜哄憳閮ㄩ棬鎺у埗鍣�
@@ -37,7 +34,7 @@
 	 * @throws Throwable
 	 */
 	@PostMapping("/syncDataForPerson")
-	public ResultOrgData syncDataForPerson(@RequestParam PersonData personData)  {
+	public ResultOrgData syncDataForPerson(@RequestBody PersonData personData)  {
 		String result="";
 		try {
 			return universalInterfaceI.syncDataForPerson(personData);
@@ -55,7 +52,7 @@
 	 * @throws Throwable
 	 */
 	@PostMapping("/syncDataForOrg")
-	public ResultOrgData syncDataForOrg(@RequestParam OrgData orgData)  {
+	public ResultOrgData syncDataForOrg(@RequestBody OrgData orgData)  {
 		String result="";
 		try {
 			return universalInterfaceI.syncDataForOrg(orgData);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
index d8aaf65..a5bd305 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
@@ -111,4 +111,12 @@
 	 * @return 鏈夐敊璇俊鎭殑excel
 	 */
 	void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode);
+
+	/***
+	 * 鐢宠闆嗗洟鐮佹帴鍙�
+	 * @param idList 鏁版嵁oid
+	 * @param btmName 涓氬姟绫诲瀷
+	 * @param operationType
+	 */
+	void sendApplyGroupcode(List<String> idList,String btmName,String operationType);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 17b4f7c..d83fddc 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -4455,7 +4455,7 @@
 	 * @param idList
 	 * @param btmName
 	 */
-	private void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
+	public void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
 		String oids=VciBaseUtil.array2String(idList.toArray(new String[]{}));
 		if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue())) {
 			mdmInterJtClient.applyGroupCode(oids,btmName);
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 fd19302..58a119c 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
@@ -352,14 +352,23 @@
 	 */
 	@Override
 	public ResultOrgData syncDataForPerson(PersonData personData) {
+
 		boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
 		ResultOrgData resultOrgData=new ResultOrgData();
+
+		boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode();
+		String systemCode=personData.getSystemCode();
 		List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
 		boolean success=true;
 		String message="";
 		if(isUsedFlag){
-			List<PersonMasterData> masterDataList = personData.getMasterData();
+			List<PersonMasterData> masterDataList=new ArrayList<>();
+			List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields());
 			try {
+				if(personData==null){
+					throw new Throwable("浼犲叆鍙傛暟涓簄ull");
+				}
+				masterDataList = personData.getMasterData();
 				String personLibrary = personAndDeptConfig.getPersonLibrary();
 				if (StringUtils.isBlank(personLibrary)) {
 					success=false;
@@ -400,15 +409,31 @@
 					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<>();
+					/***
+					 * 鏍规嵁閰嶇疆鏂囦欢鑾峰彇鏋氫妇鍊�
+					 */
+					fields.stream().forEach(field->{
+						if(dataMap.containsKey(field)){
+							String enumFiled= dataMap.get(field);
+							EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class);
+							String enumCode=enumerableData.getCode();
+							//String enumCodeValue=enumerableData.getName();
+							ProppertyVO proppertyVO=new ProppertyVO();
+							proppertyVO.setKey(field);
+							proppertyVO.setValue(enumCode);
+							proppertyVOList.add(proppertyVO);
+							dataMap.remove(field);
+						}
+					});
 					dataMap.forEach((key,vaule)->{
 						ProppertyVO proppertyVO=new ProppertyVO();
 						proppertyVO.setKey(key);
 						proppertyVO.setValue(vaule);
 						proppertyVOList.add(proppertyVO);
 					});
+
 					object.setProp(proppertyVOList);
 					if(personMasterData.getDr()==1){
 						object.setOperate("delete");//鎿嶄綔绫诲瀷
@@ -470,7 +495,7 @@
 				LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
 				if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){
 					DataObjectVO dataObjectVO = new DataObjectVO();
-					this.getConfigDatas("ERP", personLibrary, editDatasVO, attrVOS, dataObjectVO);
+					this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO);
 					log.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�");
 					boolean  personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode();
 					mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode);
@@ -478,7 +503,7 @@
 				}
 				if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) {
 					DataObjectVO dataObjectVO = new DataObjectVO();
-					this.getConfigDatas("ERP", personLibrary, editDatasVO, attrVOS, dataObjectVO);
+					this.getConfigDatas(systemCode, personLibrary, applyDatasVO, attrVOS, dataObjectVO);
 
 					CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
 					CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
@@ -492,6 +517,7 @@
 							CodeOrderDTO orderDTO = new CodeOrderDTO();
 							List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
 							orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭
+							orderDTO.setTemplateOid(templateVO.getOid());
 							if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) {
 								ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> {
 									if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//瑙勫垯涔嬪畾涔変负鍙彉鐮佹瀛樺偍涓绘暟鎹紶閫掕繃鏉ョ殑鏁版嵁
@@ -503,6 +529,7 @@
 									}
 								});
 							}
+							orderDTO.setCodeRuleOid(ruleVO.getOid());
 							orderDTO.setSecDTOList(codeOrderSecDTOList);//瀛樺偍缂栫爜
 							orderDTO.setData(rowData.getFiledValue());
 							engineService.addSaveCode(orderDTO);
@@ -533,6 +560,11 @@
 						resultMdMappingList.add(resultMdMapping);
 					});
 					log.info("end锛氱敵璇疯幏鍙栧畬姣�");
+					//濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜
+					if(isPersonApplyGroupCode){
+						List<String> oidList=new ArrayList<>();
+						mdmIOService.sendApplyGroupcode(oidList,templateVO.getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+					}
 				}
 			}catch (Throwable e){
 				success=false;
@@ -554,10 +586,17 @@
 				resultOrgData.setSuccess(success);
 				resultOrgData.setMdMappings(resultMdMappingList);
 				Object object = JSONObject.toJSON(resultOrgData);
-				return resultOrgData;
+			}
+			String resultStr = JSONObject.toJSONString(resultOrgData);
+			String data = JSONObject.toJSONString(personData);
+			try {
+				//璁板綍鏃ュ織
+				this.saveLogs(systemCode, systemCode, data, resultStr, success, msg, "syncDataForPerson");
+			}catch (Throwable e){
+				e.printStackTrace();
 			}
 		}
-		Object object = JSONObject.toJSON(resultOrgData);
+
 		return resultOrgData;
 	}
 	/****
@@ -568,7 +607,246 @@
 	 */
 	@Override
 	public ResultOrgData syncDataForOrg(OrgData orgData) {
-		return null;
+		boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
+		ResultOrgData resultOrgData=new ResultOrgData();
+
+		boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode();
+		List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
+		boolean success=true;
+		String message="";
+		String systemCode="";
+		if(isUsedFlag){
+			List<OrgMasterData> orgMasterDataList=new ArrayList<>();
+			List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields());
+			try {
+				if(orgData==null){
+					throw new Throwable("浼犲叆鍙傛暟涓簄ull");
+				}
+				systemCode=orgData.getSystemCode();
+				orgMasterDataList = orgData.getMasterData();
+				String personLibrary = personAndDeptConfig.getPersonLibrary();
+				if (StringUtils.isBlank(personLibrary)) {
+					success=false;
+					log.info("闆嗘垚閰嶇疆缂哄皯浜哄憳搴撹妭鐐逛俊鎭�,personLibrary->" + personLibrary);
+					throw  new Throwable("闆嗘垚閰嶇疆缂哄皯浜哄憳搴撹妭鐐逛俊鎭�,personLibrary->" + personLibrary);
+				}
+				String personClassCode = personAndDeptConfig.getPersonClassCode();
+				ClassfyVO classfyVO = new ClassfyVO();
+				classfyVO.setLibrary(personLibrary);
+				classfyVO.setClassCode(personClassCode);
+				CodeClassifyVO  codeClassifyVO=this.getClassfy(classfyVO,personLibrary);
+				log.info("end锛氬垎绫绘煡璇㈠畬姣�");
+				//鑾峰彇鍒嗙被妯℃澘淇℃伅
+				if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
+					success=false;
+					throw  new  Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅");
+				}
+				CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+				if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
+					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<Map> dataList=new ArrayList<>();
+				List<String> codeList=new ArrayList<>();
+				List<ApplyDataVO> applyDataVOList=new ArrayList<>();
+				List<ApplyDataVO> deleteDataVOList=new ArrayList<>();
+				orgMasterDataList.stream().forEach(personMasterData -> {
+					ApplyDataVO object=new ApplyDataVO();
+					object.setCode(personMasterData.getMdm_code());//缂栫爜
+					object.setCreator(personMasterData.getCreator());//鍒涘缓鑰�
+					object.setEditor(personMasterData.getModifier());//淇敼鑰�
+					object.setId(personMasterData.getPk_mdm());//涓婚敭
+					object.setStatus(CodeDefaultLC.RELEASED.getValue());//鐘舵�佸垯闇�瑕佸垽鏂�
+					Map<String,String> dataMap= VciBaseUtil.objectToMapString(personMasterData);
+					List<ProppertyVO> proppertyVOList=new ArrayList<>();
+					/***
+					 * 鏍规嵁閰嶇疆鏂囦欢鑾峰彇鏋氫妇鍊�
+					 */
+					fields.stream().forEach(field->{
+						if(dataMap.containsKey(field)){
+							String enumFiled= dataMap.get(field);
+							EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class);
+							String enumCode=enumerableData.getCode();
+							//String enumCodeValue=enumerableData.getName();
+							ProppertyVO proppertyVO=new ProppertyVO();
+							proppertyVO.setKey(field);
+							proppertyVO.setValue(enumCode);
+							proppertyVOList.add(proppertyVO);
+							dataMap.remove(field);
+						}
+					});
+					dataMap.forEach((key,vaule)->{
+						ProppertyVO proppertyVO=new ProppertyVO();
+						proppertyVO.setKey(key);
+						proppertyVO.setValue(vaule);
+						proppertyVOList.add(proppertyVO);
+					});
+
+					object.setProp(proppertyVOList);
+					if(personMasterData.getDr()==1){
+						object.setOperate("delete");//鎿嶄綔绫诲瀷
+						deleteDataVOList.add(object);
+					}else{
+						codeList.add(personMasterData.getMdm_code());
+						object.setOperate("create");
+						applyDataVOList.add(object);
+					}
+				});
+
+				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(systemCode, 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(systemCode, personLibrary, applyDatasVO, 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());//鍒嗙被涓婚敭
+							orderDTO.setTemplateOid(templateVO.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.setCodeRuleOid(ruleVO.getOid());
+							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锛氱敵璇疯幏鍙栧畬姣�");
+					//濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜
+					if(isPersonApplyGroupCode){
+						List<String> oidList=new ArrayList<>();
+						mdmIOService.sendApplyGroupcode(oidList,templateVO.getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+					}
+				}
+			}catch (Throwable e){
+				success=false;
+				message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage();
+				//缁勭粐杩斿洖缁撴灉
+				boolean finalSuccess = success;
+				String finalMessage = message;
+				orgMasterDataList.stream().forEach(masterData -> {
+					ResultMdMapping resultMdMapping=new ResultMdMapping();
+					resultMdMapping.setBusiDataId(masterData.getPk_mdm());
+					resultMdMapping.setSuccess(finalSuccess);
+					resultMdMapping.setEntityCode(" ");
+					resultMdMapping.setMdmCode(masterData.getMdm_code());
+					resultMdMapping.setMessage(finalMessage);
+					resultMdMapping.setSubMdMappings(null);
+				});
+			}finally {
+				resultOrgData.setMessage(message);
+				resultOrgData.setSuccess(success);
+				resultOrgData.setMdMappings(resultMdMappingList);
+				Object object = JSONObject.toJSON(resultOrgData);
+			}
+			String resultStr = JSONObject.toJSONString(resultOrgData);
+			String data = JSONObject.toJSONString(orgData);
+			try {
+				//璁板綍鏃ュ織
+				this.saveLogs(systemCode, systemCode, data, resultStr, success, msg, "syncDataForOrg");
+			}catch (Throwable e){
+				e.printStackTrace();
+			}
+		}
+		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 2156249..c14292b 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,6 +3,8 @@
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 @ConfigurationProperties(prefix="org.applypersonanddept")
 @Component
 public class PersonAndDeptConfig {
@@ -34,7 +36,16 @@
 	/***
 	 * 鏄惁寮�鍚�
 	 */
-	private boolean isUsedFlag;
+	private boolean usedFlag;
+	/***
+	 * 浜哄憳鎺ュ彛鏋氫妇鍊煎瓧娈�
+	 */
+	private String personFields;
+
+	/***
+	 * 缁勭粐鎺ュ彛鏋氫妇鍊煎瓧娈�
+	 */
+	private String deptFields;
 
 	public String getPersonLibrary() {
 		return personLibrary;
@@ -69,11 +80,11 @@
 	}
 
 	public boolean isUsedFlag() {
-		return isUsedFlag;
+		return usedFlag;
 	}
 
 	public void setUsedFlag(boolean usedFlag) {
-		isUsedFlag = usedFlag;
+		this.usedFlag = usedFlag;
 	}
 
 	public boolean isPersonApplyGroupCode() {
@@ -92,6 +103,22 @@
 		this.deptApplyGroupCode = deptApplyGroupCode;
 	}
 
+	public String getPersonFields() {
+		return personFields;
+	}
+
+	public void setPersonFields(String personFields) {
+		this.personFields = personFields;
+	}
+
+	public String getDeptFields() {
+		return deptFields;
+	}
+
+	public void setDeptFields(String deptFields) {
+		this.deptFields = deptFields;
+	}
+
 	@Override
 	public String toString() {
 		return "PersonAndDeptConfig{" +
@@ -101,7 +128,9 @@
 			", deptClassCode='" + deptClassCode + '\'' +
 			", personApplyGroupCode=" + personApplyGroupCode +
 			", deptApplyGroupCode=" + deptApplyGroupCode +
-			", isUsedFlag=" + isUsedFlag +
+			", usedFlag=" + usedFlag +
+			", personFields='" + personFields + '\'' +
+			", deptFields='" + deptFields + '\'' +
 			'}';
 	}
 }

--
Gitblit v1.9.3