diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/SupplierPluginInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/SupplierPluginInitializer.java index 972c8dfe..9fe19c2c 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/SupplierPluginInitializer.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/SupplierPluginInitializer.java @@ -3,6 +3,7 @@ package com.hzya.frame.plugin.lets.plugin.base; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hzya.frame.base.PluginBaseEntity; @@ -10,12 +11,15 @@ import com.hzya.frame.plugin.lets.constant.OverallConstant; import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant; +import com.hzya.frame.plugin.lets.entity.BdCubasdocEntity; import com.hzya.frame.plugin.lets.queryvo.BankVo; import com.hzya.frame.plugin.lets.queryvo.CustdocRequestVo; import com.hzya.frame.plugin.lets.resultvo.CbdocResultVo; +import com.hzya.frame.plugin.lets.u8cdto.ArapDjzb; import com.hzya.frame.plugin.lets.u8cdto.CustdocEntityDto; import com.hzya.frame.plugin.lets.util.PushDataByU8cUtil; +import com.hzya.frame.plugin.lets.util.QueryU8CEntityUtil; import com.hzya.frame.plugin.lets.util.SaveOrUpdateBusinessLogUtil; import com.hzya.frame.plugin.lets.util.pushData.Attribute; import com.hzya.frame.plugin.lets.util.pushData.PushU8CByApiCode; @@ -34,11 +38,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; /** * @Author @@ -147,14 +149,18 @@ public class SupplierPluginInitializer extends PluginBaseEntity { String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss"); OfsSupplierDto supplierEntity = new OfsSupplierDto(); - supplierEntity.setClientCode("LETS"); - supplierEntity.setPageNo("1"); supplierEntity.setLastUpdated_start(startTimeStr); supplierEntity.setLastUpdated_end(endTimeStr); List list = queryfromofs(supplierEntity); + if (list == null || list.size() == 0) { + return; + } //过滤数据 List supplierDtoList = filterSupplierEntity(list); + if (supplierDtoList == null || supplierDtoList.size() == 0) { + return; + } //执行 implement(supplierDtoList); @@ -168,16 +174,21 @@ public class SupplierPluginInitializer extends PluginBaseEntity { * 按编码名称 */ public void startImplement(String code) { + String[] split = code.split("_"); Assert.notNull(code, "code不能为空"); try { OfsSupplierDto supplierEntity = new OfsSupplierDto(); - supplierEntity.setBizCode(code); - supplierEntity.setClientCode("LETS"); - supplierEntity.setPageNo("1"); - + supplierEntity.setBizCode(split[0]); List list = queryfromofs(supplierEntity); + if (list == null || list.size() == 0) { + Assert.state(false, "根据编码:{},未查询到ofs供应商档案。", code); + } //过滤数据 List supplierDtoList = filterSupplierEntity(list); + if (supplierDtoList == null || supplierDtoList.size() == 0) { + Assert.state(false, "根据编码:{},已被成功日志过滤。", code); + + } //执行 implement(supplierDtoList); @@ -198,11 +209,15 @@ public class SupplierPluginInitializer extends PluginBaseEntity { OfsSupplierDto supplierDto = new OfsSupplierDto(); supplierDto.setLastUpdated_start(start); supplierDto.setLastUpdated_end(end); - supplierDto.setClientCode("LETS"); - supplierDto.setPageNo("1"); List queryfromofs = queryfromofs(supplierDto); + if (queryfromofs == null || queryfromofs.size() == 0) { + return; + } //过滤数据 List supplierDtoList = filterSupplierEntity(queryfromofs); + if (supplierDtoList == null || supplierDtoList.size() == 0) { + return; + } //执行 implement(supplierDtoList); } catch (Exception e) { @@ -210,88 +225,13 @@ public class SupplierPluginInitializer extends PluginBaseEntity { } } - public void implement(List shopEntityList) { - - Assert.notNull(shopEntityList, "shopEntityList不能为空"); - //业务时间 - String businessFormat = null; - for (OfsSupplierDto supplierEntity : shopEntityList) { - businessFormat = supplierEntity.getLastUpdated(); - CustdocEntityDto parentvo = new CustdocEntityDto(); - BankVo bankVo = new BankVo(); - CustdocRequestVo CustdocEntityDto = new CustdocRequestVo(); - try { - //设置parentvo - parentvo.setCustname(supplierEntity.getName()); - parentvo.setCustshortname(supplierEntity.getName()); - - parentvo.setPk_areacl("GG");//20241031:妮妮姐:供应商是BB。202411081502:妮妮姐:供应商是GG - - parentvo.setDef1(supplierEntity.getBizCode()); - - CustdocEntityDto.setParentvo(parentvo); - - // 同步u8c - HashMap param = new HashMap<>(); - param.put("cbdocvo", CustdocEntityDto); - - String jsonString = JSONObject.toJSONString(param); - - -// String response = pushDataByU8cUtil.pushU8CByCode(OverallConstant.getOverAllValue("custdocSave"), jsonString); - ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("custdocSaveCode"), jsonString); - //两层判断,一层中台转发,一层u8c返回 - Attribute attribute = ztResult.getAttribute(); - if ("false".equals(ztResult.getFlag())) { - //转发失败 - Assert.state(false, "丽知:OFS供应商档案分类--->U8C客商档案分类.中台转发失败,失败原因:{}", attribute.getErrormsg()); - } - - - String taskNumber = null; - boolean isSuccess = false; - if ("success".equals(attribute.getStatus())) { - isSuccess = true; -// CbdocResultVo cbdocResultVo = JSONObject.parseObject(attribute.getData(), CbdocResultVo.class); -// taskNumber = cbdocResultVo.getTaskNumber(); -// String data = cbdocResultVo.getData(); - } - if (!isSuccess) { - Assert.state(false, "推送U8C,原因:{} 接口入参:{}", attribute.getErrormsg(), jsonString); - } - // 根据返回结果记录日志 - //成功 - IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); - integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y); - integrationTaskLivingDetailsEntity.setRootAppNewData(jsonString); - integrationTaskLivingDetailsEntity.setNewTransmitInfo(attribute.getData()); - integrationTaskLivingDetailsEntity.setNewPushDate(new Date()); - integrationTaskLivingDetailsEntity.setBusinessDate(businessFormat); - integrationTaskLivingDetailsEntity.setRootAppPk(supplierEntity.getBizCode()); - integrationTaskLivingDetailsEntity.setRootAppBill(supplierEntity.getBizCode()); - integrationTaskLivingDetailsEntity.setPluginId(getPluginId()); - saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity); - - - } catch (Exception e) { - logger.error("丽知:OFS供应商档案--->U8C客商档案,implement()方法报错:", e); - String ErrMessage = e.getMessage(); - IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); - integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N); - integrationTaskLivingDetailsEntity.setRootAppNewData(JSONObject.toJSONString(CustdocEntityDto)); - integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage); - integrationTaskLivingDetailsEntity.setNewPushDate(new Date()); - integrationTaskLivingDetailsEntity.setBusinessDate(businessFormat); - integrationTaskLivingDetailsEntity.setRootAppPk(supplierEntity.getBizCode()); - integrationTaskLivingDetailsEntity.setRootAppBill(supplierEntity.getBizCode()); - integrationTaskLivingDetailsEntity.setPluginId(getPluginId()); - saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity); - - } - } - } - - //过滤数据 + /** + * 过滤日志 + * 编码_最后修改日期 + * + * @param list + * @return + */ public List filterSupplierEntity(List list) { Assert.notNull(list, "不能为空!"); @@ -304,7 +244,7 @@ public class SupplierPluginInitializer extends PluginBaseEntity { if (ofsSupplierDto.getBizCode() != null && !"".equals(ofsSupplierDto.getBizCode().trim())) { boolean isExis = true; IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); - integrationTaskLivingDetailsEntity.setRootAppPk(ofsSupplierDto.getBizCode()); + integrationTaskLivingDetailsEntity.setRootAppPk(ofsSupplierDto.getBizCode() + "_" + ofsSupplierDto.getLastUpdated()); integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y); integrationTaskLivingDetailsEntity.setPluginId(getPluginId()); List integrationTaskLivingDetailsEntities = iIntegrationTaskLivingDetailsDao.query(integrationTaskLivingDetailsEntity); @@ -320,17 +260,151 @@ public class SupplierPluginInitializer extends PluginBaseEntity { return supplierDtoList; } - public List queryfromofs(OfsSupplierDto supplierEntity) { + /** + * 根据名称分组,编码用逗号隔开 + * + * @param shopEntityList + */ + + @Autowired + private QueryU8CEntityUtil queryU8CEntityUtil; + + public void implement(List shopEntityList) { + //根据名称分组 + Map> collectByName = shopEntityList.stream().collect(Collectors.groupingBy(index -> index.getName())); + //根据名称查询u8c客商,有则更新def1,无则新增 + collectByName.forEach((k, v) -> { + CustdocRequestVo res_custdoc = null; + String pk_cubasdoc = null; + String jsonString = null; + String def1 = null; + String url = null; + String custName = k;//客商名称 + try { + //查询u8c客商基本档案 + BdCubasdocEntity bdCubasdocEntity = queryU8CEntityUtil.queryBdCubasdocByName(custName); + if (bdCubasdocEntity == null) { + //新增 + url = OverallConstant.getOverAllValue("custdocSaveCode"); + } else { + //更新 + url = OverallConstant.getOverAllValue("custdocUpdate"); + pk_cubasdoc = bdCubasdocEntity.getPkCubasdoc(); + } + + //拼接def1,如果存在则跳过转换,如果不存在则新增 +// def1 = v.stream().map(OfsSupplierDto::getBizCode).collect(Collectors.joining(",")); + List def1_new = v.stream().map(OfsSupplierDto::getBizCode).collect(Collectors.toList()); + String def1_old = bdCubasdocEntity.getDef1(); + String[] def1_split_old = def1_old.split(","); + // 将数组转换为列表 + List def1_list_old = Arrays.asList(def1_split_old);//u8c里已有的def1 + for (String s_new : def1_new) { + if (!def1_list_old.contains(s_new)) { + def1_list_old.add(s_new); + } + } + def1 = String.join(",", def1_list_old); + + CustdocEntityDto parentvo = new CustdocEntityDto(); + CustdocRequestVo CustdocEntityDto = new CustdocRequestVo(); + if (pk_cubasdoc != null) { + parentvo.setPk_cubasdoc(pk_cubasdoc); + } + parentvo.setCustname(k); + parentvo.setCustshortname(k); + parentvo.setPk_areacl("GG");//20241031:妮妮姐:供应商是BB。202411081502:妮妮姐:供应商是GG + parentvo.setDef1(def1); + + CustdocEntityDto.setParentvo(parentvo); + HashMap param = new HashMap<>(); + param.put("cbdocvo", CustdocEntityDto); + jsonString = JSONObject.toJSONString(param); + + ZTResult ztResult = pushU8CByApiCode.pushByCode(url, jsonString); + Attribute attribute = ztResult.getAttribute(); + if ("false".equals(ztResult.getFlag())) { + //转发失败 + Assert.state(false, "丽知:OFS供应商档案分类--->U8C客商档案分类.中台转发失败,失败原因:{}", attribute.getErrormsg()); + } + boolean isSuccess = false; + if ("success".equals(attribute.getStatus())) { + isSuccess = true; + CbdocResultVo cbdocResultVo = JSONObject.parseObject(attribute.getData(), CbdocResultVo.class); + String data = cbdocResultVo.getData(); + List custdocList = JSONUtil.toList(data, CustdocRequestVo.class); + res_custdoc = custdocList.get(0); + } + if (!isSuccess) { + Assert.state(false, "推送U8C,原因:{} 接口入参:{}", attribute.getErrormsg(), jsonString); + } + //成功 + // 根据返回结果记录日志 + for (OfsSupplierDto ofsSupplierDto : v) { + IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); + integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y); + integrationTaskLivingDetailsEntity.setRootAppNewData(jsonString); + integrationTaskLivingDetailsEntity.setNewTransmitInfo(attribute.getData()); + integrationTaskLivingDetailsEntity.setNewPushDate(new Date()); + integrationTaskLivingDetailsEntity.setBusinessDate(ofsSupplierDto.getLastUpdated()); + integrationTaskLivingDetailsEntity.setRootAppPk(ofsSupplierDto.getBizCode() + "_" + ofsSupplierDto.getLastUpdated()); + integrationTaskLivingDetailsEntity.setRootAppBill(ofsSupplierDto.getBizCode()); + integrationTaskLivingDetailsEntity.setPluginId(getPluginId()); + integrationTaskLivingDetailsEntity.setNewSystemNumber(res_custdoc.getParentvo().getCustcode()); + integrationTaskLivingDetailsEntity.setNewSystemPrimary(res_custdoc.getParentvo().getPk_cubasdoc()); + saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity); + } + + } catch (Exception e) { + logger.error("ofs供应商档案同步报错:{}", e); + String ErrMessage = e.getMessage(); + for (OfsSupplierDto ofsSupplierDto : v) { + IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); + integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N); + integrationTaskLivingDetailsEntity.setRootAppNewData(jsonString); + integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage); + integrationTaskLivingDetailsEntity.setNewPushDate(new Date()); + integrationTaskLivingDetailsEntity.setBusinessDate(ofsSupplierDto.getLastUpdated()); + integrationTaskLivingDetailsEntity.setRootAppPk(ofsSupplierDto.getBizCode() + "_" + ofsSupplierDto.getLastUpdated()); + integrationTaskLivingDetailsEntity.setRootAppBill(ofsSupplierDto.getBizCode()); + integrationTaskLivingDetailsEntity.setPluginId(getPluginId()); + saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity); + } + } + }); + } + + + public List queryfromofs(OfsSupplierDto supplierEntity) throws Exception { + Long pageNo = 1L; + + List all = new ArrayList<>(); + InterfaceParamByU8CApiDto interfaceParamDto = new InterfaceParamByU8CApiDto(); interfaceParamDto.setApi("ofs.vendor.search"); + supplierEntity.setClientCode("LETS"); + supplierEntity.setPageNo("1"); + supplierEntity.setPageNo(String.valueOf(pageNo)); + supplierEntity.setPageSize("500"); interfaceParamDto.setData(JSON.toJSONString(supplierEntity)); - try { - OfsSupplierReturnMessageDto unified = (OfsSupplierReturnMessageDto) ofsUnifiedService.unifiedByU8CApi(interfaceParamDto); - List list = unified.getData(); - return list; - } catch (Exception e) { - logger.error("丽知:OFS供应商档案查询失败,queryfromofs()方法报错:", e); + + OfsSupplierReturnMessageDto unified = (OfsSupplierReturnMessageDto) ofsUnifiedService.unifiedByU8CApi(interfaceParamDto); + if (unified.getData() == null || unified.getData().size() == 0) { return null; } + + int count = unified.getData().size(); + + while (count >= 500) {//>=500,可能还有下一页。 + //还有下一页 + pageNo++; + supplierEntity.setPageNo(String.valueOf(pageNo)); + interfaceParamDto.setData(JSON.toJSONString(supplierEntity)); + OfsSupplierReturnMessageDto unified1 = (OfsSupplierReturnMessageDto) ofsUnifiedService.unifiedByU8CApi(interfaceParamDto); + all.addAll(unified1.getData()); + count = unified1.getData().size(); + + } + return all; } } diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/QueryU8CEntityUtil.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/QueryU8CEntityUtil.java index 8ca93563..7cba0d9b 100644 --- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/QueryU8CEntityUtil.java +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/util/QueryU8CEntityUtil.java @@ -425,6 +425,37 @@ public class QueryU8CEntityUtil { @Autowired private IBdCubasdocDao iBdCubasdocDao; + /** + * 根据客商名称查询客商基本档案 + */ + public BdCubasdocEntity queryBdCubasdocByName(String name){ + BdCubasdocEntity entity = new BdCubasdocEntity(); + entity.setCustname(name); + entity.setDr(0L); + entity.setDataSourceCode(ProfilesActiveConstant.LETS_DATE_SOURCE); + List query = iBdCubasdocDao.query(entity); + if (query.size() >= 1) { + return query.get(0); + } else { + return null; + } + } + /** + * 根据客商编码查询客商基本档案 + */ + public BdCubasdocEntity queryBdCubasdocByCode(String code){ + BdCubasdocEntity entity = new BdCubasdocEntity(); + entity.setCustcode(code); + entity.setDr(0L); + entity.setDataSourceCode(ProfilesActiveConstant.LETS_DATE_SOURCE); + List query = iBdCubasdocDao.query(entity); + if (query.size() >= 1) { + return query.get(0); + } else { + return null; + } + } + /** * 根据def1查询客商基本档案