From 7647ae9a3db4712b4154adc6317584b66429212b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 18 九月 2023 15:05:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java |  624 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 613 insertions(+), 11 deletions(-)

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 0973fef..31b61e1 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
@@ -17,6 +17,7 @@
 import com.vci.ubcs.code.util.ClientBusinessObject;
 import com.vci.ubcs.code.util.gennerAttrMapUtil;
 import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.vo.webserviceModel.person.*;
 import com.vci.ubcs.code.vo.webserviceModel.apply.*;
 import com.vci.ubcs.code.vo.webserviceModel.attrmap.*;
 import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO;
@@ -34,6 +35,7 @@
 import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultSystemVO;
 import com.vci.ubcs.code.webService.annotation.VciWebservice;
 import com.vci.ubcs.code.webService.config.AttributeMapConfig;
+import com.vci.ubcs.code.webService.config.PersonAndDeptConfig;
 import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
@@ -51,16 +53,26 @@
 import com.vci.ubcs.system.vo.DeptVO;
 import com.vci.ubcs.system.vo.RoleVO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tools.ant.taskdefs.condition.Http;
+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;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+
 import javax.annotation.Resource;
+import javax.jws.WebMethod;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Context;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
 import java.util.*;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
@@ -73,15 +85,25 @@
 @Slf4j
 @VciWebservice(path = "/universalInterface")
 public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
+
 	@Value("${code.universalinterface.checkSystemConfig:true}")
 	public boolean CODE_CHECKCONFIG;
+
 	@Autowired(required = false)
 	private AttributeMapConfig attributeMapConfig;
+
+	/***
+	 * 浜哄憳鐩稿叧閰嶇疆鏈嶅姟
+	 */
+	@Autowired(required = false)
+	private PersonAndDeptConfig personAndDeptConfig;
+
 	/**
 	 * 缂撳瓨鏈嶅姟
 	 */
 	//@Autowired
 	//private RedisService redisService;
+
 	/**
 	 * 涓婚搴撳垎绫荤殑鏈嶅姟
 	 */
@@ -121,7 +143,6 @@
 	/**
 	 * 瀵嗙骇鐨勬湇鍔�
 	 */
-
 	@Resource
 	private MdmIOService mdmIOService;
 
@@ -136,12 +157,43 @@
 	 */
 	@Resource
 	private IDockingLogeService dockingLogeService;
+	@Resource
+	private IPasswordFreeLoginService passwordFreeLoginService;
 
 	private  static String separator="##VCI##";
 	private  String errorid="0";
 	private String msg="鎴愬姛";
 	private  String objerrorCode="0";
 	private String objerrorMsg="鎴愬姛";
