diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java
index 2c05108e..b9e990b8 100644
--- a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/constant/OverallConstant.java
@@ -45,6 +45,11 @@ public class OverallConstant {
prodOverPublic.put("bdinvclUnseal", "/u8cloud/api/uapbd/invbasdoc/unseal");//存货基本档案取消封存
prodOverPublic.put("bdinvclAllotCode", "8000370003");//存货基本档案自动分配
prodOverPublic.put("bdinvclAllot", "/u8cloud/api/uapbd/invbasdoc/assign");//存货基本档案自动分配
+ //成套件
+ prodOverPublic.put("setpartInsertCode", "8000370063");//成套件新增
+ prodOverPublic.put("setpartDeleteCode", "8000370064");//成套件删除
+ prodOverPublic.put("setpartQueryCode", "8000370065");//成套件查询
+
//调拨
prodOverPublic.put("approveqzCode", "8000370009");//调拨订单保存即审批
prodOverPublic.put("approveqz", "/u8cloud/api/to/transorder/saveapprove");//调拨订单保存即审批
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofsvo/QueryOfsKitRequestVO.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofsvo/QueryOfsKitRequestVO.java
new file mode 100644
index 00000000..48899f54
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/ofsvo/QueryOfsKitRequestVO.java
@@ -0,0 +1,26 @@
+package com.hzya.frame.plugin.lets.ofsvo;
+
+import lombok.Data;
+
+/**
+ * OFS 实物组套入参查询
+ */
+@Data
+public class QueryOfsKitRequestVO {
+ /** 开始时间 */
+ private String created_start;
+ /** 结束时间 */
+ private String created_end;
+ /** 组织 */
+ private String clientCode;
+
+ private String lastUpdated_start;
+ private String lastUpdated_end;
+
+
+ private String companyCode;
+ private String status;
+ private String skuCode;
+ private String pageNo;
+ private String pageSize;
+}
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/KitPluginInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/KitPluginInitializer.java
new file mode 100644
index 00000000..4117edc2
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/plugin/base/KitPluginInitializer.java
@@ -0,0 +1,332 @@
+package com.hzya.frame.plugin.lets.plugin.base;
+
+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;
+import com.hzya.frame.plugin.lets.constant.OverallConstant;
+import com.hzya.frame.plugin.lets.constant.ProfilesActiveConstant;
+import com.hzya.frame.plugin.lets.dao.IBdInvbasdocDao;
+import com.hzya.frame.plugin.lets.entity.BdCorpEntity;
+import com.hzya.frame.plugin.lets.ofsvo.QueryOfsKitRequestVO;
+import com.hzya.frame.plugin.lets.u8cdto.InvBasDocVO;
+import com.hzya.frame.plugin.lets.u8cdto.ReusltStrDto;
+import com.hzya.frame.plugin.lets.u8cdto.SetpartVO;
+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;
+import com.hzya.frame.plugin.lets.util.pushData.ZTResult;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.dao.IIntegrationTaskLivingDetailsDao;
+import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
+import com.hzya.frame.ttxofs.basics.ReturnMessageBasics;
+import com.hzya.frame.ttxofs.dto.InterfaceParamByU8CApiDto;
+import com.hzya.frame.ttxofs.dto.kit.OfsKitOrderSearchResponse;
+import com.hzya.frame.ttxofs.service.OfsUnifiedService;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * OFS实物组套同步U8C成套件档案
+ *
+ * U8C成套件没有修改,,只有删除和新增
+ */
+public class KitPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(KitPluginInitializer.class);
+
+ private static final ReentrantLock LOCK = new ReentrantLock(true);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "base.KitPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "丽知:OFS实物组套--->U8C成套件档案";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "丽知:OFS实物组套--->U8C成套件档案";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Autowired
+ private IIntegrationTaskLivingDetailsDao iIntegrationTaskLivingDetailsDao;
+ @Autowired
+ private PushDataByU8cUtil pushDataByU8cUtil;
+ @Autowired
+ private PushU8CByApiCode pushU8CByApiCode;
+ @Autowired
+ private SaveOrUpdateBusinessLogUtil saveOrUpdateBusinessLogUtil;
+
+ @Autowired
+ private OfsUnifiedService ofsUnifiedService;
+
+ @Autowired
+ private IBdInvbasdocDao bdInvbasdocDao;
+ @Autowired
+ private QueryU8CEntityUtil queryU8CEntityUtil;
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
+ try {
+ logger.info("调用:" + getPluginName() + "-插件");
+ String prod = "prod";
+ String param = String.valueOf(requestJson.get("param"));
+ if (requestJson != null && ProfilesActiveConstant.TYPE_DATE.equals(requestJson.get("type"))) {
+ //按日期
+ if (param != null && !"".equals(param)) {
+ String[] split = param.split("/");
+ if (!(split.length == 2)) {
+ Assert.state(false, "时间格式传递不正确");
+ }
+ Assert.notNull(split[0], "开始时间不能为空");
+ Assert.notNull(split[1], "结束时间不能为空");
+ start(split[0], split[1]);
+ }
+ } else if (requestJson != null && ProfilesActiveConstant.TYPE_VBILLCODE.equals(requestJson.get("type"))) {
+ //按单号
+ if (param != null && !"".equals(param)) {
+ start(param);
+ }
+ } else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
+ String integrationTaskLivingDetails = (String) requestJson.get("integration_task_living_details_id");
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integrationTaskLivingDetails);
+ start(integrationTaskLivingDetailsEntity.getRootAppPk());
+ } else if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(prod)) {
+ //默认
+ start();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("executeBusiness方法抛出异常", e);
+ }
+ return null;
+ }
+
+
+ public void start() {
+ try {
+ } catch (Exception e) {
+ logger.error("丽知:OFS实物组套--->U8C成套件档案,start()方法报错:", e);
+ }
+ }
+
+ public void start(String SkuCode) {
+ try {
+ QueryOfsKitRequestVO queryOfsKitRequestVO = new QueryOfsKitRequestVO();
+ queryOfsKitRequestVO.setSkuCode(SkuCode);
+ List ofsKits = queryOfsKits(queryOfsKitRequestVO);
+ if(ofsKits.size()==0){
+ Assert.state(false,"根据OFS实物组套sku编码:{},未查询到OFS实物组套,请检查。",SkuCode);
+ }
+ //过滤
+ List filterKits = filterData(ofsKits);
+ if(filterKits.size()==0){
+ Assert.state(false,"根据OFS实物组套sku编码:{},已被推送成功,请勿重新推送。",SkuCode);
+ }
+ //实现
+ implement(filterKits);
+ } catch (Exception e) {
+ logger.error("丽知:OFS实物组套--->U8C成套件档案,start(String SkuCode)方法报错:", e);
+ }
+ }
+
+ public void start(String startTime, String endTim) {
+ try {
+ } catch (Exception e) {
+ logger.error("丽知:OFS实物组套--->U8C成套件档案,start(String startTime, String endTim)方法报错:", e);
+ }
+ }
+
+
+ /**
+ * 过滤成功日志
+ *
+ * @param ofsKits
+ * @return
+ */
+ public List filterData(List ofsKits) {
+ List filterKits = new ArrayList<>();
+ for (OfsKitOrderSearchResponse.OfsKit ofsKit : ofsKits) {
+ String rootAppPk = ofsKit.getHeader().getSkuCode();
+ boolean isExis = true;
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setRootAppPk(rootAppPk);
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ List integrationTaskLivingDetailsEntities = iIntegrationTaskLivingDetailsDao.query(integrationTaskLivingDetailsEntity);
+ if (integrationTaskLivingDetailsEntities == null || integrationTaskLivingDetailsEntities.size() == 0) {
+ isExis = false;
+ }
+ if (!isExis) {
+ filterKits.add(ofsKit);
+ }
+ }
+ return filterKits;
+ }
+
+ /**
+ * 全公司分配,,,
+ *
+ * pk_corp 公司
+ * childsnum 父含子数
+ * partpercent 单件单价权数
+ * pk_invmandocpart 配件编码
+ * pk_invmandocset 成套件编码
+ * @param filterKits
+ */
+ public void implement(List filterKits){
+
+ //查询所有公司
+ List bdCorpEntities = queryU8CEntityUtil.queryBdCorp();
+ System.out.println(bdCorpEntities);
+
+ //ofsKit列表
+ for (OfsKitOrderSearchResponse.OfsKit ofsKit : filterKits) {
+ System.out.println(ofsKit);
+
+ String mapStr="";
+ String response="";
+ String format=ofsKit.getHeader().getLastUpdated();
+
+
+ List setpartVOS=new ArrayList<>();
+ try {
+ //ofsKit表体
+ for (OfsKitOrderSearchResponse.OfsKit.KitDetail detail : ofsKit.getDetails()) {
+ //每个物料,给每个公司一份
+ for (BdCorpEntity bdCorpEntity : bdCorpEntities) {
+ SetpartVO setpart = new SetpartVO();
+ //pk_invmandocset 成套件编码
+ setpart.setPk_invmandocset(ofsKit.getHeader().getSkuCode());
+ //pk_invmandocpart 配件编码
+ setpart.setPk_invmandocpart(detail.getSkuCode());
+ //childsnum 父含子数
+ setpart.setChildsnum(detail.getQuantity());
+ //partpercent 单件单价权数,妮妮姐说的:全传1
+ setpart.setPartpercent("1");
+ //pk_corp 公司
+ setpart.setPk_corp(bdCorpEntity.getUnitcode());
+ setpartVOS.add(setpart);
+ }
+
+ }
+
+ System.out.println(setpartVOS);
+ System.out.println(JSONUtil.toJsonStr(setpartVOS));
+ String jsonStr = JSONUtil.toJsonStr(setpartVOS);
+
+ mapStr= "{\"setpartvo\":" + jsonStr + "}";
+ ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("setpartInsertCode"), mapStr);
+ //两层判断,一层中台转发,一层u8c返回
+ Attribute attribute = ztResult.getAttribute();
+ if ("false".equals(ztResult.getFlag())) {
+ //转发失败
+ response=JSONUtil.toJsonStr(ztResult.getAttribute());
+ Assert.state(false, "丽知:丽知:OFS实物组套--->U8C成套件档案,中台转发失败,失败原因:{}", ztResult.getAttribute());
+ }
+ boolean isSuccess = false;
+ if ("success".equals(attribute.getStatus())) {
+ isSuccess = true;
+ String data = attribute.getData();
+ }
+ if (!isSuccess) {
+ Assert.state(false, "丽知:丽知:OFS实物组套--->U8C成套件档案 失败 接口返回结果:{} 接口入参:{}", attribute.getErrormsg(), mapStr);
+ }
+ //成功
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_Y);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(attribute.getData());
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(ofsKit.getHeader().getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(ofsKit.getHeader().getSkuCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ integrationTaskLivingDetailsEntity.setDef1(ofsKit.getHeader().getId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }catch (Exception e){
+ e.printStackTrace();
+ logger.error("推送U8C,丽知:OFS实物组套--->U8C成套件档案失败,失败原因:" + e);
+ ReusltStrDto reusltStrDto = JSON.parseObject(response, ReusltStrDto.class);
+ String ErrMessage = "推送U8C,丽知:OFS实物组套--->U8C成套件档案失败,失败原因:" + reusltStrDto.getErrormsg();
+ //失败
+ IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
+ integrationTaskLivingDetailsEntity.setNewState(ProfilesActiveConstant.LOG_STATUS_N);
+ integrationTaskLivingDetailsEntity.setRootAppNewData(mapStr);
+ integrationTaskLivingDetailsEntity.setNewTransmitInfo(ErrMessage);
+ integrationTaskLivingDetailsEntity.setNewPushDate(new Date());
+ integrationTaskLivingDetailsEntity.setBusinessDate(format);
+ integrationTaskLivingDetailsEntity.setRootAppPk(ofsKit.getHeader().getSkuCode());
+ integrationTaskLivingDetailsEntity.setRootAppBill(ofsKit.getHeader().getSkuCode());
+ integrationTaskLivingDetailsEntity.setPluginId(getPluginId());
+ integrationTaskLivingDetailsEntity.setDef1(ofsKit.getHeader().getId());
+ saveOrUpdateBusinessLogUtil.saveOrUpdate(integrationTaskLivingDetailsEntity);
+ }
+ }
+
+
+ }
+
+
+ public List queryOfsKits(QueryOfsKitRequestVO queryOfsKitRequestVO) throws Exception {
+ int pageNo = 1;
+ int pageSize = 500;
+
+ List all = new ArrayList<>();
+
+ InterfaceParamByU8CApiDto interfaceParamDto = new InterfaceParamByU8CApiDto();
+ interfaceParamDto.setApi("ofs.actual.bom.search");
+ queryOfsKitRequestVO.setClientCode("LETS");
+ queryOfsKitRequestVO.setPageNo(String.valueOf(pageNo));
+ queryOfsKitRequestVO.setPageSize(String.valueOf(pageSize));
+ interfaceParamDto.setData(JSON.toJSONString(queryOfsKitRequestVO));
+ OfsKitOrderSearchResponse ofsKitOrderSearchResponse = (OfsKitOrderSearchResponse) ofsUnifiedService.unifiedByU8CApi(interfaceParamDto);
+ System.out.println(ofsKitOrderSearchResponse);
+
+ all.addAll(ofsKitOrderSearchResponse.getData());
+
+ int count = ofsKitOrderSearchResponse.getData().size();
+
+ while (count >= pageSize) {//>=500,可能还有下一页。
+ //还有下一页
+ pageNo++;
+ queryOfsKitRequestVO.setPageNo(String.valueOf(pageNo));
+ interfaceParamDto.setData(JSON.toJSONString(queryOfsKitRequestVO));
+ OfsKitOrderSearchResponse ofsKitOrderSearchResponse1 = (OfsKitOrderSearchResponse) ofsUnifiedService.unifiedByU8CApi(interfaceParamDto);
+
+ all.addAll(ofsKitOrderSearchResponse1.getData());
+ count = ofsKitOrderSearchResponse1.getData().size();
+ }
+ if (all == null || all.size() == 0) {
+ return null;
+ }
+ return all;
+ }
+}
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/SetpartVO.java b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/SetpartVO.java
new file mode 100644
index 00000000..8f6d640d
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/lets/u8cdto/SetpartVO.java
@@ -0,0 +1,20 @@
+package com.hzya.frame.plugin.lets.u8cdto;
+
+import lombok.Data;
+
+/**
+ * U8C成套件信息
+ */
+@Data
+public class SetpartVO {
+ /** 父含子数 */
+ private String childsnum;
+ /** 单件单价权数 */
+ private String partpercent;
+ /** 公司 */
+ private String pk_corp;
+ /** 配件编码 */
+ private String pk_invmandocpart;
+ /** 成套件编码 */
+ private String pk_invmandocset;
+}
diff --git a/buildpackage/src/main/resources/cfgHome/plugin/lets/spring/spring-lets-plugin.xml b/buildpackage/src/main/resources/cfgHome/plugin/lets/spring/spring-lets-plugin.xml
index a7969101..dfdcbf64 100644
--- a/buildpackage/src/main/resources/cfgHome/plugin/lets/spring/spring-lets-plugin.xml
+++ b/buildpackage/src/main/resources/cfgHome/plugin/lets/spring/spring-lets-plugin.xml
@@ -11,6 +11,7 @@
+
diff --git a/service/src/main/java/com/hzya/frame/ttxofs/basics/ApiDtoCacheMap.java b/service/src/main/java/com/hzya/frame/ttxofs/basics/ApiDtoCacheMap.java
index 67b37742..e1ee7f0b 100644
--- a/service/src/main/java/com/hzya/frame/ttxofs/basics/ApiDtoCacheMap.java
+++ b/service/src/main/java/com/hzya/frame/ttxofs/basics/ApiDtoCacheMap.java
@@ -1,5 +1,6 @@
package com.hzya.frame.ttxofs.basics;
+import com.hzya.frame.ttxofs.dto.kit.OfsKitOrderSearchResponse;
import com.hzya.frame.ttxofs.dto.ofsBaseSearch.OFSSKUClassSearchResponse;
import com.hzya.frame.ttxofs.dto.ofsBaseSearch.OFSSKUSearchResponse;
import com.hzya.frame.ttxofs.dto.ofsBaseSearch.OfsShopReturnMessageDto;
@@ -42,6 +43,8 @@ public class ApiDtoCacheMap {
apiDtoCacheMap.put("ofs.sku.search", new OFSSKUSearchResponse());//OFS存货档案查询接口
apiDtoCacheMap.put("ofs.inventory.class.search", new OFSSKUClassSearchResponse());//OFS存货分类查询接口
+ apiDtoCacheMap.put("ofs.actual.bom.search", new OfsKitOrderSearchResponse());//OFS实物组套查询接口
+
apiDtoCacheMap.put("ofs.returnOrder.search", new RerturnGoodsOrderSearchJsonRootBean());//售后订单
apiDtoCacheMap.put("ofs.purchaseOrder.search", new OfsPoOrderBean());//采购订单
diff --git a/service/src/main/java/com/hzya/frame/ttxofs/dto/kit/OfsKitOrderSearchResponse.java b/service/src/main/java/com/hzya/frame/ttxofs/dto/kit/OfsKitOrderSearchResponse.java
new file mode 100644
index 00000000..89fbe959
--- /dev/null
+++ b/service/src/main/java/com/hzya/frame/ttxofs/dto/kit/OfsKitOrderSearchResponse.java
@@ -0,0 +1,52 @@
+package com.hzya.frame.ttxofs.dto.kit;
+
+import com.hzya.frame.ttxofs.basics.ReturnMessageBasics;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ofs实物组套查询响应结果
+ */
+@Data
+public class OfsKitOrderSearchResponse extends ReturnMessageBasics {
+ public List data;
+
+ @Data
+ public static class OfsKit {
+ public KitHeader header;
+ public List details;
+
+ @Data
+ public static class KitHeader {
+ private String id;
+ private String clientCode;
+ private String companyCode;
+ private String skuCode;
+ private String skuName;
+ private String finishedGoodsQty;
+ private String status;
+ private String bomType;
+ private String buildInstructions;
+ private String created;
+ private String createdBy;
+ private String lastUpdated;
+ private String lastUpdatedBy;
+ }
+
+ @Data
+ public static class KitDetail {
+ private String id;
+ private String clientCode;
+ private String companyCode;
+ private String skuCode;
+ private String skuName;
+ private String quantityUM;
+ private String quantity;
+ private String created;
+ private String createdBy;
+ private String lastUpdated;
+ private String lastUpdatedBy;
+ }
+ }
+}