diff --git a/base-buildpackage/pom.xml b/base-buildpackage/pom.xml
index 3285a2d9..bb6bacf6 100644
--- a/base-buildpackage/pom.xml
+++ b/base-buildpackage/pom.xml
@@ -18,6 +18,11 @@
base-webapp
${revision}
+
+ com.hzya.frame
+ fw-u8
+ ${revision}
+
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/IZjMaterielSynchronizationEventDao.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/IZjMaterielSynchronizationEventDao.java
new file mode 100644
index 00000000..e1d32645
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/IZjMaterielSynchronizationEventDao.java
@@ -0,0 +1,22 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.dao;
+
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.entity.ZjMaterielSynchronizationEventEntity;
+import com.hzya.frame.u8.base.inventory.entity.InventoryEntity;
+
+import java.util.List;
+
+/****
+ * 物料档案同步插件
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2025-03-03 10:57
+ * @param
+ * @return
+ **/
+public interface IZjMaterielSynchronizationEventDao extends IBaseDao {
+
+ List queryInventoryEntity(List list,String dataSourceCode);
+}
+
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/impl/ZjMaterielSynchronizationEventDaoImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/impl/ZjMaterielSynchronizationEventDaoImpl.java
new file mode 100644
index 00000000..a6485c53
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/dao/impl/ZjMaterielSynchronizationEventDaoImpl.java
@@ -0,0 +1,28 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.dao.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.dao.IZjMaterielSynchronizationEventDao;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.entity.ZjMaterielSynchronizationEventEntity;
+import com.hzya.frame.seeyon.entity.SeeyonEntity;
+import com.hzya.frame.u8.base.inventory.entity.InventoryEntity;
+
+import java.util.List;
+
+/***
+ * 物料档案同步
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2025-03-03 11:12
+ * @param
+ * @return
+ **/
+public class ZjMaterielSynchronizationEventDaoImpl extends MybatisGenericDao implements IZjMaterielSynchronizationEventDao {
+
+ @Override
+ @DS("#dataSourceCode")
+ public List queryInventoryEntity(List list,String dataSourceCode) {
+ return (List) super.selectList(getSqlIdPrifx() + "queryInventoryEntity",list);
+ }
+}
+
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.java
new file mode 100644
index 00000000..b3c44175
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.java
@@ -0,0 +1,504 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/****
+ * 物料档案实体类
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2025-03-03 10:53
+ * @param
+ * @return
+ **/
+public class ZjMaterielSynchronizationEventEntity extends BaseEntity {
+
+
+ private String formmain_id;//主表id
+ private String field0004;//序号1
+ private String field0038;//是否更新
+ private String field0038code;//是否更新
+ private String field0005;//货品编码/存货编码/物料编码
+ private String field0006;//货品名称/物料名称
+ private String field0007;//货品规格型号
+ private String field0008;//品牌
+ private String field0008code;//品牌
+ private String field0009;//规格书
+ private String field0009code;//规格书
+ private String field0010;//环保报告
+ private String field0010code;//环保报告
+ private String field0011;//ERP中相同型号不同品牌的编码
+ private String field0012;//优选等级
+ private String field0012code;//优选等级
+ private String field0013;//适用产品
+ private String field0014;//产品分类
+ private String field0014code;//产品分类
+ private String field0015;//备注
+ private String field0016;//最小包装量
+ private String field0017;//封装分类
+ private String field0017code;//封装分类
+ private String field0018;//申请原因
+ private String field0018code;//申请原因
+ private String field0019;//潮敏等级
+ private String field0019code;//潮敏等级
+ private String field0020;//是否退税软件
+ private String field0020code;//是否退税软件
+ private String field0022;//是否委外
+ private String field0022code;//是否委外
+ private String field0030;//上传附件1
+ private String field0031;//上传附件2
+ private String field0032;//负责人
+ private String field0032code;//负责人
+ private String field0033;//产品阶段
+ private String field0033code;//产品阶段
+ private String field0034;//客户名
+ private String field0034code;//客户名
+ private String field0035;//是否带入档案
+ private String field0035code;//是否带入档案
+ private String field0039;//开发号
+ private String field0040;//仓库名称
+ private String field0040code;//仓库名称
+ private String field0042;//物料属性
+ private String field0042code;//物料属性
+ private String field0043;//物料中类编码/存货分类/物料分类
+ private String field0043code;//物料中类编码/存货分类/物料分类
+ private String field0044;//物料一级分类
+ private String field0045;//货品代码
+ private String field0047;//物料类别
+ private String field0047code;//物料类别
+ private String field0048;//计量单位
+ private String field0048code;//计量单位
+
+
+ public String getFormmain_id() {
+ return formmain_id;
+ }
+
+ public void setFormmain_id(String formmain_id) {
+ this.formmain_id = formmain_id;
+ }
+
+ public String getField0004() {
+ return field0004;
+ }
+
+ public void setField0004(String field0004) {
+ this.field0004 = field0004;
+ }
+
+ public String getField0038() {
+ return field0038;
+ }
+
+ public void setField0038(String field0038) {
+ this.field0038 = field0038;
+ }
+
+ public String getField0038code() {
+ return field0038code;
+ }
+
+ public void setField0038code(String field0038code) {
+ this.field0038code = field0038code;
+ }
+
+ public String getField0005() {
+ return field0005;
+ }
+
+ public void setField0005(String field0005) {
+ this.field0005 = field0005;
+ }
+
+ public String getField0006() {
+ return field0006;
+ }
+
+ public void setField0006(String field0006) {
+ this.field0006 = field0006;
+ }
+
+ public String getField0007() {
+ return field0007;
+ }
+
+ public void setField0007(String field0007) {
+ this.field0007 = field0007;
+ }
+
+ public String getField0008() {
+ return field0008;
+ }
+
+ public void setField0008(String field0008) {
+ this.field0008 = field0008;
+ }
+
+ public String getField0008code() {
+ return field0008code;
+ }
+
+ public void setField0008code(String field0008code) {
+ this.field0008code = field0008code;
+ }
+
+ public String getField0009() {
+ return field0009;
+ }
+
+ public void setField0009(String field0009) {
+ this.field0009 = field0009;
+ }
+
+ public String getField0009code() {
+ return field0009code;
+ }
+
+ public void setField0009code(String field0009code) {
+ this.field0009code = field0009code;
+ }
+
+ public String getField0010() {
+ return field0010;
+ }
+
+ public void setField0010(String field0010) {
+ this.field0010 = field0010;
+ }
+
+ public String getField0010code() {
+ return field0010code;
+ }
+
+ public void setField0010code(String field0010code) {
+ this.field0010code = field0010code;
+ }
+
+ public String getField0011() {
+ return field0011;
+ }
+
+ public void setField0011(String field0011) {
+ this.field0011 = field0011;
+ }
+
+ public String getField0012() {
+ return field0012;
+ }
+
+ public void setField0012(String field0012) {
+ this.field0012 = field0012;
+ }
+
+ public String getField0012code() {
+ return field0012code;
+ }
+
+ public void setField0012code(String field0012code) {
+ this.field0012code = field0012code;
+ }
+
+ public String getField0013() {
+ return field0013;
+ }
+
+ public void setField0013(String field0013) {
+ this.field0013 = field0013;
+ }
+
+ public String getField0014() {
+ return field0014;
+ }
+
+ public void setField0014(String field0014) {
+ this.field0014 = field0014;
+ }
+
+ public String getField0014code() {
+ return field0014code;
+ }
+
+ public void setField0014code(String field0014code) {
+ this.field0014code = field0014code;
+ }
+
+ public String getField0015() {
+ return field0015;
+ }
+
+ public void setField0015(String field0015) {
+ this.field0015 = field0015;
+ }
+
+ public String getField0016() {
+ return field0016;
+ }
+
+ public void setField0016(String field0016) {
+ this.field0016 = field0016;
+ }
+
+ public String getField0017() {
+ return field0017;
+ }
+
+ public void setField0017(String field0017) {
+ this.field0017 = field0017;
+ }
+
+ public String getField0017code() {
+ return field0017code;
+ }
+
+ public void setField0017code(String field0017code) {
+ this.field0017code = field0017code;
+ }
+
+ public String getField0018() {
+ return field0018;
+ }
+
+ public void setField0018(String field0018) {
+ this.field0018 = field0018;
+ }
+
+ public String getField0018code() {
+ return field0018code;
+ }
+
+ public void setField0018code(String field0018code) {
+ this.field0018code = field0018code;
+ }
+
+ public String getField0019() {
+ return field0019;
+ }
+
+ public void setField0019(String field0019) {
+ this.field0019 = field0019;
+ }
+
+ public String getField0019code() {
+ return field0019code;
+ }
+
+ public void setField0019code(String field0019code) {
+ this.field0019code = field0019code;
+ }
+
+ public String getField0020() {
+ return field0020;
+ }
+
+ public void setField0020(String field0020) {
+ this.field0020 = field0020;
+ }
+
+ public String getField0020code() {
+ return field0020code;
+ }
+
+ public void setField0020code(String field0020code) {
+ this.field0020code = field0020code;
+ }
+
+ public String getField0022() {
+ return field0022;
+ }
+
+ public void setField0022(String field0022) {
+ this.field0022 = field0022;
+ }
+
+ public String getField0022code() {
+ return field0022code;
+ }
+
+ public void setField0022code(String field0022code) {
+ this.field0022code = field0022code;
+ }
+
+ public String getField0030() {
+ return field0030;
+ }
+
+ public void setField0030(String field0030) {
+ this.field0030 = field0030;
+ }
+
+ public String getField0031() {
+ return field0031;
+ }
+
+ public void setField0031(String field0031) {
+ this.field0031 = field0031;
+ }
+
+ public String getField0032() {
+ return field0032;
+ }
+
+ public void setField0032(String field0032) {
+ this.field0032 = field0032;
+ }
+
+ public String getField0032code() {
+ return field0032code;
+ }
+
+ public void setField0032code(String field0032code) {
+ this.field0032code = field0032code;
+ }
+
+ public String getField0033() {
+ return field0033;
+ }
+
+ public void setField0033(String field0033) {
+ this.field0033 = field0033;
+ }
+
+ public String getField0033code() {
+ return field0033code;
+ }
+
+ public void setField0033code(String field0033code) {
+ this.field0033code = field0033code;
+ }
+
+ public String getField0034() {
+ return field0034;
+ }
+
+ public void setField0034(String field0034) {
+ this.field0034 = field0034;
+ }
+
+ public String getField0034code() {
+ return field0034code;
+ }
+
+ public void setField0034code(String field0034code) {
+ this.field0034code = field0034code;
+ }
+
+ public String getField0035() {
+ return field0035;
+ }
+
+ public void setField0035(String field0035) {
+ this.field0035 = field0035;
+ }
+
+ public String getField0035code() {
+ return field0035code;
+ }
+
+ public void setField0035code(String field0035code) {
+ this.field0035code = field0035code;
+ }
+
+ public String getField0039() {
+ return field0039;
+ }
+
+ public void setField0039(String field0039) {
+ this.field0039 = field0039;
+ }
+
+ public String getField0040() {
+ return field0040;
+ }
+
+ public void setField0040(String field0040) {
+ this.field0040 = field0040;
+ }
+
+ public String getField0040code() {
+ return field0040code;
+ }
+
+ public void setField0040code(String field0040code) {
+ this.field0040code = field0040code;
+ }
+
+ public String getField0042() {
+ return field0042;
+ }
+
+ public void setField0042(String field0042) {
+ this.field0042 = field0042;
+ }
+
+ public String getField0042code() {
+ return field0042code;
+ }
+
+ public void setField0042code(String field0042code) {
+ this.field0042code = field0042code;
+ }
+
+ public String getField0043() {
+ return field0043;
+ }
+
+ public void setField0043(String field0043) {
+ this.field0043 = field0043;
+ }
+
+ public String getField0044() {
+ return field0044;
+ }
+
+ public void setField0044(String field0044) {
+ this.field0044 = field0044;
+ }
+
+ public String getField0045() {
+ return field0045;
+ }
+
+ public void setField0045(String field0045) {
+ this.field0045 = field0045;
+ }
+
+ public String getField0047() {
+ return field0047;
+ }
+
+ public void setField0047(String field0047) {
+ this.field0047 = field0047;
+ }
+
+ public String getField0047code() {
+ return field0047code;
+ }
+
+ public void setField0047code(String field0047code) {
+ this.field0047code = field0047code;
+ }
+
+ public String getField0048() {
+ return field0048;
+ }
+
+ public void setField0048(String field0048) {
+ this.field0048 = field0048;
+ }
+
+ public String getField0048code() {
+ return field0048code;
+ }
+
+ public void setField0048code(String field0048code) {
+ this.field0048code = field0048code;
+ }
+
+ public String getField0043code() {
+ return field0043code;
+ }
+
+ public void setField0043code(String field0043code) {
+ this.field0043code = field0043code;
+ }
+}
+
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.xml b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.xml
new file mode 100644
index 00000000..3cb5bade
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/entity/ZjMaterielSynchronizationEventEntity.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/plugin/ZjMaterielSynchronizationEventPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/plugin/ZjMaterielSynchronizationEventPluginInitializer.java
new file mode 100644
index 00000000..62ce67a6
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/plugin/ZjMaterielSynchronizationEventPluginInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.service.IZjMaterielSynchronizationEventService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 物料同步
+ *
+ * @author makejava
+ * @since 2024-06-21 13:52:35
+ */
+public class ZjMaterielSynchronizationEventPluginInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(ZjMaterielSynchronizationEventPluginInitializer.class);
+ @Autowired
+ private IZjMaterielSynchronizationEventService zjMaterielSynchronizationEventService;
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "执行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "执行销毁方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "ZjMaterielSynchronizationEventPluginInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "同步物料档案数据插件";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "ZjMaterielSynchronizationEventPluginInitializer";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) {
+ try {
+ logger.info("======开始执行物料档案同步========");
+ return zjMaterielSynchronizationEventService.materielSynchronization(requestJson);
+ } catch (Exception e) {
+ logger.info("======物料档案同步失败:{}========", e.getMessage());
+ return BaseResult.getFailureMessageEntity("======物料档案同步失败:{}========", e.getMessage());
+ }
+ }
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/IZjMaterielSynchronizationEventService.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/IZjMaterielSynchronizationEventService.java
new file mode 100644
index 00000000..3f2977ff
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/IZjMaterielSynchronizationEventService.java
@@ -0,0 +1,27 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.entity.ZjMaterielSynchronizationEventEntity;
+import com.hzya.frame.web.entity.JsonResultEntity;
+
+/***
+ * 物料档案同步插件
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2025-03-03 10:55
+ * @param
+ * @return
+ **/
+public interface IZjMaterielSynchronizationEventService extends IBaseService {
+
+
+ /**
+ * @param requestJson
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ * @Author lvleigang
+ * @Description 物料档案同步
+ * @Date 11:39 上午 2025/3/17
+ **/
+ JsonResultEntity materielSynchronization(JSONObject requestJson);
+}
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/impl/ZjMaterielSynchronizationEventServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/impl/ZjMaterielSynchronizationEventServiceImpl.java
new file mode 100644
index 00000000..f2a3bca6
--- /dev/null
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/zjmaterielsynchronizationevent/service/impl/ZjMaterielSynchronizationEventServiceImpl.java
@@ -0,0 +1,271 @@
+package com.hzya.frame.plugin.zjmaterielsynchronizationevent.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.dao.IZjMaterielSynchronizationEventDao;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.entity.ZjMaterielSynchronizationEventEntity;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.service.IZjMaterielSynchronizationEventService;
+import com.hzya.frame.u8.base.inventory.entity.InventoryEntity;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+
+/***
+ * 物料档案同步插件
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2025-03-03 10:56
+ * @param
+ * @return
+ **/
+public class ZjMaterielSynchronizationEventServiceImpl extends BaseService implements IZjMaterielSynchronizationEventService {
+
+ private IZjMaterielSynchronizationEventDao zjMaterielSynchronizationEventDao;
+
+ @Autowired
+ public void setZjMaterielSynchronizationEventDao(IZjMaterielSynchronizationEventDao zjMaterielSynchronizationEventDao) {
+ this.zjMaterielSynchronizationEventDao = zjMaterielSynchronizationEventDao;
+ this.dao = zjMaterielSynchronizationEventDao;
+ }
+
+ private String zjoa = "zjoa";
+ private String zju8 = "zju8";
+
+ /**
+ * @param requestJson
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ * @Author lvleigang
+ * @Description 物料档案同步
+ * @Date 11:39 上午 2025/3/17
+ **/
+ @Override
+ public JsonResultEntity materielSynchronization(JSONObject requestJson) {
+ JSONObject reqJson = new JSONObject();
+ JSONObject jsonStr = requestJson.getJSONObject("jsonStr");
+ JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr");
+ String formAppId = requestJson.getString("formAppId");
+ String eventType = requestJson.getString("eventType");
+ switch (eventType) {
+ case "onBeforeStart"://发起前事件,验证物料重复
+ String formmain_id = getFormmain_id(businessDataStr);
+ if(formmain_id == null || "".equals(formmain_id)){
+ return BaseResult.getFailureMessageEntity("onBeforeStart流程监听事件,未获取到主表id");
+ }
+ ZjMaterielSynchronizationEventEntity entity = new ZjMaterielSynchronizationEventEntity();
+ entity.setFormmain_id(formmain_id);
+ entity.setDataSourceCode(zjoa);
+ List list = zjMaterielSynchronizationEventDao.query(entity);
+ if(list == null || list.size() == 0){
+ return BaseResult.getFailureMessageEntity("onBeforeStart流程监听事件,未获取到明细数据");
+ }
+ return checkData(list,false);
+ case "onProcessFinished"://流程结束事件,同步物料到U8C
+ String id = getFormmain_id(businessDataStr);
+ if(id == null || "".equals(id)){
+ return BaseResult.getFailureMessageEntity("onProcessFinished流程监听事件,未获取到主表id");
+ }
+ ZjMaterielSynchronizationEventEntity entity1 = new ZjMaterielSynchronizationEventEntity();
+ entity1.setFormmain_id(id);
+ entity1.setDataSourceCode(zjoa);
+ List list1 = zjMaterielSynchronizationEventDao.query(entity1);
+ if(list1 == null || list1.size() == 0){
+ return BaseResult.getFailureMessageEntity("onProcessFinished流程监听事件,未获取到明细数据");
+ }
+ JsonResultEntity jsonResultEntity = checkData(list1,true);
+ if(jsonResultEntity == null){
+ return BaseResult.getFailureMessageEntity("onProcessFinished流程监听事件,校验发生系统错误");
+ }
+ if(!jsonResultEntity.isFlag()){
+ return jsonResultEntity;
+ }
+ //组装数据,保存数据
+ saveMaterielToU8(list1);
+ //回写U8生成的编码
+ updateOaCode(list1);
+ return null;
+ case "onStart"://流程发起 oa数据重新排序
+ return BaseResult.getSuccessMessageEntity("排序暂不处理");
+ default:
+ return BaseResult.getFailureMessageEntity("未匹配到流程监听事件!当前传入的eventType:" + eventType);
+ }
+ }
+
+ /**
+ * @Author lvleigang
+ * @Description 回写U8生成的编码
+ * @Date 10:04 上午 2025/3/19
+ * @param list
+ * @return void
+ **/
+ private void updateOaCode(List list) {
+ }
+
+ /**
+ * @Author lvleigang
+ * @Description 组装数据,保存数据
+ * @Date 10:03 上午 2025/3/19
+ * @param list
+ * @return void
+ **/
+ private void saveMaterielToU8(List list) {
+ }
+
+ /**
+ * @Author lvleigang
+ * @Description 解析参数id
+ * @Date 11:38 上午 2025/3/18
+ * @param businessDataStr
+ * @return java.lang.String
+ **/
+ private String getFormmain_id(JSONObject businessDataStr) {
+ String id = null;
+ if(businessDataStr == null ){
+ return id;
+ }
+ JSONObject formmain_0274 = businessDataStr.getJSONObject("formmain_0274");
+ if(formmain_0274 == null){
+ return id;
+ }
+ id = formmain_0274.getString("id");
+ return id;
+ }
+
+ /**
+ * @Author lvleigang
+ * @Description 验证物料重复
+ * @Date 1:58 下午 2025/3/17
+ * @param list 数据
+ * @param flag 该项是否校验
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ **/
+ private JsonResultEntity checkData(List list, boolean flag) {
+ // 定义正则表达式,匹配全角符号
+ String regex = "[\uFF00-\uFFEF]";
+ // 编译正则表达式
+ Pattern pattern = Pattern.compile(regex);
+ Integer num = 0;
+ Integer num1 = 0;
+ /*
+ 1、必填校验:发起
+ 物料中类、货品编码(修改必填)
+ 保存
+ 物料中类、货品编码(修改必填)、货品代码、品牌、客户名、优选等级、开发号、物料属性、是否委外
+ 2、物料编码和货品代码不为空时,判断两个是否一样
+ 3、判断存货分类里面如果有6或7,有一个必须有另一个
+ 4、规格型号正则校验(不允许全角符号)
+ 5、发起、保存判断物料分类是否在U8中存在
+ */
+ for (int i = 0; i < list.size(); i++) {
+ ZjMaterielSynchronizationEventEntity entity = list.get(i);
+ if(entity.getField0004() == null || "".equals(entity.getField0004())){
+ return BaseResult.getFailureMessageEntity("序号为空");
+ }
+ if(entity.getField0043code() == null || "".equals(entity.getField0043code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的物料中类为空");
+ }else {
+ //判断存货分类里面如果有6或7,有一个必须有另一个
+ if(entity.getField0043code().startsWith("6")){
+ num++;
+ }
+ if(entity.getField0043code().startsWith("7")){
+ num1++;
+ }
+ }
+ if(entity.getField0018code() == null || "".equals(entity.getField0018code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的申请原因为空");
+ }
+ if("修改".equals(entity.getField0018code())){
+ if(entity.getField0005() == null || "".equals(entity.getField0005())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的货品编码为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0045() == null || "".equals(entity.getField0045())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的货品代码为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0008code() == null || "".equals(entity.getField0008code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的品牌为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0034code() == null || "".equals(entity.getField0034code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的客户名为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0012code() == null || "".equals(entity.getField0012code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的优选等级为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0039() == null || "".equals(entity.getField0039())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的开发号为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0042code() == null || "".equals(entity.getField0042code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的物料属性为空");
+ }
+ }
+ if(flag){
+ if(entity.getField0022code() == null || "".equals(entity.getField0022code())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的是否委外为空");
+ }
+ }
+ //物料编码和货品代码不为空时,判断两个是否一样
+ if(entity.getField0005() != null && !"".equals(entity.getField0005())
+ && entity.getField0045() != null && !"".equals(entity.getField0045())){
+ if(!entity.getField0005().equals(entity.getField0045())){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的物料编码和货品代码不一致");
+ }
+ }
+ //规格型号正则校验(不允许全角符号)
+ if(entity.getField0007() != null && !"".equals(entity.getField0007())){
+ if(pattern.matcher(entity.getField0007()).find()){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的规格型号包含全角符号");
+ }
+ }
+ }
+ //判断存货分类里面如果有6或7,有一个必须有另一个
+ if(num > 0){
+ if(num1 == 0){
+ return BaseResult.getFailureMessageEntity("存货分类存在6,不存在7");
+ }
+ }
+ if(num1 > 0){
+ if(num == 0){
+ return BaseResult.getFailureMessageEntity("存货分类存在7,不存在6");
+ }
+ }
+ //查询u8物料
+ List inventoryEntities = zjMaterielSynchronizationEventDao.queryInventoryEntity(list,zju8);
+ if(inventoryEntities == null || inventoryEntities.size() == 0){
+ return BaseResult.getFailureMessageEntity("物料分类在U8中不存在");
+ }
+ //发起、保存判断物料分类是否在U8中存在
+ for (int i = 0; i < list.size(); i++) {
+ ZjMaterielSynchronizationEventEntity entity = list.get(i);
+ boolean flags = false;
+ for (int i1 = 0; i1 < inventoryEntities.size(); i1++) {
+ if(entity.getField0043code().equals(inventoryEntities.get(i1).getcInvCode())){
+ flags = true;
+ break;
+ }
+ }
+ if(!flags){
+ return BaseResult.getFailureMessageEntity("序号为"+entity.getField0004()+"明细行的物料分类在U8中不存在");
+ }
+ }
+ return BaseResult.getSuccessMessageEntity("校验成功");
+ }
+
+
+}
diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/pluginCfg.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/pluginCfg.xml
new file mode 100644
index 00000000..14946798
--- /dev/null
+++ b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/pluginCfg.xml
@@ -0,0 +1,6 @@
+
+
+ZjMaterielSynchronizationEventPluginInitializer
+ZjMaterielSynchronizationEventPluginInitializer插件
+202503170010
+
diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-dao.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-dao.xml
new file mode 100644
index 00000000..daa432bd
--- /dev/null
+++ b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-dao.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-plugin.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-plugin.xml
new file mode 100644
index 00000000..64a0ad65
--- /dev/null
+++ b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-plugin.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-service.xml b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-service.xml
new file mode 100644
index 00000000..6f594bb7
--- /dev/null
+++ b/base-buildpackage/src/main/resources/cfgHome/plugin/zjmaterielsynchronizationevent/spring/spring-buildpackage-service.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
index 825925b0..e8007420 100644
--- a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
+++ b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java
@@ -1,7 +1,9 @@
package com.hzya.frame;
import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.plugin.zjmaterielsynchronizationevent.service.IZjMaterielSynchronizationEventService;
import com.hzya.frame.util.AESUtil;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
@@ -15,9 +17,11 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
+import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -30,8 +34,8 @@ import java.util.Map;
* @Author llg
* Date 2023/7/16 8:18 上午
*/
-//@RunWith(SpringRunner.class)
-//@SpringBootTest(classes = {WebappApplication.class})
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {WebappApplication.class})
public class temButtom {
@Test
@@ -142,5 +146,23 @@ public class temButtom {
return body.toString();
}
+ @Resource
+ private IZjMaterielSynchronizationEventService zjMaterielSynchronizationEventService;
+ @Test
+ public void wl() {
+ String str = "{\n" +
+ "\t\"businessDataStr\": \"{\\\"formId\\\":\\\"-3905612378317895950\\\",\\\"systemRelationRecords\\\":[],\\\"formmain_0274\\\":{\\\"field0029\\\":\\\"1421502140902557985\\\",\\\"id\\\":\\\"-1172979993326564802\\\",\\\"state\\\":0,\\\"modify_member_id\\\":\\\"1421502140902557985\\\",\\\"start_date\\\":\\\"2025-03-17 14:31:41\\\",\\\"field0021\\\":\\\"2025-03-17 00:00:00\\\",\\\"ratifyflag\\\":0,\\\"sort\\\":0,\\\"ratify_member_id\\\":\\\"0\\\",\\\"start_member_id\\\":\\\"1421502140902557985\\\",\\\"approve_member_id\\\":\\\"0\\\",\\\"finishedflag\\\":0,\\\"modify_date\\\":\\\"2025-03-17 14:32:08\\\"},\\\"formson_0275\\\":[{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0033\\\":\\\"-8742017848273975919\\\",\\\"field0012\\\":\\\"1992327618862992707\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"单面PCB\\\",\\\"field0007\\\":\\\"测试01\\\",\\\"field0008\\\":\\\"-7484130195468762590\\\",\\\"id\\\":\\\"5166621963325295705\\\",\\\"field0042\\\":\\\"2373467247970043294\\\",\\\"field0043\\\":\\\"12001-单面板\\\",\\\"field0022\\\":\\\"-2945823222932814225\\\",\\\"field0044\\\":\\\"1\\\",\\\"field0047\\\":\\\"7938221701373775446\\\",\\\"field0004\\\":\\\"1\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"sort\\\":\\\"1\\\",\\\"field0040\\\":\\\"3672918071318364920\\\",\\\"groupsort\\\":1,\\\"field0017\\\":\\\"-3057298014166890271\\\",\\\"field0018\\\":\\\"6370474688113429014\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0012\\\":\\\"4344562897656367384\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0015\\\":\\\"修改型号、品牌、工艺属性、仓库名称、优选等级、物料属性、吉朗单位\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"双面PCB\\\",\\\"field0007\\\":\\\"测试02\\\",\\\"field0008\\\":\\\"3945246438468764198\\\",\\\"id\\\":\\\"4426722915502541386\\\",\\\"field0042\\\":\\\"5516680321955287005\\\",\\\"field0043\\\":\\\"12003-双面板\\\",\\\"field0022\\\":\\\"-2945823222932814225\\\",\\\"field0044\\\":\\\"1\\\",\\\"field0047\\\":\\\"7938221701373775446\\\",\\\"field0004\\\":\\\"2\\\",\\\"field0048\\\":\\\"-4037029836424066587\\\",\\\"field0005\\\":\\\"12003000100\\\",\\\"sort\\\":\\\"2\\\",\\\"field0040\\\":\\\"-922480551664794340\\\",\\\"groupsort\\\":1,\\\"field0017\\\":\\\"-8754053652716436337\\\",\\\"field0018\\\":\\\"2022562015180964941\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0033\\\":\\\"-8742017848273975919\\\",\\\"field0012\\\":\\\"1992327618862992707\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"多层板\\\",\\\"field0007\\\":\\\"测试03\\\",\\\"field0008\\\":\\\"-7484130195468762590\\\",\\\"id\\\":\\\"6700217056720145510\\\",\\\"field0042\\\":\\\"2373467247970043294\\\",\\\"field0043\\\":\\\"12005-多层板\\\",\\\"field0022\\\":\\\"-2945823222932814225\\\",\\\"field0044\\\":\\\"1\\\",\\\"field0047\\\":\\\"7938221701373775446\\\",\\\"field0004\\\":\\\"3\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"field0005\\\":\\\"12005000101\\\",\\\"sort\\\":\\\"3\\\",\\\"field0040\\\":\\\"3672918071318364920\\\",\\\"groupsort\\\":1,\\\"field0017\\\":\\\"-3057298014166890271\\\",\\\"field0018\\\":\\\"-8051278170201109560\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0033\\\":\\\"1524430637576637930\\\",\\\"field0034\\\":\\\"1729652777585822779\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0015\\\":\\\"修改型号、开发号、产品阶段、客户名、仓库名称\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"遥控板\\\",\\\"field0007\\\":\\\"测试04\\\",\\\"id\\\":\\\"-1866281705366601123\\\",\\\"field0042\\\":\\\"5516680321955287005\\\",\\\"field0043\\\":\\\"62103-工业变频驱动板\\\",\\\"field0044\\\":\\\"6\\\",\\\"field0047\\\":\\\"-7621841196549452634\\\",\\\"field0004\\\":\\\"4\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"field0005\\\":\\\"62100000211\\\",\\\"sort\\\":\\\"4\\\",\\\"field0040\\\":\\\"736429965137036948\\\",\\\"groupsort\\\":1,\\\"field0039\\\":\\\"XM-20180038\\\",\\\"field0018\\\":\\\"2022562015180964941\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0012\\\":\\\"1992327618862992707\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"轻触开关\\\",\\\"field0007\\\":\\\"测试05\\\",\\\"field0008\\\":\\\"1901179953174168965\\\",\\\"id\\\":\\\"7404795553887307250\\\",\\\"field0042\\\":\\\"5516680321955287005\\\",\\\"field0043\\\":\\\"12600-轻触开关\\\",\\\"field0022\\\":\\\"-2945823222932814225\\\",\\\"field0044\\\":\\\"1\\\",\\\"field0047\\\":\\\"-7621841196549452634\\\",\\\"field0004\\\":\\\"5\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"field0005\\\":\\\"12600000111\\\",\\\"sort\\\":\\\"5\\\",\\\"field0040\\\":\\\"3672918071318364920\\\",\\\"groupsort\\\":1,\\\"field0017\\\":\\\"-8754053652716436337\\\",\\\"field0018\\\":\\\"-534873453094682532\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0033\\\":\\\"-8742017848273975919\\\",\\\"field0034\\\":\\\"-7717856120092735875\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"传感器板\\\",\\\"field0007\\\":\\\"测试06_RI\\\",\\\"id\\\":\\\"-2951518770830882969\\\",\\\"field0042\\\":\\\"5516680321955287005\\\",\\\"field0043\\\":\\\"62915-传感器板\\\",\\\"field0044\\\":\\\"6\\\",\\\"field0047\\\":\\\"-7621841196549452634\\\",\\\"field0004\\\":\\\"6\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"sort\\\":\\\"6\\\",\\\"field0040\\\":\\\"-922480551664794340\\\",\\\"groupsort\\\":1,\\\"field0039\\\":\\\"XM-20200034\\\",\\\"field0018\\\":\\\"6370474688113429014\\\"},{\\\"field0032\\\":\\\"1421502140902557985\\\",\\\"field0033\\\":\\\"-8742017848273975919\\\",\\\"field0034\\\":\\\"-7717856120092735875\\\",\\\"formmain_id\\\":\\\"-1172979993326564802\\\",\\\"field0013\\\":\\\"111\\\",\\\"field0038\\\":\\\"6978528383202511421\\\",\\\"field0006\\\":\\\"传感器板\\\",\\\"field0007\\\":\\\"测试06\\\",\\\"id\\\":\\\"1340651432790608074\\\",\\\"field0042\\\":\\\"5516680321955287005\\\",\\\"field0043\\\":\\\"72915-传感器板\\\",\\\"field0044\\\":\\\"7\\\",\\\"field0047\\\":\\\"-7621841196549452634\\\",\\\"field0004\\\":\\\"7\\\",\\\"field0048\\\":\\\"-2560084027973350816\\\",\\\"sort\\\":\\\"7\\\",\\\"field0040\\\":\\\"2317333171132055743\\\",\\\"groupsort\\\":1,\\\"field0039\\\":\\\"XM-20200034\\\",\\\"field0018\\\":\\\"6370474688113429014\\\"}],\\\"relationRecords\\\":[{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"5166621963325295705\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"3163007693784369626\\\",\\\"id\\\":\\\"-3977344269764441491\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"4426722915502541386\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"5448927498492528800\\\",\\\"id\\\":\\\"3574938246926517342\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"6700217056720145510\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"-768818563401364880\\\",\\\"id\\\":\\\"-8423571161708672740\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"-1866281705366601123\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"-9215057759836618178\\\",\\\"id\\\":\\\"3664856462452212445\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0039\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"-1866281705366601123\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9115049651476019855\\\",\\\"toFormId\\\":\\\"1384236263744228883\\\",\\\"toMasterDataId\\\":\\\"816438522350684751\\\",\\\"id\\\":\\\"-4632848363322718906\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"7404795553887307250\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"7941582905197678345\\\",\\\"id\\\":\\\"-6536401734594246184\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"-2951518770830882969\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"-3706538923009948594\\\",\\\"id\\\":\\\"4066538004526941978\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0039\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"-2951518770830882969\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9115049651476019855\\\",\\\"toFormId\\\":\\\"1384236263744228883\\\",\\\"toMasterDataId\\\":\\\"-7683158415127722983\\\",\\\"id\\\":\\\"-3215076937339025930\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0043\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"1340651432790608074\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9186490075385345640\\\",\\\"toFormId\\\":\\\"-1932967999249168761\\\",\\\"toMasterDataId\\\":\\\"5216419279699984943\\\",\\\"id\\\":\\\"4265259303971143729\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"},{\\\"toSubDataId\\\":\\\"\\\",\\\"formType\\\":\\\"42\\\",\\\"fromFormId\\\":\\\"-3905612378317895950\\\",\\\"fieldName\\\":\\\"field0039\\\",\\\"fromMasterDataId\\\":\\\"-1172979993326564802\\\",\\\"dataInfo\\\":\\\"{\\\\\\\"pcView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"phoneView\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"toVersion\\\\\\\":\\\\\\\"default_form\\\\\\\"}\\\",\\\"fromSubDataId\\\":\\\"1340651432790608074\\\",\\\"type\\\":\\\"1\\\",\\\"viewThrough\\\":\\\"0\\\",\\\"relationShipId\\\":\\\"-9115049651476019855\\\",\\\"toFormId\\\":\\\"1384236263744228883\\\",\\\"toMasterDataId\\\":\\\"-7683158415127722983\\\",\\\"id\\\":\\\"5954828029495822484\\\",\\\"memberId\\\":\\\"1421502140902557985\\\"}]}\",\n" +
+ "\t\"formApp\": \"5784297048514708594\",\n" +
+ "\t\"summaryId\": \"-2256569363321240680\",\n" +
+ "\t\"currentActivityId\": \"start\",\n" +
+ "\t\"eventType\": \"onProcessFinished\",\n" +
+ "\t\"id\": \"6178499685666669290\",\n" +
+ "\t\"affairId\": \"-1\"\n" +
+ "\n" +
+ "}";
+ JSONObject jsonStr = new JSONObject();
+ jsonStr.put("jsonStr",str);
+ zjMaterielSynchronizationEventService.materielSynchronization(jsonStr);
+ }
}
diff --git a/base-common/src/main/java/com/hzya/frame/datasource/DataSourceConfig.java b/base-common/src/main/java/com/hzya/frame/datasource/DataSourceConfig.java
index 79ec28a6..63da638b 100644
--- a/base-common/src/main/java/com/hzya/frame/datasource/DataSourceConfig.java
+++ b/base-common/src/main/java/com/hzya/frame/datasource/DataSourceConfig.java
@@ -106,12 +106,12 @@ public class DataSourceConfig {
**/
private static DruidDataSource createDefaultDataSource(JSONObject defaultDataSourceProperties) throws RuntimeException {
//根据datasource_code查询数据源配置信息
- String datasource_code = String.valueOf(defaultDataSourceProperties.get("datasource_code"));
- String source_url = String.valueOf(defaultDataSourceProperties.get("source_url"));
- String login_name = String.valueOf(defaultDataSourceProperties.get("login_name"));
- String password = String.valueOf(defaultDataSourceProperties.get("password"));
- String db_name = String.valueOf(defaultDataSourceProperties.get("db_name"));
- String source_type = String.valueOf(defaultDataSourceProperties.get("source_type"));
+ String datasource_code = defaultDataSourceProperties.getString("datasource_code");
+ String source_url = defaultDataSourceProperties.getString("source_url");
+ String login_name = defaultDataSourceProperties.getString("login_name");
+ String password = defaultDataSourceProperties.getString("password");
+ String db_name = defaultDataSourceProperties.getString("db_name");
+ String source_type = defaultDataSourceProperties.getString("source_type");
if (defaultDataSourceProperties != null) {
String driveClass = "";
if ("mysql".equalsIgnoreCase(source_type)) {
diff --git a/base-webapp/pom.xml b/base-webapp/pom.xml
index a2164734..f4acb5ab 100644
--- a/base-webapp/pom.xml
+++ b/base-webapp/pom.xml
@@ -65,6 +65,11 @@
${revision}
+
+ com.hzya.frame
+ fw-oa
+ ${revision}
+
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsGetOrderInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsGetOrderInitializer.java
new file mode 100644
index 00000000..c7fedb73
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsGetOrderInitializer.java
@@ -0,0 +1,128 @@
+package com.hzya.frame.plugin.ofs.plugin;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class OfsGetOrderInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(OfsGetOrderInitializer.class);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "ofsGetOrderInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "数据库备份下发";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "ofsGetOrderInitializer";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+
+
+ /**
+ * @Author lvleigang
+ * @Description 获取ofs订单数据
+ * @Date 3:12 下午 2024/10/24
+ * @param requestJson
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ **/
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) {
+
+ //System.out.println("获取ofs订单数据");
+ //System.out.println("获取ofs订单发送数据");
+ //QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
+ //queryOfsSoSaleOutVo.setPageNo(1L);
+ //queryOfsSoSaleOutVo.setPageSize(200L);
+ ////queryOfsSoSaleOutVo.setCode("123123123");
+ //queryOfsSoSaleOutVo.setCreated_start("2024-10-24 01:00:00");
+ //queryOfsSoSaleOutVo.setCreated_end("2024-10-24 17:00:00");
+ //queryOfsSoSaleOutVo.setClientCode("LETS");
+ //String data = JSON.toJSONString(queryOfsSoSaleOutVo);
+ ////2024年7月30日 12:16:38生成签名
+ //OfsHexUtil ofsHexUtil = new OfsHexUtil();
+ //String timestamp = String.valueOf(System.currentTimeMillis());
+ //Map params = new HashMap<>();
+ //params.put("data", data);
+ //String sign = ofsHexUtil.sign("ofs.salesOrder.search", data,"json", "1023142858", "1.0", "382e4a2584027a36ac9431103", timestamp);
+ //String url = "http://39.98.58.229/api/edi/u8c/ofs/in?api=ofs.salesOrder.search&format=json&appKey=1023142858&v=1.0&sign="+sign+"×tamp="+timestamp;
+ //
+ //String returnData = postParams(url,params);
+
+
+ return BaseResult.getSuccessMessageEntity("获取成功");
+
+ }
+ //适用于post请求并传送form-data数据(同样适用于post的Raw类型的application-json格式)
+ public String postParams(String url, Map params) {
+ //创建自定义的httpclient对象
+ CloseableHttpClient client = HttpClients.custom().build();
+ HttpPost post = new HttpPost(url);
+ CloseableHttpResponse res = null;
+ try {
+ List nvps = new ArrayList();
+ Set keySet = params.keySet();
+ for (String key : keySet) {
+ nvps.add(new BasicNameValuePair(key, params.get(key)));
+ }
+ post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
+ res = client.execute(post);
+ HttpEntity entity = res.getEntity();
+ return EntityUtils.toString(entity, "utf-8");
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ res.close();
+ client.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
+
+
+
+
+}
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsRepushDataInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsRepushDataInitializer.java
new file mode 100644
index 00000000..c9d19af1
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsRepushDataInitializer.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.plugin.ofs.plugin;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OfsRepushDataInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(OfsRepushDataInitializer.class);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "ofsRepushDataInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "数据库备份下发";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "ofsRepushDataInitializer";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+
+
+ /**
+ * @Author lvleigang
+ * @Description 获取ofs订单重新推送数据
+ * @Date 3:12 下午 2024/10/24
+ * @param requestJson
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ **/
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) {
+
+
+ System.out.println("获取ofs订单重新推送数据");
+
+
+ return BaseResult.getSuccessMessageEntity("获取成功");
+ }
+
+
+}
diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsSendDataInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsSendDataInitializer.java
new file mode 100644
index 00000000..be445522
--- /dev/null
+++ b/buildpackage/src/main/java/com/hzya/frame/plugin/ofs/plugin/OfsSendDataInitializer.java
@@ -0,0 +1,76 @@
+package com.hzya.frame.plugin.ofs.plugin;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.base.PluginBaseEntity;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class OfsSendDataInitializer extends PluginBaseEntity {
+ Logger logger = LoggerFactory.getLogger(OfsSendDataInitializer.class);
+
+ @Override
+ public void initialize() {
+ logger.info(getPluginLabel() + "執行初始化方法initialize()");
+ }
+
+ @Override
+ public void destroy() {
+ logger.info(getPluginLabel() + "執行銷毀方法destroy()");
+ }
+
+ @Override
+ public String getPluginId() {
+ return "ofsSendDataInitializer";
+ }
+
+ @Override
+ public String getPluginName() {
+ return "数据库备份下发";
+ }
+
+ @Override
+ public String getPluginLabel() {
+ return "ofsSendDataInitializer";
+ }
+
+ @Override
+ public String getPluginType() {
+ return "1";
+ }
+
+
+
+ /**
+ * @Author lvleigang
+ * @Description 获取ofs订单发送数据
+ * @Date 3:12 下午 2024/10/24
+ * @param requestJson
+ * @return com.hzya.frame.web.entity.JsonResultEntity
+ **/
+ @Override
+ public JsonResultEntity executeBusiness(JSONObject requestJson) {
+
+ return BaseResult.getSuccessMessageEntity("订单发送");
+
+ }
+
+}
diff --git a/buildpackage/src/main/resources/cfgHome/plugin/ofs/pluginCfg.xml b/buildpackage/src/main/resources/cfgHome/plugin/ofs/pluginCfg.xml
new file mode 100644
index 00000000..b245e749
--- /dev/null
+++ b/buildpackage/src/main/resources/cfgHome/plugin/ofs/pluginCfg.xml
@@ -0,0 +1,6 @@
+
+
+ofsPlugin
+ofsPlugin插件
+20241024
+
diff --git a/buildpackage/src/main/resources/cfgHome/plugin/ofs/spring/spring-buildpackage-plugin.xml b/buildpackage/src/main/resources/cfgHome/plugin/ofs/spring/spring-buildpackage-plugin.xml
new file mode 100644
index 00000000..1fe1795d
--- /dev/null
+++ b/buildpackage/src/main/resources/cfgHome/plugin/ofs/spring/spring-buildpackage-plugin.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/fw-oa/pom.xml b/fw-oa/pom.xml
new file mode 100644
index 00000000..04552396
--- /dev/null
+++ b/fw-oa/pom.xml
@@ -0,0 +1,48 @@
+
+
+
+ kangarooDataCenterV3
+ com.hzya.frame
+ ${revision}
+
+ 4.0.0
+ fw-oa
+ jar
+ ${revision}
+
+
+
+ com.hzya.frame
+ base-service
+ ${revision}
+
+
+ mysql
+ mysql-connector-java
+ ${mysql-connector-java}
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ none
+ execute
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDTO.java
new file mode 100644
index 00000000..e9fe54b8
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDTO.java
@@ -0,0 +1,74 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.util.List;
+
+/**
+ * @Description 无流程表单批量保存请求参数
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:18
+ **/
+public class FormDTO {
+ @JSONField(ordinal = 4)
+ private String formCode;//模版编号
+ @JSONField(ordinal = 5)
+ private String loginName;//模版编号
+ @JSONField(ordinal = 2)
+ private String rightId;//权限id,找到无流程表单,点新增,弹出的窗口上会有这个参数
+ @JSONField(ordinal = 3)
+ private List dataList;//导入的数据
+ @JSONField(ordinal = 1)
+ private String[] uniqueFiled;//更新用的唯一标识
+ @JSONField(ordinal = 6)
+ private Boolean doTrigger;//是否执行触发(Since V8.0sp2),测试中发现传了这个参数会报错
+
+ public String getFormCode() {
+ return formCode;
+ }
+
+ public void setFormCode(String formCode) {
+ this.formCode = formCode;
+ }
+
+ public String getLoginName() {
+ return loginName;
+ }
+
+ public void setLoginName(String loginName) {
+ this.loginName = loginName;
+ }
+
+ public String getRightId() {
+ return rightId;
+ }
+
+ public void setRightId(String rightId) {
+ this.rightId = rightId;
+ }
+
+ public List getDataList() {
+ return dataList;
+ }
+
+ public void setDataList(List dataList) {
+ this.dataList = dataList;
+ }
+
+ public String[] getUniqueFiled() {
+ return uniqueFiled;
+ }
+
+ public void setUniqueFiled(String[] uniqueFiled) {
+ this.uniqueFiled = uniqueFiled;
+ }
+
+ public Boolean getDoTrigger() {
+ return doTrigger;
+ }
+
+ public void setDoTrigger(Boolean doTrigger) {
+ this.doTrigger = doTrigger;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDataDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDataDTO.java
new file mode 100644
index 00000000..b69031d6
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/FormDataDTO.java
@@ -0,0 +1,36 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.util.List;
+
+/**
+ * @Description dataList节点
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:26
+ **/
+public class FormDataDTO {
+ @JSONField(ordinal = 1)
+ private MasterTableDTO masterTable;//主表数据
+ @JSONField(ordinal = 2)
+ private List subTables;//子表数据
+
+ //private List<> attachmentInfos;//附件列表
+
+ public MasterTableDTO getMasterTable() {
+ return masterTable;
+ }
+
+ public void setMasterTable(MasterTableDTO masterTable) {
+ this.masterTable = masterTable;
+ }
+
+ public List getSubTables() {
+ return subTables;
+ }
+
+ public void setSubTables(List subTables) {
+ this.subTables = subTables;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/MasterTableDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/MasterTableDTO.java
new file mode 100644
index 00000000..56f5f9fb
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/MasterTableDTO.java
@@ -0,0 +1,45 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.util.List;
+
+/**
+ * @Description 主表数据
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:29
+ **/
+
+public class MasterTableDTO {
+ @JSONField(ordinal = 1)
+ private String name;//表名
+ @JSONField(ordinal = 2)
+ private RecordDTO record;//数据
+ @JSONField(ordinal = 3)
+ private List changedFields;//需要计算的字段
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public RecordDTO getRecord() {
+ return record;
+ }
+
+ public void setRecord(RecordDTO record) {
+ this.record = record;
+ }
+
+ public List getChangedFields() {
+ return changedFields;
+ }
+
+ public void setChangedFields(List changedFields) {
+ this.changedFields = changedFields;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordDTO.java
new file mode 100644
index 00000000..cc3857e0
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordDTO.java
@@ -0,0 +1,34 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+import java.util.List;
+
+/**
+ * @Description record节点
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:31
+ **/
+public class RecordDTO {
+ @JSONField(ordinal = 1)
+ private long id;//数据id,测试中发现新增时这个参数随便填写 不影响导入
+ @JSONField(ordinal = 2)
+ private List fields;//字段列表
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public List getFields() {
+ return fields;
+ }
+
+ public void setFields(List fields) {
+ this.fields = fields;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordFieldDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordFieldDTO.java
new file mode 100644
index 00000000..a2bfa15b
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/RecordFieldDTO.java
@@ -0,0 +1,52 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+/**
+ * @Description masterTable—record—fields的结构
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:32
+ **/
+public class RecordFieldDTO {
+ @JSONField(ordinal = 1)
+ private String name;//数据域名称 ,fieldxxxx
+ @JSONField(ordinal = 2)
+ private String value;//数据值(优先)
+ @JSONField(ordinal = 3)
+ private String showValue;//显示值
+
+ public RecordFieldDTO() {
+
+ }
+
+ public RecordFieldDTO(String name, String value, String showValue) {
+ this.name = name;
+ this.value = value;
+ this.showValue = showValue;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getShowValue() {
+ return showValue;
+ }
+
+ public void setShowValue(String showValue) {
+ this.showValue = showValue;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/SubTableDTO.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/SubTableDTO.java
new file mode 100644
index 00000000..8d5e5226
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cap4/form/dto/SubTableDTO.java
@@ -0,0 +1,9 @@
+package com.hzya.frame.seeyon.cap4.form.dto;
+
+/**
+ * @Description 子表数据
+ * @Author xiangerlin
+ * @Date 2024/1/8 11:29
+ **/
+public class SubTableDTO {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDao.java
new file mode 100644
index 00000000..5336cd91
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.seeyon.cbs8.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+
+/**
+ * @Description 代发代扣
+ * @Author xiangerlin
+ * @Date 2024/6/26 10:50
+ **/
+public interface IAgentPaymentDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDetailDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDetailDao.java
new file mode 100644
index 00000000..96895bb4
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IAgentPaymentDetailDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.seeyon.cbs8.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+
+/**
+ * @Description 代发代扣明细
+ * @Author xiangerlin
+ * @Date 2024/6/26 10:54
+ **/
+public interface IAgentPaymentDetailDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ICbsLogDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ICbsLogDao.java
new file mode 100644
index 00000000..032d1a3e
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ICbsLogDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.seeyon.cbs8.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.cbs8.entity.CbsLogEntity;
+
+/**
+ * @Description cbs8支付日志
+ * @Author xiangerlin
+ * @Date 2024/6/14 17:30
+ **/
+public interface ICbsLogDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IPaymentDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IPaymentDao.java
new file mode 100644
index 00000000..c8a18848
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/IPaymentDao.java
@@ -0,0 +1,10 @@
+package com.hzya.frame.seeyon.cbs8.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+
+/**
+ * oa集成cbs
+ */
+public interface IPaymentDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ITransactionDetailDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ITransactionDetailDao.java
new file mode 100644
index 00000000..37cf015a
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/ITransactionDetailDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.seeyon.cbs8.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.cbs8.entity.TransactionDetailEntity;
+
+/**
+ * @Description cbs交易明细 oa底表
+ * @Author xiangerlin
+ * @Date 2024/6/24 11:10
+ **/
+public interface ITransactionDetailDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDaoImpl.java
new file mode 100644
index 00000000..5b2e3852
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDaoImpl.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.seeyon.cbs8.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.cbs8.dao.IAgentPaymentDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/26 10:51
+ **/
+@Repository("OAAgentPaymentDaoImpl")
+public class AgentPaymentDaoImpl extends MybatisGenericDao implements IAgentPaymentDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDetailDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDetailDaoImpl.java
new file mode 100644
index 00000000..2b873067
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/AgentPaymentDetailDaoImpl.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.seeyon.cbs8.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.cbs8.dao.IAgentPaymentDetailDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/26 10:55
+ **/
+@Repository("OAAgentPaymentDetailDaoImpl")
+public class AgentPaymentDetailDaoImpl extends MybatisGenericDao implements IAgentPaymentDetailDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/CbsLogDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/CbsLogDaoImpl.java
new file mode 100644
index 00000000..a42437b0
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/CbsLogDaoImpl.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.seeyon.cbs8.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.cbs8.dao.ICbsLogDao;
+import com.hzya.frame.seeyon.cbs8.entity.CbsLogEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/14 17:31
+ **/
+@Repository()
+public class CbsLogDaoImpl extends MybatisGenericDao implements ICbsLogDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/PaymentDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/PaymentDaoImpl.java
new file mode 100644
index 00000000..f2744983
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/PaymentDaoImpl.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.seeyon.cbs8.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.cbs8.dao.IPaymentDao;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description oa集成cbs
+ * @Author xiangerlin
+ * @Date 2024/6/6 16:28
+ **/
+@Repository("OAPaymentDaoImpl")
+public class PaymentDaoImpl extends MybatisGenericDao implements IPaymentDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/TransactionDetailDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/TransactionDetailDaoImpl.java
new file mode 100644
index 00000000..e4fb1bac
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/dao/impl/TransactionDetailDaoImpl.java
@@ -0,0 +1,17 @@
+package com.hzya.frame.seeyon.cbs8.dao.impl;
+
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.cbs8.dao.IPaymentDao;
+import com.hzya.frame.seeyon.cbs8.dao.ITransactionDetailDao;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+import com.hzya.frame.seeyon.cbs8.entity.TransactionDetailEntity;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/24 11:10
+ **/
+@Repository("OATransactionDetailDaoImpl")
+public class TransactionDetailDaoImpl extends MybatisGenericDao implements ITransactionDetailDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.java
new file mode 100644
index 00000000..4776058c
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.java
@@ -0,0 +1,113 @@
+package com.hzya.frame.seeyon.cbs8.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description 代发代扣明细表
+ * @Author xiangerlin
+ * @Date 2024/6/18 14:58
+ **/
+public class AgentPaymentDetailEntity extends BaseEntity {
+ //每笔明细金额
+ private String dtlAmount;
+ //收款账号
+ private String dtlRevAccount;
+ //联行号 同行可不传,跨行必传
+ private String dtlCnapsCode;
+ //收款账户名称
+ private String dtlRevName;
+ //收款开户行 ,如果传的联行号能匹配到对应到开户行,cbs8会自动带出
+ private String dtlRevBankName;
+ //主表id
+ private String formmainId;
+ //表名
+ private String tabName;
+
+ //明细序号,从1开始递增
+ private int dtlSeqNum;
+
+ //支付结果
+ private String payResult;
+ //支付日期
+ private String payDate;
+
+ public String getDtlAmount() {
+ return dtlAmount;
+ }
+
+ public void setDtlAmount(String dtlAmount) {
+ this.dtlAmount = dtlAmount;
+ }
+
+ public String getDtlRevAccount() {
+ return dtlRevAccount;
+ }
+
+ public void setDtlRevAccount(String dtlRevAccount) {
+ this.dtlRevAccount = dtlRevAccount;
+ }
+
+ public String getDtlCnapsCode() {
+ return dtlCnapsCode;
+ }
+
+ public void setDtlCnapsCode(String dtlCnapsCode) {
+ this.dtlCnapsCode = dtlCnapsCode;
+ }
+
+ public String getDtlRevName() {
+ return dtlRevName;
+ }
+
+ public void setDtlRevName(String dtlRevName) {
+ this.dtlRevName = dtlRevName;
+ }
+
+ public String getDtlRevBankName() {
+ return dtlRevBankName;
+ }
+
+ public void setDtlRevBankName(String dtlRevBankName) {
+ this.dtlRevBankName = dtlRevBankName;
+ }
+
+ public String getFormmainId() {
+ return formmainId;
+ }
+
+ public void setFormmainId(String formmainId) {
+ this.formmainId = formmainId;
+ }
+
+ public String getTabName() {
+ return tabName;
+ }
+
+ public void setTabName(String tabName) {
+ this.tabName = tabName;
+ }
+
+ public int getDtlSeqNum() {
+ return dtlSeqNum;
+ }
+
+ public void setDtlSeqNum(int dtlSeqNum) {
+ this.dtlSeqNum = dtlSeqNum;
+ }
+
+ public String getPayResult() {
+ return payResult;
+ }
+
+ public void setPayResult(String payResult) {
+ this.payResult = payResult;
+ }
+
+ public String getPayDate() {
+ return payDate;
+ }
+
+ public void setPayDate(String payDate) {
+ this.payDate = payDate;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.xml
new file mode 100644
index 00000000..43869fc1
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentDetailEntity.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,
+ formmainId,
+ tabName,
+ dtlSeqNum,
+ dtlAmount,
+ dtlRevAccount,
+ dtlCnapsCode,
+ dtlRevName,
+ dtlRevBankName,
+ payResult,
+ payDate
+
+
+
+
+
+
+
+ update formson_0225 set
+
+ field0045 =#{payDate},
+ field0044 =#{payResult}
+
+ where id = #{id}
+
+
+
+
+ update formson_0225 set
+
+ field0045 =#{payDate},
+ field0044 =#{payResult}
+
+ where field0001=#{dtlSeqNum} and field0019=#{dtlAmount} and field0035=#{dtlCnapsCode} and field0037=#{dtlRevName}
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.java
new file mode 100644
index 00000000..b4b2748a
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.java
@@ -0,0 +1,145 @@
+package com.hzya.frame.seeyon.cbs8.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description 代发代扣 主表
+ * @Author xiangerlin
+ * @Date 2024/6/18 14:44
+ **/
+public class AgentPaymentEntity extends BaseEntity {
+
+ //oa id
+ private String oaId;
+ private String finishedflag;
+ //流程标题
+ private String title;
+ //业务参考号
+ private String referenceNum;
+ /**
+ * 业务类型
+ * 201-代扣
+ * 203-代发
+ * 代发工资传203
+ */
+ private String busType;
+ //总金额 小数位2位
+ private String amount;
+ //币种
+ private String currency;
+ //付款账号
+ private String payAccount;
+ //用途
+ private String purpose;
+ //申请单号
+ private String applyCode;
+ //支付结果
+ private String payResult;
+
+ private String tableName;//表名称
+ private String billName;//单据名称
+
+ public String getReferenceNum() {
+ return referenceNum;
+ }
+
+ public void setReferenceNum(String referenceNum) {
+ this.referenceNum = referenceNum;
+ }
+
+ public String getBusType() {
+ return busType;
+ }
+
+ public void setBusType(String busType) {
+ this.busType = busType;
+ }
+
+ public String getAmount() {
+ return amount;
+ }
+
+ public void setAmount(String amount) {
+ this.amount = amount;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getPayAccount() {
+ return payAccount;
+ }
+
+ public void setPayAccount(String payAccount) {
+ this.payAccount = payAccount;
+ }
+
+ public String getPurpose() {
+ return purpose;
+ }
+
+ public void setPurpose(String purpose) {
+ this.purpose = purpose;
+ }
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ public String getBillName() {
+ return billName;
+ }
+
+ public void setBillName(String billName) {
+ this.billName = billName;
+ }
+
+ public String getOaId() {
+ return oaId;
+ }
+
+ public void setOaId(String oaId) {
+ this.oaId = oaId;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getFinishedflag() {
+ return finishedflag;
+ }
+
+ public void setFinishedflag(String finishedflag) {
+ this.finishedflag = finishedflag;
+ }
+
+ public String getApplyCode() {
+ return applyCode;
+ }
+
+ public void setApplyCode(String applyCode) {
+ this.applyCode = applyCode;
+ }
+
+ public String getPayResult() {
+ return payResult;
+ }
+
+ public void setPayResult(String payResult) {
+ this.payResult = payResult;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.xml
new file mode 100644
index 00000000..c0b0f6f0
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/AgentPaymentEntity.xml
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ oaId,
+ tableName,
+ finishedflag,
+ title,
+ billName,
+ referenceNum,
+ busType,
+ amount,
+ currency,
+ payAccount,
+ applyCode,
+ payResult,
+ purpose
+
+
+
+
+
+
+
+
+
+
+ update formmain_0224 set
+
+ field0043 =#{applyCode},
+ field0046 =#{payResult}
+
+ where id = #{oaId}
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.java
new file mode 100644
index 00000000..21cc1a4f
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.java
@@ -0,0 +1,151 @@
+package com.hzya.frame.seeyon.cbs8.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description cbs支付日志
+ * @Author xiangerlin
+ * @Date 2024/6/14 17:16
+ **/
+public class CbsLogEntity extends BaseEntity {
+ //流程标题
+ private String title;
+ //请款主体
+ private String pay_company;
+ //收款人
+ private String payee;
+ //金额
+ private String amount;
+ //cbs申请单号
+ private String cbs_apply_code;
+ //日志表id
+ private String id;
+ //oa单据id
+ private String oa_id;
+ //oa单据号
+ private String bill_code;
+ //英文表名
+ private String tab_name_en;
+ //中文表名
+ private String tab_name_ch;
+ //支付状态
+ private String pay_state;
+ //支付信息
+ private String message;
+ //支付申请状态
+ private String apply_state;
+ //成功标记
+ private String successed;
+
+ public String getOa_id() {
+ return oa_id;
+ }
+
+ public void setOa_id(String oa_id) {
+ this.oa_id = oa_id;
+ }
+
+ public String getBill_code() {
+ return bill_code;
+ }
+
+ public void setBill_code(String bill_code) {
+ this.bill_code = bill_code;
+ }
+
+ public String getTab_name_en() {
+ return tab_name_en;
+ }
+
+ public void setTab_name_en(String tab_name_en) {
+ this.tab_name_en = tab_name_en;
+ }
+
+ public String getTab_name_ch() {
+ return tab_name_ch;
+ }
+
+ public void setTab_name_ch(String tab_name_ch) {
+ this.tab_name_ch = tab_name_ch;
+ }
+
+ public String getPay_state() {
+ return pay_state;
+ }
+
+ public void setPay_state(String pay_state) {
+ this.pay_state = pay_state;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getApply_state() {
+ return apply_state;
+ }
+
+ public void setApply_state(String apply_state) {
+ this.apply_state = apply_state;
+ }
+
+ public String getSuccessed() {
+ return successed;
+ }
+
+ public void setSuccessed(String successed) {
+ this.successed = successed;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getPay_company() {
+ return pay_company;
+ }
+
+ public void setPay_company(String pay_company) {
+ this.pay_company = pay_company;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee;
+ }
+
+ public String getAmount() {
+ return amount;
+ }
+
+ public void setAmount(String amount) {
+ this.amount = amount;
+ }
+
+ public String getCbs_apply_code() {
+ return cbs_apply_code;
+ }
+
+ public void setCbs_apply_code(String cbs_apply_code) {
+ this.cbs_apply_code = cbs_apply_code;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.xml
new file mode 100644
index 00000000..3e03a88a
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/CbsLogEntity.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,
+ field0002 as title,
+ field0003 as pay_company,
+ field0004 as payee,
+ field0005 as cbs_apply_code,
+ field0006 as bill_code,
+ field0007 as oa_id,
+ field0008 as tab_name_ch,
+ field0009 as tab_name_en,
+ field0010 as pay_state,
+ field0011 as message,
+ field0012 as apply_state,
+ field0014 as successed
+
+
+
+
+
+
+
+
+
+
+
+
+ update formmain_0232 set
+
+ field0010 =#{pay_state},
+ field0011 =#{message},
+ field0012 =#{apply_state},
+ field0014 =#{successed}
+
+ where id = #{id}
+
+
+
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.java
new file mode 100644
index 00000000..9f68e3ff
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.java
@@ -0,0 +1,327 @@
+package com.hzya.frame.seeyon.cbs8.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/6 16:17
+ **/
+public class PaymentEntity extends BaseEntity {
+
+ private String oaId;//主表id
+ private String formsonId;//明细表id
+ private String payCompany;//付款公司
+ private String title;//流程标题
+ private String tableName;//表名称
+ private String billName;//单据名称
+ private String referenceNum;//业务参考号 唯一id
+ private String referenceNumNew;//重试的时候生成新的业务参考号
+ private String busType;//业务类型
+ private String payResultField;//支付结果字段
+ private String payDateField;//打款日期字段
+ private String applyCodeField;//支付申请单号字段
+ private String receiptFiled;//电子回单字段
+ private String summaryId;//summaryid
+ private String startDate;//单据日期
+ private String finishedflag;//流程状态
+ private String payDate;//打款日期
+ private String payResult;//支付结果
+ private String applyCode;//支付申请单号
+ private String payAccount;//付款账号
+ private String payBankName;//付款开户银行
+ private String amount;//金额
+ private String purpose;//支付用途
+ private String revAccount;//收款账号
+ private String revBankName;//收款开户行名称
+ private String revBankType;//收款银行类型
+ private String revAccountName;//收款账户名称
+ private String cnapsCode;//联行号
+ private String receipt;//电子回单
+ private String currency;//币种 数字
+ private String currencyName;//币种 中文
+ private String currencyCode;//币种编码
+ private String personalFlag;//公私标记
+ private String payType;//付款类别
+ private String payCompanyCode;//付款公司编码
+
+ public String getOaId() {
+ return oaId;
+ }
+
+ public void setOaId(String oaId) {
+ this.oaId = oaId;
+ }
+
+ public String getPayCompany() {
+ return payCompany;
+ }
+
+ public void setPayCompany(String payCompany) {
+ this.payCompany = payCompany;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+
+ public String getBillName() {
+ return billName;
+ }
+
+ public void setBillName(String billName) {
+ this.billName = billName;
+ }
+
+ public String getReferenceNum() {
+ return referenceNum;
+ }
+
+ public void setReferenceNum(String referenceNum) {
+ this.referenceNum = referenceNum;
+ }
+
+ public String getReferenceNumNew() {
+ return referenceNumNew;
+ }
+
+ public void setReferenceNumNew(String referenceNumNew) {
+ this.referenceNumNew = referenceNumNew;
+ }
+
+ public String getBusType() {
+ return busType;
+ }
+
+ public void setBusType(String busType) {
+ this.busType = busType;
+ }
+
+ public String getPayResultField() {
+ return payResultField;
+ }
+
+ public void setPayResultField(String payResultField) {
+ this.payResultField = payResultField;
+ }
+
+ public String getPayDateField() {
+ return payDateField;
+ }
+
+ public void setPayDateField(String payDateField) {
+ this.payDateField = payDateField;
+ }
+
+ public String getReceiptFiled() {
+ return receiptFiled;
+ }
+
+ public void setReceiptFiled(String receiptFiled) {
+ this.receiptFiled = receiptFiled;
+ }
+
+ public String getSummaryId() {
+ return summaryId;
+ }
+
+ public void setSummaryId(String summaryId) {
+ this.summaryId = summaryId;
+ }
+
+ public String getStartDate() {
+ return startDate;
+ }
+
+ public void setStartDate(String startDate) {
+ this.startDate = startDate;
+ }
+
+ public String getFinishedflag() {
+ return finishedflag;
+ }
+
+ public void setFinishedflag(String finishedflag) {
+ this.finishedflag = finishedflag;
+ }
+
+ public String getPayDate() {
+ return payDate;
+ }
+
+ public void setPayDate(String payDate) {
+ this.payDate = payDate;
+ }
+
+ public String getPayResult() {
+ return payResult;
+ }
+
+ public void setPayResult(String payResult) {
+ this.payResult = payResult;
+ }
+
+ public String getPayAccount() {
+ return payAccount;
+ }
+
+ public void setPayAccount(String payAccount) {
+ this.payAccount = payAccount;
+ }
+
+ public String getPayBankName() {
+ return payBankName;
+ }
+
+ public void setPayBankName(String payBankName) {
+ this.payBankName = payBankName;
+ }
+
+ public String getAmount() {
+ return amount;
+ }
+
+ public void setAmount(String amount) {
+ this.amount = amount;
+ }
+
+ public String getPurpose() {
+ return purpose;
+ }
+
+ public void setPurpose(String purpose) {
+ this.purpose = purpose;
+ }
+
+ public String getRevAccount() {
+ return revAccount;
+ }
+
+ public void setRevAccount(String revAccount) {
+ this.revAccount = revAccount;
+ }
+
+ public String getRevBankName() {
+ return revBankName;
+ }
+
+ public void setRevBankName(String revBankName) {
+ this.revBankName = revBankName;
+ }
+
+ public String getRevBankType() {
+ return revBankType;
+ }
+
+ public void setRevBankType(String revBankType) {
+ this.revBankType = revBankType;
+ }
+
+ public String getRevAccountName() {
+ return revAccountName;
+ }
+
+ public void setRevAccountName(String revAccountName) {
+ this.revAccountName = revAccountName;
+ }
+
+ public String getCnapsCode() {
+ return cnapsCode;
+ }
+
+ public void setCnapsCode(String cnapsCode) {
+ this.cnapsCode = cnapsCode;
+ }
+
+ public String getReceipt() {
+ return receipt;
+ }
+
+ public void setReceipt(String receipt) {
+ this.receipt = receipt;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getCurrencyName() {
+ return currencyName;
+ }
+
+ public void setCurrencyName(String currencyName) {
+ this.currencyName = currencyName;
+ }
+
+ public String getCurrencyCode() {
+ return currencyCode;
+ }
+
+ public void setCurrencyCode(String currencyCode) {
+ this.currencyCode = currencyCode;
+ }
+
+ public String getPersonalFlag() {
+ return personalFlag;
+ }
+
+ public void setPersonalFlag(String personalFlag) {
+ this.personalFlag = personalFlag;
+ }
+
+ public String getPayType() {
+ return payType;
+ }
+
+ public void setPayType(String payType) {
+ this.payType = payType;
+ }
+
+ public String getPayCompanyCode() {
+ return payCompanyCode;
+ }
+
+ public void setPayCompanyCode(String payCompanyCode) {
+ this.payCompanyCode = payCompanyCode;
+ }
+
+ public String getFormsonId() {
+ return formsonId;
+ }
+
+ public void setFormsonId(String formsonId) {
+ this.formsonId = formsonId;
+ }
+
+ public String getApplyCodeField() {
+ return applyCodeField;
+ }
+
+ public void setApplyCodeField(String applyCodeField) {
+ this.applyCodeField = applyCodeField;
+ }
+
+ public String getApplyCode() {
+ return applyCode;
+ }
+
+ public void setApplyCode(String applyCode) {
+ this.applyCode = applyCode;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.xml
new file mode 100644
index 00000000..b8d3deee
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/PaymentEntity.xml
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ oaId,
+ formsonId,
+ payCompany,
+ payCompanyCode,
+ title,
+ tableName,
+ billName,
+ referenceNum,
+ busType,
+ payResultField,
+ payDateField,
+ applyCodeField,
+ receiptFiled,
+ summaryId,
+ startDate,
+ finishedflag,
+ payDate,
+ payResult,
+ applyCode,
+ payAccount,
+ payBankName,
+ amount,
+ purpose,
+ revAccount,
+ revBankName,
+ revBankType,
+ revAccountName,
+ cnapsCode,
+ receipt,
+ currency,
+ personalFlag,
+ payType
+
+
+
+
+ SELECT
+ formmain_0209.id as oaId, -- 主表id
+ formson_0210.formsonId,
+ 'formson_0210' as tableName, -- 表名
+ COL_SUMMARY.SUBJECT as title, -- 单据标题
+ unit.name as payCompany, -- 付款公司
+ '差旅费报销单' as billName,
+ 'field0072' as payResultField, -- 支付结果字段
+ 'field0073' as payDateField, -- 打款日期字段
+ 'field0080' AS applyCodeField,-- CBS支付申请单号
+ '' as receiptFiled,-- 电子回单字段
+ COL_SUMMARY.id as summaryId,
+ formmain_0209.field0017||'-'||formson_0210.sort as referenceNum, -- 单据编号
+ formmain_0209.START_DATE as startDate, -- 单据日期
+ formmain_0209.FINISHEDFLAG as finishedflag, -- 流程状态
+ formson_0210.field0073 as payDate, -- 打款日期
+ formson_0210.field0072 as payResult, -- 支付结果
+ formson_0210.field0080 AS applyCode,-- 支付申请单号
+ REGEXP_REPLACE(formmain_0209.field0042, '[[:space:]]', '') as payAccount, -- 付款账户
+ REGEXP_REPLACE(formmain_0209.field0041, '[[:space:]]', '') as payBankName, -- 付款开户行
+ formson_0210.field0031 as amount, -- 金额
+ formmain_0209.field0038 as purpose, -- 用途
+ formmain_0209.field0038 as cbsAbstract, -- 摘要
+ REGEXP_REPLACE(formson_0210.field0069, '[[:space:]]', '') as revAccount, -- 收款账户
+ formson_0210.field0068 as revBankName, -- 收款开户行
+ formson_0210.field0075 as revAccountName, -- 收款人
+ REGEXP_REPLACE(formson_0210.field0071, '[[:space:]]', '') as cnapsCode, -- 收款联行号
+ item.ENUMVALUE as personalFlag,-- 公私标记
+ formson_0210.field0079 as revBankType,
+ '10' as currency,
+ '202' as busType,
+ '' as receipt -- 电子回单
+ FROM
+ (
+ SELECT
+ WM_CONCAT(id) AS formsonId,
+ formmain_id,
+ SUM(field0031) AS field0031,
+ MIN(sort) AS sort,
+ field0068,
+ field0069,
+ field0071,
+ field0079,
+ field0075,
+ field0070,
+ field0072,
+ field0073,
+ field0080
+ FROM
+ formson_0210
+ WHERE
+ field0067 = '-5486592002512828355'
+ GROUP BY
+ formmain_id,
+ field0068,
+ field0069,
+ field0071,
+ field0079,
+ field0075,
+ field0070,
+ field0072,
+ field0073,
+ field0080
+ )formson_0210
+ LEFT JOIN formmain_0209 ON formson_0210.FORMMAIN_ID = formmain_0209.id
+ LEFT JOIN COL_SUMMARY ON COL_SUMMARY.FORM_RECORDID = formmain_0209.id
+ left join CTP_ENUM_ITEM item on item.id =formson_0210.field0070
+ left join ORG_UNIT unit on unit.id =formmain_0209.field0002
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update ${tableName} set
+
+ ${payDateField} =#{payDate},
+ ${payResultField} =#{payResult},
+ ${applyCodeField} =#{applyCode}
+
+ where id = #{formsonId}
+
+
+
+
+ update ${tableName} set ${receiptFiled}=#{receipt} where id = #{oaId} and ${receiptFiled} is null
+
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.java
new file mode 100644
index 00000000..e1d66a2d
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.java
@@ -0,0 +1,155 @@
+package com.hzya.frame.seeyon.cbs8.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+/**
+ * @Description cbs交易明细日志OA底表
+ * @Author xiangerlin
+ * @Date 2024/6/24 10:49
+ **/
+public class TransactionDetailEntity extends BaseEntity {
+ private String id;//id
+ private String accountNo;//银行账号
+ private String accountName;//户名
+ private String openBank;//开户行名称
+ private String bankType;//我方银行类型
+ private String bankTransactionDate;//交易日期
+ private String transactionSerialNumber;//交易流水号
+ private String bankSerialNumber;//银行流水号
+ private String currency;//币种
+ private String incurredAmount;//发生额
+ private String purpose;//用途
+ private String digest;//摘要
+ private String oppositeAccount;//对方账号
+ private String oppositeName;//对方户名
+ private String oppositeOpeningBank;//对方开户行
+
+ private String remark;//备注
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getAccountNo() {
+ return accountNo;
+ }
+
+ public void setAccountNo(String accountNo) {
+ this.accountNo = accountNo;
+ }
+
+ public String getAccountName() {
+ return accountName;
+ }
+
+ public void setAccountName(String accountName) {
+ this.accountName = accountName;
+ }
+
+ public String getOpenBank() {
+ return openBank;
+ }
+
+ public void setOpenBank(String openBank) {
+ this.openBank = openBank;
+ }
+
+ public String getBankTransactionDate() {
+ return bankTransactionDate;
+ }
+
+ public void setBankTransactionDate(String bankTransactionDate) {
+ this.bankTransactionDate = bankTransactionDate;
+ }
+
+ public String getTransactionSerialNumber() {
+ return transactionSerialNumber;
+ }
+
+ public void setTransactionSerialNumber(String transactionSerialNumber) {
+ this.transactionSerialNumber = transactionSerialNumber;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getIncurredAmount() {
+ return incurredAmount;
+ }
+
+ public void setIncurredAmount(String incurredAmount) {
+ this.incurredAmount = incurredAmount;
+ }
+
+ public String getPurpose() {
+ return purpose;
+ }
+
+ public void setPurpose(String purpose) {
+ this.purpose = purpose;
+ }
+
+ public String getDigest() {
+ return digest;
+ }
+
+ public void setDigest(String digest) {
+ this.digest = digest;
+ }
+
+ public String getOppositeAccount() {
+ return oppositeAccount;
+ }
+
+ public void setOppositeAccount(String oppositeAccount) {
+ this.oppositeAccount = oppositeAccount;
+ }
+
+ public String getOppositeName() {
+ return oppositeName;
+ }
+
+ public void setOppositeName(String oppositeName) {
+ this.oppositeName = oppositeName;
+ }
+
+ public String getOppositeOpeningBank() {
+ return oppositeOpeningBank;
+ }
+
+ public void setOppositeOpeningBank(String oppositeOpeningBank) {
+ this.oppositeOpeningBank = oppositeOpeningBank;
+ }
+
+ public String getBankType() {
+ return bankType;
+ }
+
+ public void setBankType(String bankType) {
+ this.bankType = bankType;
+ }
+
+ public String getBankSerialNumber() {
+ return bankSerialNumber;
+ }
+
+ public void setBankSerialNumber(String bankSerialNumber) {
+ this.bankSerialNumber = bankSerialNumber;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.xml
new file mode 100644
index 00000000..3fa7fc60
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/entity/TransactionDetailEntity.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,
+ field0001 as accountNo,
+ field0002 as accountName,
+ field0003 as openBank,
+ field0004 as bankType,
+ field0005 as transactionSerialNumber,
+ field0006 as bankTransactionDate,
+ field0007 as bankSerialNumber,
+ field0008 as currency,
+ field0009 as incurredAmount,
+ field0010 as purpose,
+ field0011 as digest,
+ field0012 as oppositeAccount,
+ field0013 as oppositeName,
+ field0014 as oppositeOpeningBank,
+ field0015 as remark
+
+
+
+
+
+
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentDetailService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentDetailService.java
new file mode 100644
index 00000000..f0a4811b
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentDetailService.java
@@ -0,0 +1,18 @@
+package com.hzya.frame.seeyon.cbs8.service;
+
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+
+/**
+ * @Description 代发代扣明细
+ * @Author xiangerlin
+ * @Date 2024/6/26 11:00
+ **/
+public interface IAgentPaymentDetailService extends IBaseService {
+ /**
+ * 更新明细表支付状态
+ * @param detail
+ */
+ void updatePayResult(AgentPaymentDetailEntity detail);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentService.java
new file mode 100644
index 00000000..dcb6d78f
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IAgentPaymentService.java
@@ -0,0 +1,45 @@
+package com.hzya.frame.seeyon.cbs8.service;
+
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+
+import java.util.List;
+
+/**
+ * @Description OA代发代扣
+ * @Author xiangerlin
+ * @Date 2024/6/18 15:04
+ **/
+public interface IAgentPaymentService extends IBaseService {
+
+ /**
+ * 查询待支付待代发代扣 主表
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List queryUnpaid(AgentPaymentEntity entity) throws Exception;
+
+ /**
+ * 根据支付申请单号查询
+ * @param agentPayment
+ * @return
+ * @throws Exception
+ */
+ AgentPaymentEntity queryByApplyCode(AgentPaymentEntity agentPayment)throws Exception;
+
+ /**
+ * 查询明细表
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List queryDetails(AgentPaymentDetailEntity entity)throws Exception;
+
+ /**
+ * 更新支付状态
+ * @param entity
+ */
+ void updateResult(AgentPaymentEntity entity);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ICbsLogService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ICbsLogService.java
new file mode 100644
index 00000000..7160c21f
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ICbsLogService.java
@@ -0,0 +1,53 @@
+package com.hzya.frame.seeyon.cbs8.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.cbs8.entity.CbsLogEntity;
+import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
+
+import java.util.List;
+
+/**
+ * @Description cbs8支付日志
+ * @Author xiangerlin
+ * @Date 2024/6/14 17:22
+ **/
+public interface ICbsLogService extends IBaseService {
+ /**
+ * 查询支付中的数据
+ * @param logEntity
+ * @return
+ */
+ List queryInPayment(CbsLogEntity logEntity);
+ /**
+ * 保存日志,通过rest接口的形式
+ * @param logEntity
+ */
+ void saveLog(CbsLogEntity logEntity);
+
+ /**
+ * 补推,从自己开发的页面或者APIpost
+ * 需要传oa表单id和表单编号
+ * @param entity
+ */
+ void retry(CbsLogEntity entity);
+ /**
+ * 补推,从OA页面
+ * 只需要传日志表id就行
+ * @param jsonObject
+ */
+ void resend(JSONObject jsonObject);
+
+ /**
+ * 获取token
+ * @param entity
+ * @return
+ */
+ SysExtensionApiEntity getTokenExt(SysExtensionApiEntity entity);
+
+ /**
+ * 更新日志
+ * @param logEntity
+ */
+ void updateLog(CbsLogEntity logEntity);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IPaymentService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IPaymentService.java
new file mode 100644
index 00000000..4243084c
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/IPaymentService.java
@@ -0,0 +1,63 @@
+package com.hzya.frame.seeyon.cbs8.service;
+
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+
+import java.util.List;
+
+/**
+ * @Description oa对接cbs
+ * @Author xiangerlin
+ * @Date 2024/6/6 16:31
+ **/
+public interface IPaymentService extends IBaseService {
+
+ /**
+ * 查询待支付的数据 需要推送到CBS的
+ * 如果需要查询流程状态已结束的 需要调用方设置finishedflag=1
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List queryUnpaid(PaymentEntity entity)throws Exception;
+
+ /**
+ * 查询交易成功的数据
+ * 内置了查询条件payResult = PayState.payStateGetValue("g"); 支付成功
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List querySuccess(PaymentEntity entity)throws Exception;
+
+ /**
+ * 查询交易成功,且电子回单为空的
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List queryElecIsNull(PaymentEntity entity)throws Exception;
+
+ /**
+ * 查询支付中的数据
+ * 内置了查询条件 payResult = '支付中' or payResult not in ('审批撤销','审批拒绝','处理失败','退票','支付成功','取消支付','修改支付','支付失败')
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ List queryInPayment(PaymentEntity entity)throws Exception;
+
+ /**
+ * 更新支付状态
+ * @param entity
+ * @throws Exception
+ */
+ void updatePayState(PaymentEntity entity)throws Exception;
+
+ /**
+ * 更新电子回单字段
+ * @param entity
+ * @throws Exception
+ */
+ void updateElec(PaymentEntity entity)throws Exception;
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ITransactionDetailService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ITransactionDetailService.java
new file mode 100644
index 00000000..61126686
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/ITransactionDetailService.java
@@ -0,0 +1,29 @@
+package com.hzya.frame.seeyon.cbs8.service;
+
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.cbs8.entity.TransactionDetailEntity;
+
+import java.util.List;
+
+/**
+ * @Description cbs交易明细 OA底表
+ * @Author xiangerlin
+ * @Date 2024/6/24 11:07
+ **/
+public interface ITransactionDetailService extends IBaseService {
+
+
+ /**
+ * 只返回交易流水号
+ * @param entity
+ * @return
+ */
+ List querySerialNumber(TransactionDetailEntity entity);
+
+ /**
+ * 保存交易明细,通过rest接口的方式
+ * @param entity
+ * @throws Exception
+ */
+ void restSave(TransactionDetailEntity entity);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentDetailServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentDetailServiceImpl.java
new file mode 100644
index 00000000..8bbbad34
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentDetailServiceImpl.java
@@ -0,0 +1,39 @@
+package com.hzya.frame.seeyon.cbs8.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.cbs8.dao.IAgentPaymentDetailDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+import com.hzya.frame.seeyon.cbs8.service.IAgentPaymentDetailService;
+import com.hzya.frame.seeyon.cbs8.service.IAgentPaymentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/26 11:01
+ **/
+@Service("OAAgentPaymentDetailServiceImpl")
+public class AgentPaymentDetailServiceImpl extends BaseService implements IAgentPaymentDetailService {
+
+ private IAgentPaymentDetailDao agentPaymentDetailDao;
+
+ @Autowired
+ public void setAgentPaymentDetailDao(IAgentPaymentDetailDao agentPaymentDetailDao) {
+ this.agentPaymentDetailDao = agentPaymentDetailDao;
+ this.dao = agentPaymentDetailDao;
+ }
+
+ /**
+ * 更新明细表支付状态
+ *
+ * @param detail
+ */
+ @DS("#detail.dataSourceCode")
+ @Override
+ public void updatePayResult(AgentPaymentDetailEntity detail) {
+ agentPaymentDetailDao.update("com.hzya.frame.seeyon.cbs8.dao.impl.AgentPaymentDetailDaoImpl.entity_update_result",detail);
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentServiceImpl.java
new file mode 100644
index 00000000..ab3ab4b9
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/AgentPaymentServiceImpl.java
@@ -0,0 +1,93 @@
+package com.hzya.frame.seeyon.cbs8.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.cbs8.dao.IAgentPaymentDao;
+import com.hzya.frame.seeyon.cbs8.dao.IAgentPaymentDetailDao;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentDetailEntity;
+import com.hzya.frame.seeyon.cbs8.entity.AgentPaymentEntity;
+import com.hzya.frame.seeyon.cbs8.service.IAgentPaymentDetailService;
+import com.hzya.frame.seeyon.cbs8.service.IAgentPaymentService;
+import com.hzya.frame.web.exception.BaseSystemException;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/18 15:06
+ **/
+@Service(value = "cbs8AgentPaymentServiceImpl")
+public class AgentPaymentServiceImpl extends BaseService implements IAgentPaymentService {
+
+ private IAgentPaymentDao agentPaymentDao;
+
+ @Autowired
+ private IAgentPaymentDetailService agentPaymentDetailService;
+ @Autowired
+ public void setAgentPaymentDao(IAgentPaymentDao agentPaymentDao) {
+ this.agentPaymentDao = agentPaymentDao;
+ this.dao = agentPaymentDao;
+ }
+ /**
+ * 查询待支付待代发代扣 主表
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List queryUnpaid(AgentPaymentEntity entity) throws Exception {
+ List list = agentPaymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.dao.impl.AgentPaymentDaoImpl.entity_list_base_unpaid");
+ return list;
+ }
+
+ /**
+ * 根据支付申请单号查询
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public AgentPaymentEntity queryByApplyCode(AgentPaymentEntity entity) throws Exception {
+ if (null != entity && StrUtil.isNotEmpty(entity.getApplyCode())){
+ List list = agentPaymentDao.query(entity);
+ if (CollectionUtils.isNotEmpty(list)){
+ if (list.size() > 1){
+ throw new BaseSystemException("根据"+entity.getApplyCode()+"查询到多条记录");
+ }
+ return list.get(0);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 查询明细表
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List queryDetails(AgentPaymentDetailEntity entity) throws Exception {
+ List list = agentPaymentDetailService.query(entity);
+ return list;
+ }
+
+ /**
+ * @param entity
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public void updateResult(AgentPaymentEntity entity) {
+ agentPaymentDao.update("com.hzya.frame.seeyon.cbs8.dao.impl.AgentPaymentDaoImpl.entity_update",entity);
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/CbsLogServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/CbsLogServiceImpl.java
new file mode 100644
index 00000000..07a89a52
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/CbsLogServiceImpl.java
@@ -0,0 +1,198 @@
+package com.hzya.frame.seeyon.cbs8.service.impl;
+
+import cn.hutool.core.map.MapBuilder;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.cbs8.dao.ICbsLogDao;
+import com.hzya.frame.seeyon.cbs8.entity.CbsLogEntity;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+import com.hzya.frame.seeyon.cbs8.service.ICbsLogService;
+import com.hzya.frame.seeyon.util.OAPayState;
+import com.hzya.frame.seeyon.util.OARestUtil;
+import com.hzya.frame.stringutil.StringUtil;
+import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
+import com.hzya.frame.web.exception.BaseSystemException;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description cbs8支付日志
+ * @Author xiangerlin
+ * @Date 2024/6/14 17:22
+ **/
+@Service(value = "CbsLogServiceImpl")
+public class CbsLogServiceImpl extends BaseService implements ICbsLogService {
+
+
+ Logger log = LoggerFactory.getLogger(getClass());
+
+ private ICbsLogDao cbsLogDao;
+ @Value("${OA.data_source_code:}")
+ private String oa_data_source_code;
+ @Autowired
+ public void setCbsLogDao(ICbsLogDao cbsLogDao) {
+ this.cbsLogDao = cbsLogDao;
+ this.dao = cbsLogDao;
+ }
+ @Autowired
+ private OARestUtil restUtil;
+
+ /**
+ * 查询支付中的数据
+ *
+ * @param logEntity
+ * @return
+ */
+ @DS("#logEntity.dataSourceCode")
+ @Override
+ public List queryInPayment(CbsLogEntity logEntity) {
+ List logList = cbsLogDao.queryList(logEntity, "CbsLogEntity_list_base_in_payment");
+ return logList;
+ }
+
+ /**
+ * 保存日志,通过rest接口的形式
+ *
+ * @param cbsLogEntity
+ */
+ @Override
+ public void saveLog(CbsLogEntity cbsLogEntity) {
+ String oa_id = StringUtil.nullConvert(cbsLogEntity.getOa_id());
+ String bill_code = StringUtil.nullConvert(cbsLogEntity.getBill_code());
+ String tab_name_en = StringUtil.nullConvert(cbsLogEntity.getTab_name_en());
+ String tab_name_ch = StringUtil.nullConvert(cbsLogEntity.getTab_name_ch());
+ String pay_state = StringUtil.nullConvert(cbsLogEntity.getPay_state());
+ String message = StringUtil.nullConvert(cbsLogEntity.getMessage());
+ String apply_state = StringUtil.nullConvert(cbsLogEntity.getApply_state());
+ String successed = StringUtil.nullConvert(cbsLogEntity.getSuccessed());
+ String title = StringUtil.nullConvert(cbsLogEntity.getTitle());
+ String pay_company = StringUtil.nullConvert(cbsLogEntity.getPay_company());
+ String payee = StringUtil.nullConvert(cbsLogEntity.getPayee());
+ String amount = StringUtil.nullConvert(cbsLogEntity.getAmount());
+ String cbs_apply_code = StringUtil.nullConvert(cbsLogEntity.getCbs_apply_code());
+ //根据oaid判断是否在日志表中存在,如果存在,则更新,如果不存在,则新增
+ CbsLogEntity cbsLogEntityResend=new CbsLogEntity();
+ cbsLogEntityResend.setOa_id(cbsLogEntity.getOa_id());
+ cbsLogEntityResend.setDataSourceCode(oa_data_source_code);
+ List queryList = query(cbsLogEntityResend);
+ if(CollectionUtils.isEmpty(queryList)){
+ String data = StrUtil.format(getXmlTemplate(),title,pay_company,payee,amount,cbs_apply_code,bill_code,oa_id,tab_name_ch,tab_name_en,pay_state,message,apply_state,successed);
+ Map headerMap = MapBuilder.create(true)
+ .put("apiCode", "8000240007")
+ .put("publicKey","ZJYAorA7JuRDfrVjywcx78BFcqlLwthgXNC65TXxxQMUHuxCe7eDIk+3zDUT+v578prj")//发送者
+ .put("secretKey","a54vt9Wx7gdBig+4JCkZ/lISIIL2m4ZEyZkXtW0uQVBDHS+V4SVgT6xhNblacri/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//发送者
+ .put("appId","800024")
+ .build();
+ JSONObject paramsTemplate = new JSONObject();
+ paramsTemplate.put("loginName", "hzya_rest");
+ paramsTemplate.put("dataXml", data);
+ String params = JSONObject.toJSONString(paramsTemplate);
+ logger.info("保存支付申请日志到OA底表请求参数:{}",params);
+ String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface").addHeaders(headerMap).body(params).timeout(60000).execute().body();
+ logger.info("保存支付申请日志到OA底表响应参数:{}",body);
+ }else{
+ for (CbsLogEntity logEntity : queryList) {
+ logEntity.setPay_state(pay_state);
+ logEntity.setMessage(message);
+ logEntity.setApply_state(apply_state);
+ logEntity.setSuccessed(successed);
+ logEntity.setBill_code(cbsLogEntity.getBill_code());
+ logEntity.setDataSourceCode(oa_data_source_code);
+ try {
+ update(logEntity);
+ }catch (Exception e){
+ e.printStackTrace();
+ logger.error("更新");
+ }
+ }
+ }
+ }
+
+ /**
+ * 补推,从自己开发的页面或者APIpost
+ * 需要传oa表单id和表单编号
+ *
+ * @param entity
+ */
+ @Override
+ public void retry(CbsLogEntity entity) {
+ PaymentEntity paymentEntity = new PaymentEntity();
+ paymentEntity.setOaId(entity.getOa_id());
+ paymentEntity.setReferenceNum(entity.getBill_code());
+ CbsLogEntity logEntity = new CbsLogEntity();
+ logEntity.setId(entity.getId());
+ logEntity = cbsLogDao.queryOne(logEntity);
+ String pay_state = logEntity.getPay_state();
+ if (OAPayState.h.getValue().equals(pay_state)
+ || OAPayState.three.getValue().equals(pay_state)
+ || OAPayState.k.getValue().equals(pay_state)
+ || "推送失败".equals(pay_state)){
+ //todo 调用重试方法
+ }else {
+ throw new BaseSystemException("只允许补推支付失败的记录");
+ }
+ }
+
+ /**
+ * 补推,从OA页面
+ * 只需要传日志表id就行
+ *
+ * @param jsonObject
+ */
+ @Override
+ public void resend(JSONObject jsonObject) {
+ if (null != jsonObject && StrUtil.isNotEmpty(jsonObject.getString("id"))){
+ String id = jsonObject.getString("id");
+ CbsLogEntity cbsLogEntity = new CbsLogEntity();
+ cbsLogEntity.setId(id);
+ cbsLogEntity =cbsLogDao.queryOne(cbsLogEntity);
+ if (null != cbsLogEntity && StrUtil.isNotEmpty(cbsLogEntity.getOa_id()) && StrUtil.isNotEmpty(cbsLogEntity.getBill_code())){
+ retry(cbsLogEntity);
+ }
+ }
+ }
+
+ /**
+ * 获取token
+ *
+ * @param entity
+ * @return
+ */
+ @Override
+ public SysExtensionApiEntity getTokenExt(SysExtensionApiEntity entity) {
+ String token = restUtil.getToken("hzya_rest", "8000240000");
+ Map headers = entity.getHeaders();
+ if (null == headers){
+ headers = new HashMap<>();
+ }
+ headers.put("token",token);
+ return entity;
+ }
+
+ /**
+ * 更新日志
+ *
+ * @param logEntity
+ */
+ @DS("#logEntity.dataSourceCode")
+ @Override
+ public void updateLog(CbsLogEntity logEntity) {
+ cbsLogDao.update(logEntity);
+ }
+
+ //获取xml模板
+ private String getXmlTemplate(){
+ return "";
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/PaymentServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/PaymentServiceImpl.java
new file mode 100644
index 00000000..3a8b01f1
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/PaymentServiceImpl.java
@@ -0,0 +1,150 @@
+package com.hzya.frame.seeyon.cbs8.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.cbs8.dao.IPaymentDao;
+import com.hzya.frame.seeyon.cbs8.entity.PaymentEntity;
+import com.hzya.frame.seeyon.cbs8.service.IPaymentService;
+import com.hzya.frame.seeyon.util.OAPayState;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/6 16:34
+ **/
+@Service("OAPaymentServiceImpl")
+public class PaymentServiceImpl extends BaseService implements IPaymentService {
+
+
+
+ private IPaymentDao paymentDao;
+
+ @Autowired
+ public void setPaymentDao(IPaymentDao paymentDao) {
+ this.paymentDao = paymentDao;
+ this.dao = paymentDao;
+ }
+
+ /**
+ * 查询列表
+ * @param entity
+ * @return
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List query(PaymentEntity entity) {
+ List list = paymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.entity_list_base");
+ return list;
+ }
+
+ /**
+ * 查询待支付的数据 需要推送到CBS的
+ * 如果需要查询流程状态已结束的 需要调用方设置finishedflag=1
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+
+
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List queryUnpaid(PaymentEntity entity) throws Exception {
+ List list = paymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_list_base_unpaid");
+ return list;
+ }
+
+ /**
+ * 查询交易成功的数据
+ * 内置了查询条件payResult = PayState.payStateGetValue("g"); 支付成功
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List querySuccess(PaymentEntity entity) throws Exception {
+ if (null == entity){
+ entity = new PaymentEntity();
+ }
+ entity.setPayResult(OAPayState.payStateGetValue("g"));
+ List list = paymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_list_base");
+ return list;
+ }
+
+ /**
+ * 查询交易成功,且电子回单为空的
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List queryElecIsNull(PaymentEntity entity) throws Exception {
+ List list = paymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_list_base_elec_isnull");
+ return list;
+ }
+
+ /**
+ * 查询支付中的数据
+ * 内置了查询条件 payResult = '支付中' or payResult not in ('审批撤销','审批拒绝','处理失败','退票','支付成功','取消支付','修改支付','支付失败')
+ *
+ * @param entity
+ * @return
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List queryInPayment(PaymentEntity entity) throws Exception {
+ List list = paymentDao.queryList(entity, "com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_list_base_in_payment");
+ return list;
+ }
+
+ /**
+ * 更新支付状态
+ *
+ * @param entity
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public void updatePayState(PaymentEntity entity) throws Exception {
+ if (null != entity
+ && StrUtil.isNotEmpty(entity.getTableName())
+ && StrUtil.isNotEmpty(entity.getOaId())
+ && StrUtil.isNotEmpty(entity.getFormsonId())
+ && StrUtil.isNotEmpty(entity.getPayDateField())
+ && StrUtil.isNotEmpty(entity.getPayResultField())){
+ String formsonId = entity.getFormsonId();
+ String[] formsonIdArray = formsonId.split(",");
+ for (String s : formsonIdArray) {
+ entity.setFormsonId(s);
+ paymentDao.update("com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_update_payState",entity);
+ }
+ }
+ }
+
+ /**
+ * 更新电子回单字段
+ *
+ * @param entity
+ * @throws Exception
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public void updateElec(PaymentEntity entity) throws Exception {
+ if (null != entity
+ && StrUtil.isNotEmpty(entity.getTableName())
+ && StrUtil.isNotEmpty(entity.getOaId())
+ && StrUtil.isNotEmpty(entity.getReceiptFiled())){
+ paymentDao.update("com.hzya.frame.seeyon.cbs8.entity.PaymentEntity.PaymentEntity_update_electronic",entity);
+ }
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/TransactionDetailServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/TransactionDetailServiceImpl.java
new file mode 100644
index 00000000..21cee3ea
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/cbs8/service/impl/TransactionDetailServiceImpl.java
@@ -0,0 +1,98 @@
+package com.hzya.frame.seeyon.cbs8.service.impl;
+
+import cn.hutool.core.map.MapBuilder;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.cbs8.dao.ITransactionDetailDao;
+import com.hzya.frame.seeyon.cbs8.entity.TransactionDetailEntity;
+import com.hzya.frame.seeyon.cbs8.service.IPaymentService;
+import com.hzya.frame.seeyon.cbs8.service.ITransactionDetailService;
+import com.hzya.frame.stringutil.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description
+ * @Author xiangerlin
+ * @Date 2024/6/24 11:08
+ **/
+@Service(value = "OATransactionDetailServiceImpl")
+public class TransactionDetailServiceImpl extends BaseService implements ITransactionDetailService {
+
+ private ITransactionDetailDao transactionDetailDao;
+
+ @Autowired
+ public void setTransactionDetailDao(ITransactionDetailDao dao) {
+ this.transactionDetailDao = dao;
+ this.dao=dao;
+ }
+
+ /**
+ * 只返回交易流水号
+ *
+ * @param entity
+ * @return
+ */
+ @DS("#entity.dataSourceCode")
+ @Override
+ public List querySerialNumber(TransactionDetailEntity entity) {
+ List list = transactionDetailDao.queryList(entity, "TransactionDetailEntity_list_serialNumber");;
+ return list;
+ }
+
+ /**
+ * 保存交易明细,通过rest接口的方式
+ *
+ * @param entity
+ * @throws Exception
+ */
+ @Override
+ public void restSave(TransactionDetailEntity entity) {
+ String field0001= StringUtil.nullConvert(entity.getAccountNo());//我方银行账号
+ String field0002=StringUtil.nullConvert(entity.getAccountName());//我方户名
+ String field0003=StringUtil.nullConvert(entity.getOpenBank());//我方开户行
+ String field0004=StringUtil.nullConvert(entity.getBankType());//我方银行类型
+ String field0005=StringUtil.nullConvert(entity.getTransactionSerialNumber());//交易流水号
+ String field0006=StringUtil.nullConvert(entity.getBankTransactionDate());//交易日期
+ String field0007=StringUtil.nullConvert(entity.getBankSerialNumber());//银行流水号
+ String field0008=StringUtil.nullConvert(entity.getCurrency());//币种
+ String field0009=StringUtil.nullConvert(entity.getIncurredAmount());//收款金额
+ String field0010=StringUtil.nullConvert(entity.getPurpose());//用途
+ String field0011=StringUtil.nullConvert(entity.getDigest());//摘要
+ String field0012=StringUtil.nullConvert(entity.getOppositeAccount());//对方账号
+ String field0013=StringUtil.nullConvert(entity.getOppositeName());//对方户名
+ String field0014=StringUtil.nullConvert(entity.getOppositeOpeningBank());//对方开户行
+ String field0015=StringUtil.nullConvert(entity.getRemark());//备注
+ String data = StrUtil.format(getXmlTemplate(),field0001,field0002,field0003,field0004,field0005,field0006,field0007,field0008,field0009,field0010,field0011,field0012,field0013,field0014,field0015);
+ Map headerMap = MapBuilder.create(true)
+ .put("apiCode", "8000240006")
+ .put("publicKey","ZJYAorA7JuRDfrVjywcx78BFcqlLwthgXNC65TXxxQMUHuxCe7eDIk+3zDUT+v578prj")
+ .put("secretKey","a54vt9Wx7gdBig+4JCkZ/lISIIL2m4ZEyZkXtW0uQVBDHS+V4SVgT6xhNblacri/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")
+ .put("appId","800024")
+ .build();
+ JSONObject paramsTemplate = new JSONObject();
+ paramsTemplate.put("loginName", "hzya_rest");
+ paramsTemplate.put("dataXml", data);
+ String params = JSONObject.toJSONString(paramsTemplate);
+ logger.info("保存交易明细到OA底表请求参数:{}",params);
+ String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface").addHeaders(headerMap).body(params).timeout(60000).execute().body();
+ logger.info("保存交易明细到OA底表响应参数:{}",body);
+ }
+
+ /**
+ * 无流程表单模版
+ * transaction 交易明细
+ * payApply 支付申请日志
+ * @return
+ */
+ private String getXmlTemplate(){
+ return "";
+ }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICapFormDefinitionDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICapFormDefinitionDao.java
new file mode 100644
index 00000000..f892fa11
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICapFormDefinitionDao.java
@@ -0,0 +1,51 @@
+package com.hzya.frame.seeyon.dao;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.entity.CapFormDefinitionEntity;
+import com.hzya.frame.seeyon.entity.CtpFileEntity;
+import com.hzya.frame.seeyon.paybill.entity.PayBillEntity;
+
+import java.util.List;
+
+/**
+ *
+ * @content OA字段配置表DAO
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-09-09 16:00
+ *
+ */
+
+public interface ICapFormDefinitionDao extends IBaseDao {
+
+ /**
+ *
+ * @content 通过模版编号获取无流程表单配置信息
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-09-09 16:02
+ *
+ */
+ List getFormFiled(CapFormDefinitionEntity fieldInfo);
+/**
+ *
+ * @content 通过主键删除单据数据
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-09-09 17:04
+ *
+ */
+
+ int deleteByKey(CapFormDefinitionEntity fieldInfo);
+/**
+ *
+ * @content 通过客户传递的数据值查询古河条件的数据
+ * @className: Administrator
+ * @author laborer
+ * @date 2024-09-09 17:05
+ *
+ */
+
+ List getFormFiledByFileValue(CapFormDefinitionEntity fieldInfo);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpAttachmentDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpAttachmentDao.java
new file mode 100644
index 00000000..5c64e35f
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpAttachmentDao.java
@@ -0,0 +1,21 @@
+package com.hzya.frame.seeyon.dao;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.entity.CtpAttachmentEntity;
+
+import java.util.List;
+
+public interface ICtpAttachmentDao extends IBaseDao {
+ //更新数据
+ @DS("#ctpAttachmentEntity.dataSourceCode")
+ int updateCtpAttachment(CtpAttachmentEntity ctpAttachmentEntity);
+
+ //根据fiel_url查询附件业务记录,如果存在则更新,如果不存在则新增
+ @DS("#ctpAttachmentEntity.dataSourceCode")
+ List queryCtpAttachment(CtpAttachmentEntity ctpAttachmentEntity);
+
+ //新增
+ @DS("#ctpAttachmentEntity.dataSourceCode")
+ CtpAttachmentEntity saveCtpAttachment(CtpAttachmentEntity ctpAttachmentEntity);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpFileDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpFileDao.java
new file mode 100644
index 00000000..87961648
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ICtpFileDao.java
@@ -0,0 +1,12 @@
+package com.hzya.frame.seeyon.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.entity.CtpFileEntity;
+
+/**
+ * @Description seeyon 附件对象
+ * @Author xiangerlin
+ * @Date 2024/6/17 15:21
+ **/
+public interface ICtpFileDao extends IBaseDao {
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonDao.java
new file mode 100644
index 00000000..02d6888a
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonDao.java
@@ -0,0 +1,108 @@
+package com.hzya.frame.seeyon.dao;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.entity.SeeyonEntity;
+
+import java.util.List;
+
+/**
+ * com.hzya.frame.seeyon.dao
+ *
+ * @author yqh
+ * @date 2023-08 -30 10:43
+ */
+
+public interface ISeeYonDao extends IBaseDao {
+ /***
+ * @Content:通过类型获取OA基本档案数据
+ * @Author 👻👻👻👻yqh👻👻👻👻
+ * @Date 2023年8月30日11:33:17
+ * @Param seeyon
+ * @return
+ **/
+ @DS("ht_oa_sqlserver")
+ List selectOAListByTypeformson_0324(SeeyonEntity seeyon);
+ @DS("ht_oa_sqlserver")
+ List selectOAListByTypeformson_0352(SeeyonEntity seeyon);
+ @DS("ht_oa_sqlserver")
+ List selectOAListByTypeMain(SeeyonEntity seeyon);
+ /**
+ * 通过关联关系获取附件主键
+ * @param seeyonEntity
+ * @return
+ */
+ @DS("ht_oa_sqlserver")
+ List selectFileUrl(SeeyonEntity seeyonEntity);
+/***
+ * @Content:修改数据状态,避免重复抓取
+ * @Author 👻👻👻👻yqh👻👻👻👻
+ * @Date
+ * @Param
+ * @return
+ **/
+ int updateFormStete(SeeyonEntity s);
+
+ /**
+ *
+ * @content 查询付款单中得电子回单
+ * @Param
+ * @Return
+ * @Author hecan
+ * @Date 2023/11/9 14:23
+ * **/
+ @DS("ht_oa_sqlserver")
+ List selectOAListByTypeformmain_0327(SeeyonEntity seeyon);
+ @DS("ht_oa_sqlserver")
+ int updateFormformmain_0327(SeeyonEntity seeyon);
+
+ /**
+ *
+ * @content 根据付款方id查询付款名
+ * @Param
+ * @Return
+ * @Author hecan
+ * @Date 2023/11/9 14:23
+ * **/
+ @DS("ht_oa_sqlserver")
+ List selectOAListByField0258(SeeyonEntity seeyon);
+
+ /**
+ *
+ * @content 查询速网U8C中的所有组织
+ * @Param
+ * @Return
+ * @Author hecan
+ * @Date 2023/11/13 11:56
+ * **/
+ @DS("sowow_sqlserver_test")
+ List selectOAListByCorp(SeeyonEntity seeyon);
+
+ /**
+ *
+ * @content 修改OA中的字段为速网U8C销售订单主键
+ * @Param
+ * @Return
+ * @Author hecan
+ * @Date 2023/11/15 11:28
+ * **/
+ @DS("swoa_mysql")
+ int updateFormformmain_0237(SeeyonEntity seeyonEntity);
+ @DS("swoa_mysql")
+ int updateFormformson_0238(SeeyonEntity seeyonEntity);
+ //根据销售订单编码查询档案主键
+ @DS("swoa_mysql")
+ SeeyonEntity selectOAListByformmain_0237(SeeyonEntity seeyonEntity);
+
+ /**
+ *
+ * @content 修改付款单报销单等单据的推送状态
+ * @Param
+ * @Return
+ * @Author hecan
+ * @Date 2023/12/20 8:59
+ * **/
+ @DS("ht_oa_sqlserver")
+ int updatepush(SeeyonEntity seeyon);
+
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonInterFaceDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonInterFaceDao.java
new file mode 100644
index 00000000..2edbc648
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/ISeeYonInterFaceDao.java
@@ -0,0 +1,37 @@
+package com.hzya.frame.seeyon.dao;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.seeyon.entity.SeeYonInterFaceEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 👻👻👻👻👻👻👻👻👻👻 gjh
+ * @version 1.0
+ * @content
+ * @date 2023-08-30 10:27
+ */
+public interface ISeeYonInterFaceDao {
+ /***
+ * 查询OA档案数据,暂时只根据ID查询,只返回ID集合,此方法暂时用于更新无流程表单判断
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2023-08-30 10:54
+ * @param
+ * @return java.util.List
+ **/
+ List queryArchives(SeeYonInterFaceEntity seeYonInterFaceEntity);
+
+ /***
+ * 答应我写注释好吗
+ * @content:
+ * @author 👻👻👻👻👻👻👻👻 gjh
+ * @date 2024-01-18 16:01
+ * @param jsonObject 根据模版ID获取数据
+ * @return java.util.List
+ **/
+ List queryDefinitionInfo(SeeYonInterFaceEntity jsonObject);
+ List