+
+	private final ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>();
+
+	@Resource
+	private WebServiceContext webServiceContext;
+
+	@Override
+	public void setThreadLocal(ThreadLocal<HttpServletRequest> requestThreadLocal){
+		this.threadLocal.set(requestThreadLocal.get());
+		requestThreadLocal.remove();
+	}
+
+	@WebMethod
+	private HttpServletRequest getRequest() {
+		//rest璇锋眰鏂瑰紡鑾峰彇request
+		HttpServletRequest request = this.threadLocal.get();
+		if(Func.isEmpty(request)){
+			try {
+				// webservice璇锋眰鏂瑰紡鑾峰彇HttpServletRequest瀵硅薄
+				request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST);
+			}catch (Exception e){
+				throw new ServiceException("鑾峰彇httpServletRequest澶辫触锛屽師鍥�:"+e.getMessage());
+			}
+		}else {
+			this.threadLocal.remove();
+		}
+		return request;
+	}
+
 	/***
 	 * 鐢宠缂栫爜鎺ュ彛
 	 * @param data 浼犻�掔殑鏁版嵁鍙傛暟
@@ -184,9 +236,11 @@
 			ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
 			systemId = interParameterVO.getData().getSystemId();
 			UserVO userVo = interParameterVO.getData().getUser();
+			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
+			passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
+			AuthUtil.getUser();
 			List<ClassfyVO> classVOList = classfysVO.getClassify();
 			InterParameterVO finalInterParameterVO = interParameterVO;
-
 			//杩欐槸璐﹀彿淇℃伅
 			SessionInfo sessionInfo = new SessionInfo();
 			sessionInfo.setUserId(userVo.getUserName());
@@ -336,6 +390,545 @@
 		return resultStr;
 	}
 
+	/****
+	 * 浜哄憳鏁版嵁鍚屾
+	 * @param personData
+	 * @return
+	 * @throws Throwable
+	 */
+	@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<>();
+		String message="";
+		if(isUsedFlag){
+			AtomicBoolean success= new AtomicBoolean(true);
+			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.set(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.set(false);
+					throw  new  Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅");
+				}
+				CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+				if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
+					success.set(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<>();
+
+				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());//缂栫爜
+					object.setCreator(personMasterData.getCreator());//鍒涘缓鑰�
+					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");//鎿嶄綔绫诲瀷
+						deleteDataVOList.add(object);
+					}else{
+						String worker_category=personMasterData.getWorker_category();
+
+						object.setOperate("create");
+						applyDataVOList.add(object);
+					}
+					codeList.add(personMasterData.getLm_code());
+				});
+
+				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());
+							String code=engineService.addSaveCode(orderDTO);
+							if(StringUtils.isNotBlank(code)) {
+								StringBuffer sqlsb = new StringBuffer();
+								sqlsb.append(" select * from ");
+								sqlsb.append(tableName);
+								sqlsb.append(" where 1=1 ");
+								sqlsb.append(" and lastr=1 and lastv=1");
+								sqlsb.append(" and id in (");
+								sqlsb.append(VciBaseUtil.toInSql(code));
+								sqlsb.append(")");
+								List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString());
+								if (!CollectionUtils.isEmpty(newDataMapList)) {
+									String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID");
+									List<String> oidList = new ArrayList<>();
+									oidList.add(oid);
+									//濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜
+									if (isPersonApplyGroupCode) {
+										mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+										success.set(true);
+										mesg = "鏁版嵁淇濆瓨鎴愬姛锛岀瓑寰呯敵璇烽泦鍥㈢爜";
+									}
+								}
+							}
+						} catch (Exception e) {
+							mesg=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.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);
+					});
+					log.info("end锛氱敵璇疯幏鍙栧畬姣�");
+				}
+			}catch (Throwable e){
+				success.set(false);
+				message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage();
+				//缁勭粐杩斿洖缁撴灉
+				boolean finalSuccess = success.get();
+				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.get());
+				resultOrgData.setMdMappings(resultMdMappingList);
+				Object object = JSONObject.toJSON(resultOrgData);
+			}
+			String resultStr = JSONObject.toJSONString(resultOrgData);
+			String data = JSONObject.toJSONString(personData);
+			try {
+				//璁板綍鏃ュ織
+				this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForPerson");
+			}catch (Throwable e){
+				e.printStackTrace();
+			}
+		}
+
+		return resultOrgData;
+	}
+
+	/****
+	 * 閮ㄩ棬鏁版嵁鍚屾
+	 * @param orgData
+	 * @return
+	 * @throws Throwable
+	 */
+	@Override
+	public ResultOrgData syncDataForOrg(OrgData orgData) {
+		boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
+		ResultOrgData resultOrgData=new ResultOrgData();
+		boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode();
+		List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
+		AtomicBoolean success= new AtomicBoolean(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.set(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.set(false);
+					throw  new  Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅");
+				}
+				CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
+				if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
+					success.set(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(orgMasterData -> {
+					ApplyDataVO object=new ApplyDataVO();
+					object.setCode(orgMasterData.getMdm_code());//缂栫爜
+					object.setCreator(orgMasterData.getCreator());//鍒涘缓鑰�
+					object.setEditor(orgMasterData.getModifier());//淇敼鑰�
+					object.setId(orgMasterData.getPk_mdm());//涓婚敭
+					object.setStatus(CodeDefaultLC.RELEASED.getValue());//鐘舵�佸垯闇�瑕佸垽鏂�
+					Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData);
+					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(orgMasterData.getDr()==1){
+						object.setOperate("delete");//鎿嶄綔绫诲瀷
+						deleteDataVOList.add(object);
+					}else{
+
+						object.setOperate("create");
+						applyDataVOList.add(object);
+					}
+					codeList.add(orgMasterData.getMdm_code());
+				});
+
+				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());
+							String code=engineService.addSaveCode(orderDTO);
+							if(StringUtils.isNotBlank(code)) {
+								StringBuffer sqlsb = new StringBuffer();
+								sqlsb.append(" select * from ");
+								sqlsb.append(tableName);
+								sqlsb.append(" where 1=1 ");
+								sqlsb.append(" and lastr=1 and lastv=1");
+								sqlsb.append(" and id in (");
+								sqlsb.append(VciBaseUtil.toInSql(code));
+								sqlsb.append(")");
+								List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString());
+								if (!CollectionUtils.isEmpty(newDataMapList)) {
+									String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID");
+									List<String> oidList = new ArrayList<>();
+									oidList.add(oid);
+									//濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜
+									if (isPersonApplyGroupCode) {
+										mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
+										success.set(true);
+										mesg = "鏁版嵁淇濆瓨鎴愬姛锛岀瓑寰呯敵璇烽泦鍥㈢爜";
+									}
+								}
+							}
+						} 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.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);
+					});
+					log.info("end锛氱敵璇疯幏鍙栧畬姣�");
+				}
+			}catch (Throwable e){
+				success.set(false);
+				message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage();
+				//缁勭粐杩斿洖缁撴灉
+				boolean finalSuccess = success.get();
+				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.get());
+				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.get(), msg, "syncDataForOrg");
+			}catch (Throwable e){
+				e.printStackTrace();
+			}
+		}
+		return resultOrgData;
+	}
 
 	/***
 	 * 缁熶竴鏇存柊鎺ュ彛锛堟洿鏀圭姸鎬侊紝鏇存敼灞炴�т俊鎭級鎺ュ彛
@@ -381,6 +974,8 @@
 			ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
 			systemId = interParameterVO.getData().getSystemId();
 			UserVO userVo = interParameterVO.getData().getUser();
+			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
+			passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
 			List<ClassfyVO> classVOList = classfysVO.getClassify();
 			InterParameterVO finalInterParameterVO = interParameterVO;
 			//杩欐槸璐﹀彿淇℃伅
@@ -404,7 +999,6 @@
 						throw  new  Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅");
 					}
 					log.info("end锛氬垎绫绘煡璇㈠畬姣�");
-
 					String operation="";
 					if(CODE_CHECKCONFIG) {
 						//鏍¢獙鏄惁閰嶇疆
@@ -527,7 +1121,7 @@
 		log.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
 		ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
 		List<ClassifyVO> classifyVOList=new ArrayList<>();
-		ResultData resultData=new ResultData();
+		com.vci.ubcs.code.vo.webserviceModel.classify.ResultData resultData=new com.vci.ubcs.code.vo.webserviceModel.classify.ResultData();
 		try {
 			if (StringUtils.isBlank(data)) {
 				errorid = "101";
@@ -553,6 +1147,8 @@
 			}
 			QueryData queryData=queryClassifyVO.getData();
 			UserVO userVo=queryData.getUser();
+			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
+			passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
 			systemId=queryData.getSystemId();
 			QueryLibraryVO libraryVO= queryData.getLibrary();
 			String libId= libraryVO.getId();
@@ -711,6 +1307,8 @@
 			CondtionsVO condtionsVO=dataCondtionsVO.getCondtions();
 			systemId=condtionsVO.getSystemId();
 			UserVO userVo=condtionsVO.getUser();
+			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
+			passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
 			CondtionVO condtionVO= condtionsVO.getCondtion();
 			SessionInfo sessionInfo = new SessionInfo();
 			sessionInfo.setUserId(userVo.getUserName());
@@ -887,11 +1485,8 @@
 		return resultStr;
 	}
 
-
-
 	@Override
 	public String queryClassifyRule(String data, String dataType) throws Throwable {
-
 		boolean issucess=false;
 		String resultStr = "";
 		String errorid="0";
@@ -927,6 +1522,8 @@
 			}
 			QueryData queryData=queryClassifyVO.getData();
 			UserVO userVo=queryData.getUser();
+			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
+			passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest());
 			systemId=queryData.getSystemId();
 			QueryLibraryVO libraryVO= queryData.getLibrary();
 			String libId= libraryVO.getId();
@@ -1237,10 +1834,10 @@
 									}
 									log.info(libId);
 								}else if(secType.equals("codelevelsec")) {//灞傜骇鐮佹
-									int level = codeBasicSecVO.getCodeLevelValue();
 									CodeClassifyVO levelCodeClassifyVO = new CodeClassifyVO();
 									CodeClassifyFullInfoBO classifyFullInfoBO = this.classifyService.getClassifyFullInfo(codeClassifyDO.getOid());
 									if(codeBasicSecVO.getCodeLevelType().equals("code_level_special")){//鎸囧畾灞傜骇
+										int level = codeBasicSecVO.getCodeLevelValue();
 										List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
 										if (classifyVOS.size() >= level && level > 0) {
 											levelCodeClassifyVO = classifyVOS.get(level - 1);
@@ -1690,7 +2287,8 @@
 		if(StringUtils.isNotBlank(classOid)){
 			queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid);
 		}
-		List<DockingSystemConfig> dockingSystemConfigList=	dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
+		List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>();
+		dockingSystemConfigList=	dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
 		if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
 		 return	dockingSystemConfigList.get(0);
 		}else{
@@ -1698,6 +2296,10 @@
 				return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid());
 			}
 		}
-		return dockingSystemConfigList.get(0);
+		if(dockingSystemConfigList.size()>0){
+			return dockingSystemConfigList.get(0);
+		}else{
+			return	new DockingSystemConfig();
+		}
 	}
 }

--
Gitblit v1.9.3