diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/ReportDataSyncPluginApi.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/ReportDataSyncPluginApi.java new file mode 100644 index 0000000..fe1e321 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/ReportDataSyncPluginApi.java @@ -0,0 +1,43 @@ +package com.seeyon.apps.src_reportDataSync; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_reportDataSync.constants.U8DataSyncConstants; + +public class ReportDataSyncPluginApi extends APluginInfoApi { + + public ReportDataSyncPluginApi() { + } + + public String getPluginId() { + System.out.println(U8DataSyncConstants.getPluginId()); + return U8DataSyncConstants.getPluginId(); + } + + @Override + public String getCreateUser() { + return "橙阳科技"; + } + + @Override + public String getDescription() { + return "U8数据定时同步开发"; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + U8DataSyncConstants[] var2 = U8DataSyncConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + U8DataSyncConstants value = var2[var4]; + if (value != U8DataSyncConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/constants/U8DataSyncConstants.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/constants/U8DataSyncConstants.java new file mode 100644 index 0000000..be46bb7 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/constants/U8DataSyncConstants.java @@ -0,0 +1,38 @@ +package com.seeyon.apps.src_reportDataSync.constants; + +public enum U8DataSyncConstants { + + plugin("src_reportDataSync","插件ID"), + ipcorp("","U8C环境信息"), + icOnhandQuery("/u8cloud/api/ic/onhand/query","库存数据查询接口"), + icMaterialoutQuery("/u8cloud/api/ic/materialout/query","材料出库单查询接口"), + icPurchaseinQuery("/u8cloud/api/ic/purchasein/query","采购入库单查询接口"), + icProductinQuery("/u8cloud/api/ic/productin/query","产成品入库单查询接口"), + icOtherinQuery("/u8cloud/api/ic/otherin/query","其他入库单查询接口"), + icOtheroutQuery("/u8cloud/api/ic/otherout/query","其他出库单查询接口"), + icSaleoutQuery("/u8cloud/api/ic/saleout/query","销售出库单查询接口"), + corp("11","U8公司编码"), + calbody("XTC001","U8库存组织"), + ; + + U8DataSyncConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + private String defaultValue; + private String description; + + public String getDefaultValue() { + return defaultValue; + } + + public String getDescription() { + return description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/dao/U8cSyncDao.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/dao/U8cSyncDao.java new file mode 100644 index 0000000..6ff9327 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/dao/U8cSyncDao.java @@ -0,0 +1,1478 @@ +package com.seeyon.apps.src_reportDataSync.dao; + +import cn.hutool.log.Log; +import com.seeyon.apps.src_reportDataSync.po.*; +import com.seeyon.ctp.util.JDBCAgent; +import com.seeyon.ctp.util.UUIDLong; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class U8cSyncDao { + + private static final Log log = Log.get(U8cSyncDao.class); + + private static final String ONHAND_TABLE_NAME = "src_onhand_data"; + + /** + * 保存或更新现存量数据 + * 按照数据日期、单位id、存货id、库存组织id、仓库id为唯一键进行动态新增修改 + * @param dataDate 数据日期 + * @param onhandList 现存量数据列表 + * @return 成功保存的数量 + */ + public int onhandSaveOrUpdate(String dataDate, List onhandList) { + int successCount = 0; + if (onhandList == null || onhandList.isEmpty()) { + return successCount; + } + for (OnhandPo po : onhandList) { + try { + boolean result = false; + boolean exists = onhandCheckExists(dataDate, po.getPkCorp(), po.getCinventoryid(), + po.getCcalbodyid(), po.getCwarehouseid()); + if (exists) { + result = updateOnhand(dataDate, po); + } else { + result = insertOnhand(dataDate, po); + } + if (result) { + successCount++; + } + } catch (Exception e) { + log.error("保存现存量数据失败,单位:{}, 存货:{}, 仓库:{}", + po.getPkCorp(), po.getCinventoryid(), po.getCwarehouseid(), e); + } + } + return successCount; + } + + /** + * 批量保存或更新现存量数据 + * @param onhandList 现存量数据列表(使用OnhandPo中的dataDate字段) + * @return 成功保存的数量 + */ + public int onhandBatchSaveOrUpdate(List onhandList) { + int successCount = 0; + if (onhandList == null || onhandList.isEmpty()) { + return successCount; + } + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + for (OnhandPo po : onhandList) { + try { + String dataDate = dateFormat.format(po.getDataDate()); + boolean result = false; + boolean exists = onhandCheckExists(dataDate, po.getPkCorp(), po.getCinventoryid(), + po.getCcalbodyid(), po.getCwarehouseid()); + + if (exists) { + result = updateOnhand(dataDate, po); + } else { + result = insertOnhand(dataDate, po); + } + if (result) { + successCount++; + } + } catch (Exception e) { + log.error("保存现存量数据失败,单位:{}, 存货:{}, 仓库:{}", + po.getPkCorp(), po.getCinventoryid(), po.getCwarehouseid(), e); + } + } + return successCount; + } + + /** + * 检查记录是否存在 + */ + private boolean onhandCheckExists(String dataDate, String pkCorp, String cinventoryid, + String ccalbodyid, String cwarehouseid) { + String sql = "SELECT COUNT(*) as cnt FROM " + ONHAND_TABLE_NAME + + " WHERE data_date = ? AND pk_corp = ? AND cinventoryid = ?" + + " AND ccalbodyid = ? AND cwarehouseid = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(dataDate); + params.add(pkCorp); + params.add(cinventoryid); + params.add(ccalbodyid); + params.add(cwarehouseid); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查现存量记录是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增现存量数据 + */ + private boolean insertOnhand(String dataDate, OnhandPo po) { + String sql = "INSERT INTO " + ONHAND_TABLE_NAME + + " (id, data_date, pk_corp, corp_code, corp_name, ccalbodyid, ccalbody_code, ccalbody_name," + + " cwarehouseid, cwarehouse_code, cwarehouse_name, cinventoryid, cinventory_code," + + " cinventory_name, invspec, nnum, nastnum, nfreezenum)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(dataDate); + params.add(po.getPkCorp()); + params.add(po.getCorpCode()); + params.add(po.getCorpName()); + params.add(po.getCcalbodyid()); + params.add(po.getCcalbodyCode()); + params.add(po.getCcalbodyName()); + params.add(po.getCwarehouseid()); + params.add(po.getCwarehouseCode()); + params.add(po.getCwarehouseName()); + params.add(po.getCinventoryid()); + params.add(po.getCinventoryCode()); + params.add(po.getCinventoryName()); + params.add(po.getInvspec()); + params.add(po.getNnum()); + params.add(po.getNastnum()); + params.add(po.getNfreezenum()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增现存量数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新现存量数据 + */ + private boolean updateOnhand(String dataDate, OnhandPo po) { + String sql = "UPDATE " + ONHAND_TABLE_NAME + + " SET corp_code = ?, corp_name = ?, ccalbody_code = ?, ccalbody_name = ?," + + " cwarehouse_code = ?, cwarehouse_name = ?, cinventory_code = ?, cinventory_name = ?," + + " invspec = ?, nnum = ?, nastnum = ?, nfreezenum = ?" + + " WHERE data_date = ? AND pk_corp = ? AND cinventoryid = ?" + + " AND ccalbodyid = ? AND cwarehouseid = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getCorpCode()); + params.add(po.getCorpName()); + params.add(po.getCcalbodyCode()); + params.add(po.getCcalbodyName()); + params.add(po.getCwarehouseCode()); + params.add(po.getCwarehouseName()); + params.add(po.getCinventoryCode()); + params.add(po.getCinventoryName()); + params.add(po.getInvspec()); + params.add(po.getNnum()); + params.add(po.getNastnum()); + params.add(po.getNfreezenum()); + // WHERE条件 + params.add(dataDate); + params.add(po.getPkCorp()); + params.add(po.getCinventoryid()); + params.add(po.getCcalbodyid()); + params.add(po.getCwarehouseid()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新现存量数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + // ========== 材料出库单相关方法 ========== + + private static final String MATERIALOUT_TABLE_NAME = "src_materialout_data"; + private static final String MATERIALOUT_DETAIL_TABLE_NAME = "src_materialout_detail_data"; + + /** + * 批量保存材料出库单数据 + * @param materialoutList 材料出库单列表 + * @return 成功保存的数量 + */ + public int materialoutSaveOrUpdate(List materialoutList) { + int successCount = 0; + if (materialoutList == null || materialoutList.isEmpty()) { + return successCount; + } + for (MaterialoutPo po : materialoutList) { + try { + boolean result = false; + boolean exists = materialoutCheckExists(po.getCgeneralhid()); + if (exists) { + result = updateMaterialout(po); + } else { + result = insertMaterialout(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + saveMaterialoutDetails(po.getCgeneralhid(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存材料出库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查材料出库单是否存在 + */ + private boolean materialoutCheckExists(String cgeneralhid) { + String sql = "SELECT COUNT(*) as cnt FROM " + MATERIALOUT_TABLE_NAME + + " WHERE cgeneralhid = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(cgeneralhid); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查材料出库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增材料出库单主表数据 + */ + private boolean insertMaterialout(MaterialoutPo po) { + String sql = "INSERT INTO " + MATERIALOUT_TABLE_NAME + + " (id, cgeneralhid, vbillcode, dbilldate, pk_corp, corp_code, corp_name," + + " pk_calbody, calbody_code, calbody_name, cwarehouseid, cwarehouseid_code, cwarehouseid_name," + + " cdispatcherid, cdispatcherid_code, cdispatcherid_name," + + " coperatorid, coperatorid_code, coperatorid_name, cwhsmanagerid)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getCgeneralhid()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getPkCorp()); + params.add(po.getCorpCode()); + params.add(po.getCorpName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getCwarehouseid()); + params.add(po.getCwarehouseidCode()); + params.add(po.getCwarehouseidName()); + params.add(po.getCdispatcherid()); + params.add(po.getCdispatcheridCode()); + params.add(po.getCdispatcheridName()); + params.add(po.getCoperatorid()); + params.add(po.getCoperatoridCode()); + params.add(po.getCoperatoridName()); + params.add(po.getCwhsmanagerid()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增材料出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新材料出库单主表数据 + */ + private boolean updateMaterialout(MaterialoutPo po) { + String sql = "UPDATE " + MATERIALOUT_TABLE_NAME + + " SET vbillcode = ?, dbilldate = ?, pk_corp = ?, corp_code = ?, corp_name = ?," + + " pk_calbody = ?, calbody_code = ?, calbody_name = ?," + + " cwarehouseid = ?, cwarehouseid_code = ?, cwarehouseid_name = ?," + + " cdispatcherid = ?, cdispatcherid_code = ?, cdispatcherid_name = ?," + + " coperatorid = ?, coperatorid_code = ?, coperatorid_name = ?, cwhsmanagerid = ?" + + " WHERE cgeneralhid = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); +// params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getPkCorp()); + params.add(po.getCorpCode()); + params.add(po.getCorpName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getCwarehouseid()); + params.add(po.getCwarehouseidCode()); + params.add(po.getCwarehouseidName()); + params.add(po.getCdispatcherid()); + params.add(po.getCdispatcheridCode()); + params.add(po.getCdispatcheridName()); + params.add(po.getCoperatorid()); + params.add(po.getCoperatoridCode()); + params.add(po.getCoperatoridName()); + params.add(po.getCwhsmanagerid()); + params.add(po.getCgeneralhid()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新材料出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存材料出库单明细数据 + */ + private int saveMaterialoutDetails(String cgeneralhid, List details) { + int successCount = 0; + // 先删除原有明细 + deleteMaterialoutDetails(cgeneralhid); + // 再插入新明细 + for (MaterialoutDetailPo detail : details) { + detail.setCgeneralhid(cgeneralhid); + if (insertMaterialoutDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除材料出库单明细数据 + */ + private void deleteMaterialoutDetails(String cgeneralhid) { + String sql = "DELETE FROM " + MATERIALOUT_DETAIL_TABLE_NAME + " WHERE cgeneralhid = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(cgeneralhid); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除材料出库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增材料出库单明细数据 + */ + private boolean insertMaterialoutDetail(MaterialoutDetailPo po) { + String sql = "INSERT INTO " + MATERIALOUT_DETAIL_TABLE_NAME + + " (id, cgeneralbid, cgeneralhid, cinventoryid, cinventoryid_code, cinventoryid_name," + + " invspec, noutnum, crowno, pk_measdoc, pk_measdoc_code, pk_measdoc_name)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getCgeneralbid()); + params.add(po.getCgeneralhid()); + params.add(po.getCinventoryid()); + params.add(po.getCinventoryidCode()); + params.add(po.getCinventoryidName()); + params.add(po.getInvspec()); + params.add(po.getNoutnum()); + params.add(po.getCrowno()); + params.add(po.getPkMeasdoc()); + params.add(po.getPkMeasdocCode()); + params.add(po.getPkMeasdocName()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增材料出库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + // ========== 采购入库单相关方法 ========== + + private static final String PURCHASEIN_TABLE_NAME = "src_purchasein_data"; + private static final String PURCHASEIN_DETAIL_TABLE_NAME = "src_purchasein_detail_data"; + + /** + * 批量保存采购入库单数据 + * @param purchaseinList 采购入库单列表 + * @return 成功保存的数量 + */ + public int purchaseinSaveOrUpdate(List purchaseinList) { + int successCount = 0; + if (purchaseinList == null || purchaseinList.isEmpty()) { + return successCount; + } + for (PurchaseinPo po : purchaseinList) { + try { + boolean result = false; + boolean exists = purchaseinCheckExists(po.getVbillcode()); + if (exists) { + result = updatePurchasein(po); + } else { + result = insertPurchasein(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + savePurchaseinDetails(po.getVbillcode(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存采购入库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查采购入库单是否存在 + */ + private boolean purchaseinCheckExists(String vbillcode) { + String sql = "SELECT COUNT(*) as cnt FROM " + PURCHASEIN_TABLE_NAME + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查采购入库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增采购入库单主表数据 + */ + private boolean insertPurchasein(PurchaseinPo po) { + String sql = "INSERT INTO " + PURCHASEIN_TABLE_NAME + + " (id, cauditorid, auditor_code, auditor_name, pk_calbody, calbody_code, calbody_name," + + " coperatorid, operator_code, operator_name, cregister, register_code, register_name," + + " vbillcode, dbilldate, cwarehouseid,warehouseid_code, warehouseid_name, cproviderid, provider_code," + + " provider_name,dr)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCproviderid()); + params.add(po.getProviderCode()); + params.add(po.getProviderName()); + params.add(po.getDr()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增采购入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新采购入库单主表数据 + */ + private boolean updatePurchasein(PurchaseinPo po) { + String sql = "UPDATE " + PURCHASEIN_TABLE_NAME + + " SET cauditorid = ?, auditor_code = ?, auditor_name = ?, pk_calbody = ?, calbody_code = ?," + + " calbody_name = ?, coperatorid = ?, operator_code = ?, operator_name = ?, cregister = ?, " + + " register_code = ?, register_name = ?, dbilldate = ?, cwarehouseid = ?," + + " warehouseid_code = ?, warehouseid_name = ?, cproviderid = ?, provider_code = ? ,provider_name = ? ,dr = ? " + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCproviderid()); + params.add(po.getProviderCode()); + params.add(po.getProviderName()); + params.add(po.getDr()); + params.add(po.getVbillcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新采购入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存采购入库单明细数据 + */ + private int savePurchaseinDetails(String vbillcode, List details) { + int successCount = 0; + // 先删除原有明细 + deletePurchaseinDetails(vbillcode); + // 再插入新明细 + for (PurchaseinDetailPo detail : details) { + detail.setVbillcode(vbillcode); + if (insertPurchaseinDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除采购入库单明细数据 + */ + private void deletePurchaseinDetails(String vbillcode) { + String sql = "DELETE FROM " + PURCHASEIN_DETAIL_TABLE_NAME + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除采购入库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增采购入库单明细数据 + */ + private boolean insertPurchaseinDetail(PurchaseinDetailPo po) { + String sql = "INSERT INTO " + PURCHASEIN_DETAIL_TABLE_NAME + + " (id, vbillcode, cinventoryid, inventory_code, inventory_name, invspec," + + " invtype, ninnum, nprice, nquotentmny, ntaxprice, ntaxmny, vbatchcode)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getCinventoryid()); + params.add(po.getInventoryCode()); + params.add(po.getInventoryName()); + params.add(po.getInvspec()); + params.add(po.getInvtype()); + params.add(po.getNinnum()); + params.add(po.getNprice()); + params.add(po.getNquotentmny()); + params.add(po.getNtaxprice()); + params.add(po.getNtaxmny()); + params.add(po.getVbatchcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增采购入库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + + + // ========== 产成品入库单相关方法 ========== + + private static final String PRODUCTIN_TABLE_NAME = "src_productin_data"; + private static final String PRODUCTIN_DETAIL_TABLE_NAME = "src_productin_detail_data"; + + /** + * 批量保存产成品入库单数据 + * @param productinList 采购入库单列表 + * @return 成功保存的数量 + */ + public int productinSaveOrUpdate(List productinList) { + int successCount = 0; + if (productinList == null || productinList.isEmpty()) { + return successCount; + } + for (ProductinPo po : productinList) { + try { + boolean result = false; + boolean exists = productinCheckExists(po.getVbillcode()); + if (exists) { + result = updateProductin(po); + } else { + result = insertProductin(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + saveProductinDetails(po.getVbillcode(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存产成品入库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查产成品入库单是否存在 + */ + private boolean productinCheckExists(String vbillcode) { + String sql = "SELECT COUNT(*) as cnt FROM " + PRODUCTIN_TABLE_NAME + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查采购入库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增产成品入库单主表数据 + */ + private boolean insertProductin(ProductinPo po) { + String sql = "INSERT INTO " + PRODUCTIN_TABLE_NAME + + " (id, vbillcode, dbilldate, cwarehouseid, warehouseid_code, warehouseid_name, coperatorid," + + " operator_code, operator_name, cregister, register_code, register_name, cauditorid," + + " auditor_code, auditor_name, pk_calbody,calbody_code, calbody_name, dr)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增产成品入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新产成品入库单主表数据 + */ + private boolean updateProductin(ProductinPo po) { + String sql = "UPDATE " + PRODUCTIN_TABLE_NAME + + " SET dbilldate = ?, cwarehouseid = ?, warehouseid_code = ?, warehouseid_name = ?, coperatorid = ?," + + " operator_code = ?, operator_name = ?, cregister = ?, register_code = ?, register_name = ?, " + + " cauditorid = ?, auditor_code = ?, auditor_name = ?, pk_calbody = ?," + + " calbody_code = ?, calbody_name = ?, dr = ?" + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + params.add(po.getVbillcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新产成品入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存产成品入库单明细数据 + */ + private int saveProductinDetails(String vbillcode, List details) { + int successCount = 0; + // 先删除原有明细 + deleteProductinDetails(vbillcode); + // 再插入新明细 + for (ProductinDetailPo detail : details) { + detail.setVbillcode(vbillcode); + if (insertProductinDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除产成品入库单明细数据 + */ + private void deleteProductinDetails(String vbillcode) { + String sql = "DELETE FROM " + PRODUCTIN_DETAIL_TABLE_NAME + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除产成品入库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增产成品入库单明细数据 + */ + private boolean insertProductinDetail(ProductinDetailPo po) { + String sql = "INSERT INTO " + PRODUCTIN_DETAIL_TABLE_NAME + + " (id, vbillcode, inventory_code, inventory_name, ninnum, nmny, vbatchcode)" + + " VALUES (?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getInventoryCode()); + params.add(po.getInventoryName()); + params.add(po.getNinnum()); + params.add(po.getNmny()); + params.add(po.getVbatchcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增产成品入库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + + // ========== 其他入库单相关方法 ========== + + private static final String OTHERIN_TABLE_NAME = "src_otherin_data"; + private static final String OTHERIN_DETAIL_TABLE_NAME = "src_otherin_detail_data"; + + /** + * 批量保存其他入库单数据 + * @param otherinList 采购入库单列表 + * @return 成功保存的数量 + */ + public int otherinSaveOrUpdate(List otherinList) { + int successCount = 0; + if (otherinList == null || otherinList.isEmpty()) { + return successCount; + } + for (OtherinPo po : otherinList) { + try { + boolean result = false; + boolean exists = otherinCheckExists(po.getVbillcode()); + if (exists) { + result = updateOtherin(po); + } else { + result = insertOtherin(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + saveOtherinDetails(po.getVbillcode(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存其他入库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查其他入库单是否存在 + */ + private boolean otherinCheckExists(String vbillcode) { + String sql = "SELECT COUNT(*) as cnt FROM " + OTHERIN_TABLE_NAME + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查其他入库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增其他入库单主表数据 + */ + private boolean insertOtherin(OtherinPo po) { + String sql = "INSERT INTO " + OTHERIN_TABLE_NAME + + " (id, vbillcode, dbilldate, cwarehouseid, warehouseid_code, warehouseid_name, coperatorid," + + " operator_code, operator_name, cregister, register_code, register_name, cauditorid," + + " auditor_code, auditor_name, pk_calbody,calbody_code, calbody_name, dr)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增其他入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新其他入库单主表数据 + */ + private boolean updateOtherin(OtherinPo po) { + String sql = "UPDATE " + OTHERIN_TABLE_NAME + + " SET dbilldate = ?, cwarehouseid = ?, warehouseid_code = ?, warehouseid_name = ?, coperatorid = ?," + + " operator_code = ?, operator_name = ?, cregister = ?, register_code = ?, register_name = ?, " + + " cauditorid = ?, auditor_code = ?, auditor_name = ?, pk_calbody = ?," + + " calbody_code = ?, calbody_name = ?, dr = ?" + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + params.add(po.getVbillcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新其他入库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存其他入库单明细数据 + */ + private int saveOtherinDetails(String vbillcode, List details) { + int successCount = 0; + // 先删除原有明细 + deleteOtherinDetails(vbillcode); + // 再插入新明细 + for (OtherinDetailPo detail : details) { + detail.setVbillcode(vbillcode); + if (insertOtherinDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除其他入库单明细数据 + */ + private void deleteOtherinDetails(String vbillcode) { + String sql = "DELETE FROM " + OTHERIN_DETAIL_TABLE_NAME + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除其他入库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增其他入库单明细数据 + */ + private boolean insertOtherinDetail(OtherinDetailPo po) { + String sql = "INSERT INTO " + OTHERIN_DETAIL_TABLE_NAME + + " (id, vbillcode, inventory_code, inventory_name, ninnum, nmny, vbatchcode)" + + " VALUES (?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getInventoryCode()); + params.add(po.getInventoryName()); + params.add(po.getNinnum()); + params.add(po.getNmny()); + params.add(po.getVbatchcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增其他入库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + // ========== 其他出库单相关方法 ========== + + private static final String OTHEROUT_TABLE_NAME = "src_otherout_data"; + private static final String OTHEROUT_DETAIL_TABLE_NAME = "src_otherout_detail_data"; + + /** + * 批量保存其他出库单数据 + * @param otheroutList 其他出库单列表 + * @return 成功保存的数量 + */ + public int otheroutSaveOrUpdate(List otheroutList) { + int successCount = 0; + if (otheroutList == null || otheroutList.isEmpty()) { + return successCount; + } + for (OtheroutPo po : otheroutList) { + try { + boolean result = false; + boolean exists = otheroutCheckExists(po.getVbillcode()); + if (exists) { + result = updateOtherout(po); + } else { + result = insertOtherout(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + saveOtheroutDetails(po.getVbillcode(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存其他出库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查其他出库单是否存在 + */ + private boolean otheroutCheckExists(String vbillcode) { + String sql = "SELECT COUNT(*) as cnt FROM " + OTHEROUT_TABLE_NAME + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查其他出库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增其他出库单主表数据 + */ + private boolean insertOtherout(OtheroutPo po) { + String sql = "INSERT INTO " + OTHEROUT_TABLE_NAME + + " (id, vbillcode, dbilldate, cwarehouseid, warehouseid_code, warehouseid_name, coperatorid," + + " operator_code, operator_name, cregister, register_code, register_name, cauditorid," + + " auditor_code, auditor_name, pk_calbody,calbody_code, calbody_name, dr)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增其他出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新其他出库单主表数据 + */ + private boolean updateOtherout(OtheroutPo po) { + String sql = "UPDATE " + OTHEROUT_TABLE_NAME + + " SET dbilldate = ?, cwarehouseid = ?, warehouseid_code = ?, warehouseid_name = ?, coperatorid = ?," + + " operator_code = ?, operator_name = ?, cregister = ?, register_code = ?, register_name = ?, " + + " cauditorid = ?, auditor_code = ?, auditor_name = ?, pk_calbody = ?," + + " calbody_code = ?, calbody_name = ?, dr = ?" + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + params.add(po.getVbillcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新其他出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存其他出库单明细数据 + */ + private int saveOtheroutDetails(String vbillcode, List details) { + int successCount = 0; + // 先删除原有明细 + deleteOtheroutDetails(vbillcode); + // 再插入新明细 + for (OtheroutDetailPo detail : details) { + detail.setVbillcode(vbillcode); + if (insertOtheroutDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除其他出库单明细数据 + */ + private void deleteOtheroutDetails(String vbillcode) { + String sql = "DELETE FROM " + OTHEROUT_DETAIL_TABLE_NAME + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除其他出库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增其他出库单明细数据 + */ + private boolean insertOtheroutDetail(OtheroutDetailPo po) { + String sql = "INSERT INTO " + OTHEROUT_DETAIL_TABLE_NAME + + " (id, vbillcode, inventory_code, inventory_name, ninnum, nmny, vbatchcode)" + + " VALUES (?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getInventoryCode()); + params.add(po.getInventoryName()); + params.add(po.getNinnum()); + params.add(po.getNmny()); + params.add(po.getVbatchcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增其他出库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + // ========== 销售出库单相关方法 ========== + + private static final String SALEOUT_TABLE_NAME = "src_saleout_data"; + private static final String SALEOUT_DETAIL_TABLE_NAME = "src_saleout_detail_data"; + + /** + * 批量保存其他出库单数据 + * @param otheroutList 其他出库单列表 + * @return 成功保存的数量 + */ + public int saleoutSaveOrUpdate(List saleoutList) { + int successCount = 0; + if (saleoutList == null || saleoutList.isEmpty()) { + return successCount; + } + for (SaleoutPo po : saleoutList) { + try { + boolean result = false; + boolean exists = saleoutCheckExists(po.getVbillcode()); + if (exists) { + result = updateSaleout(po); + } else { + result = insertSaleout(po); + } + if (result) { + // 保存明细数据 + if (po.getChildrenvo() != null && !po.getChildrenvo().isEmpty()) { + saveSaleoutDetails(po.getVbillcode(), po.getChildrenvo()); + } + successCount++; + } + } catch (Exception e) { + log.error("保存销售出库单数据失败,单据编号:{}", po.getVbillcode(), e); + } + } + return successCount; + } + + /** + * 检查其他出库单是否存在 + */ + private boolean saleoutCheckExists(String vbillcode) { + String sql = "SELECT COUNT(*) as cnt FROM " + SALEOUT_TABLE_NAME + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + List list = jdbcAgent.resultSetToList(); + if (list != null && list.size() > 0) { + Map map = (Map) list.get(0); + Long count = (Long) map.get("cnt"); + return count != null && count > 0; + } + } catch (Exception e) { + log.error("检查其他出库单是否存在失败", e); + } finally { + jdbcAgent.close(); + } + return false; + } + + /** + * 新增销售出库单主表数据 + */ + private boolean insertSaleout(SaleoutPo po) { + String sql = "INSERT INTO " + SALEOUT_TABLE_NAME + + " (id, vbillcode, dbilldate, cwarehouseid, warehouseid_code, warehouseid_name, coperatorid," + + " operator_code, operator_name, cregister, register_code, register_name, cauditorid," + + " auditor_code, auditor_name, pk_calbody,calbody_code, calbody_name, dr)" + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增销售出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 更新销售出库单主表数据 + */ + private boolean updateSaleout(SaleoutPo po) { + String sql = "UPDATE " + SALEOUT_TABLE_NAME + + " SET dbilldate = ?, cwarehouseid = ?, warehouseid_code = ?, warehouseid_name = ?, coperatorid = ?," + + " operator_code = ?, operator_name = ?, cregister = ?, register_code = ?, register_name = ?, " + + " cauditorid = ?, auditor_code = ?, auditor_name = ?, pk_calbody = ?," + + " calbody_code = ?, calbody_name = ?, dr = ?" + + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(po.getDbilldate()); + params.add(po.getCwarehouseid()); + params.add(po.getWarehouseidCode()); + params.add(po.getWarehouseidName()); + params.add(po.getCoperatorid()); + params.add(po.getOperatorCode()); + params.add(po.getOperatorName()); + params.add(po.getCregister()); + params.add(po.getRegisterCode()); + params.add(po.getRegisterName()); + params.add(po.getCauditorid()); + params.add(po.getAuditorCode()); + params.add(po.getAuditorName()); + params.add(po.getPkCalbody()); + params.add(po.getCalbodyCode()); + params.add(po.getCalbodyName()); + params.add(po.getDr()); + params.add(po.getVbillcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("更新销售出库单数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + /** + * 保存销售出库单明细数据 + */ + private int saveSaleoutDetails(String vbillcode, List details) { + int successCount = 0; + // 先删除原有明细 + deleteSaleoutDetails(vbillcode); + // 再插入新明细 + for (SaleoutDetailPo detail : details) { + detail.setVbillcode(vbillcode); + if (insertSaleoutDetail(detail)) { + successCount++; + } + } + return successCount; + } + + /** + * 删除销售出库单明细数据 + */ + private void deleteSaleoutDetails(String vbillcode) { + String sql = "DELETE FROM " + SALEOUT_DETAIL_TABLE_NAME + " WHERE vbillcode = ?"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(vbillcode); + jdbcAgent.execute(sql, params); + } catch (Exception e) { + log.error("删除销售出库单明细数据失败", e); + e.printStackTrace(); + } finally { + jdbcAgent.close(); + } + } + + /** + * 新增销售出库单明细数据 + */ + private boolean insertSaleoutDetail(SaleoutDetailPo po) { + String sql = "INSERT INTO " + SALEOUT_DETAIL_TABLE_NAME + + " (id, vbillcode, inventory_code, inventory_name, ninnum, nmny, vbatchcode)" + + " VALUES (?, ?, ?, ?, ?, ?, ?)"; + JDBCAgent jdbcAgent = new JDBCAgent(); + try { + List params = new ArrayList<>(); + params.add(UUIDLong.longUUID()); + params.add(po.getVbillcode()); + params.add(po.getInventoryCode()); + params.add(po.getInventoryName()); + params.add(po.getNinnum()); + params.add(po.getNmny()); + params.add(po.getVbatchcode()); + return jdbcAgent.execute(sql, params) > 0; + } catch (Exception e) { + log.error("新增销售出库单明细数据失败", e); + e.printStackTrace(); + return false; + } finally { + jdbcAgent.close(); + } + } + + + + + +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutDetailPo.java new file mode 100644 index 0000000..d9a718b --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutDetailPo.java @@ -0,0 +1,118 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; + +/** + * 材料出库单明细PO + */ +public class MaterialoutDetailPo { + + private Long id; // 主键ID + private String cgeneralbid; // 出库单明细ID + private String cgeneralhid; // 出库单主表ID(外键) + private String cinventoryid; // 存货ID + private String cinventoryidCode; // 存货编码 + private String cinventoryidName; // 存货名称 + private String invspec; // 规格型号 + private BigDecimal noutnum; // 出库数量 + private String crowno; // 行号 + private String pkMeasdoc; // 计量单位ID + private String pkMeasdocCode; // 计量单位编码 + private String pkMeasdocName; // 计量单位名称 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCgeneralbid() { + return cgeneralbid; + } + + public void setCgeneralbid(String cgeneralbid) { + this.cgeneralbid = cgeneralbid; + } + + public String getCgeneralhid() { + return cgeneralhid; + } + + public void setCgeneralhid(String cgeneralhid) { + this.cgeneralhid = cgeneralhid; + } + + public String getCinventoryid() { + return cinventoryid; + } + + public void setCinventoryid(String cinventoryid) { + this.cinventoryid = cinventoryid; + } + + public String getCinventoryidCode() { + return cinventoryidCode; + } + + public void setCinventoryidCode(String cinventoryidCode) { + this.cinventoryidCode = cinventoryidCode; + } + + public String getCinventoryidName() { + return cinventoryidName; + } + + public void setCinventoryidName(String cinventoryidName) { + this.cinventoryidName = cinventoryidName; + } + + public String getInvspec() { + return invspec; + } + + public void setInvspec(String invspec) { + this.invspec = invspec; + } + + public BigDecimal getNoutnum() { + return noutnum; + } + + public void setNoutnum(BigDecimal noutnum) { + this.noutnum = noutnum; + } + + public String getCrowno() { + return crowno; + } + + public void setCrowno(String crowno) { + this.crowno = crowno; + } + + public String getPkMeasdoc() { + return pkMeasdoc; + } + + public void setPkMeasdoc(String pkMeasdoc) { + this.pkMeasdoc = pkMeasdoc; + } + + public String getPkMeasdocCode() { + return pkMeasdocCode; + } + + public void setPkMeasdocCode(String pkMeasdocCode) { + this.pkMeasdocCode = pkMeasdocCode; + } + + public String getPkMeasdocName() { + return pkMeasdocName; + } + + public void setPkMeasdocName(String pkMeasdocName) { + this.pkMeasdocName = pkMeasdocName; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutPo.java new file mode 100644 index 0000000..f90111f --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/MaterialoutPo.java @@ -0,0 +1,201 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.util.Date; +import java.util.List; + +/** + * 材料出库单主表PO + */ +public class MaterialoutPo { + + private Long id; // 主键ID + private String cgeneralhid; // 出库单ID + private String vbillcode; // 单据编号 + private Date dbilldate; // 单据日期 + private String pkCorp; // 单位ID + private String corpCode; // 单位编码 + private String corpName; // 单位名称 + private String pkCalbody; // 库存组织ID + private String calbodyCode; // 库存组织编码 + private String calbodyName; // 库存组织名称 + private String cwarehouseid; // 仓库ID + private String cwarehouseidCode; // 仓库编码 + private String cwarehouseidName; // 仓库名称 + private String cdispatcherid; // 收发类型ID + private String cdispatcheridCode; // 收发类型编码 + private String cdispatcheridName; // 收发类型名称 + private String coperatorid; // 制单人ID + private String coperatoridCode; // 制单人编码 + private String coperatoridName; // 制单人名称 + private String cwhsmanagerid; // 仓库管理员ID + + private List childrenvo; // 子表数据 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCgeneralhid() { + return cgeneralhid; + } + + public void setCgeneralhid(String cgeneralhid) { + this.cgeneralhid = cgeneralhid; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getPkCorp() { + return pkCorp; + } + + public void setPkCorp(String pkCorp) { + this.pkCorp = pkCorp; + } + + public String getCorpCode() { + return corpCode; + } + + public void setCorpCode(String corpCode) { + this.corpCode = corpCode; + } + + public String getCorpName() { + return corpName; + } + + public void setCorpName(String corpName) { + this.corpName = corpName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getCwarehouseidCode() { + return cwarehouseidCode; + } + + public void setCwarehouseidCode(String cwarehouseidCode) { + this.cwarehouseidCode = cwarehouseidCode; + } + + public String getCwarehouseidName() { + return cwarehouseidName; + } + + public void setCwarehouseidName(String cwarehouseidName) { + this.cwarehouseidName = cwarehouseidName; + } + + public String getCdispatcherid() { + return cdispatcherid; + } + + public void setCdispatcherid(String cdispatcherid) { + this.cdispatcherid = cdispatcherid; + } + + public String getCdispatcheridCode() { + return cdispatcheridCode; + } + + public void setCdispatcheridCode(String cdispatcheridCode) { + this.cdispatcheridCode = cdispatcheridCode; + } + + public String getCdispatcheridName() { + return cdispatcheridName; + } + + public void setCdispatcheridName(String cdispatcheridName) { + this.cdispatcheridName = cdispatcheridName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getCoperatoridCode() { + return coperatoridCode; + } + + public void setCoperatoridCode(String coperatoridCode) { + this.coperatoridCode = coperatoridCode; + } + + public String getCoperatoridName() { + return coperatoridName; + } + + public void setCoperatoridName(String coperatoridName) { + this.coperatoridName = coperatoridName; + } + + public String getCwhsmanagerid() { + return cwhsmanagerid; + } + + public void setCwhsmanagerid(String cwhsmanagerid) { + this.cwhsmanagerid = cwhsmanagerid; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OnhandPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OnhandPo.java new file mode 100644 index 0000000..700f0e9 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OnhandPo.java @@ -0,0 +1,172 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; +import java.util.Date; + + +//现存量 +public class OnhandPo { + + private Long id;//主键ID + private String pkCorp;//单位ID + private String corpCode;//单位编码 + private String corpName;//单位名称 + private String ccalbodyid;//库存组织ID + private String ccalbodyCode;//库存组织编码 + private String ccalbodyName;//库存组织名称 + private String cwarehouseid;//仓库ID + private String cwarehouseCode;//仓库编码 + private String cwarehouseName;//仓库名称 + private String cinventoryid;//存货ID + private String cinventoryCode;//存货编码 + private String cinventoryName;//存货名称 + private String invspec;//规格型号 + private BigDecimal nnum;//数量 + private BigDecimal nastnum;//在途数量 + private BigDecimal nfreezenum;//冻结数量 + private Date dataDate;//数据日期 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Date getDataDate() { + return dataDate; + } + + public void setDataDate(Date dataDate) { + this.dataDate = dataDate; + } + + public String getPkCorp() { + return pkCorp; + } + + public void setPkCorp(String pkCorp) { + this.pkCorp = pkCorp; + } + + public String getCorpCode() { + return corpCode; + } + + public void setCorpCode(String corpCode) { + this.corpCode = corpCode; + } + + public String getCorpName() { + return corpName; + } + + public void setCorpName(String corpName) { + this.corpName = corpName; + } + + public String getCcalbodyid() { + return ccalbodyid; + } + + public void setCcalbodyid(String ccalbodyid) { + this.ccalbodyid = ccalbodyid; + } + + public String getCcalbodyCode() { + return ccalbodyCode; + } + + public void setCcalbodyCode(String ccalbodyCode) { + this.ccalbodyCode = ccalbodyCode; + } + + public String getCcalbodyName() { + return ccalbodyName; + } + + public void setCcalbodyName(String ccalbodyName) { + this.ccalbodyName = ccalbodyName; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getCwarehouseCode() { + return cwarehouseCode; + } + + public void setCwarehouseCode(String cwarehouseCode) { + this.cwarehouseCode = cwarehouseCode; + } + + public String getCwarehouseName() { + return cwarehouseName; + } + + public void setCwarehouseName(String cwarehouseName) { + this.cwarehouseName = cwarehouseName; + } + + public String getCinventoryid() { + return cinventoryid; + } + + public void setCinventoryid(String cinventoryid) { + this.cinventoryid = cinventoryid; + } + + public String getCinventoryCode() { + return cinventoryCode; + } + + public void setCinventoryCode(String cinventoryCode) { + this.cinventoryCode = cinventoryCode; + } + + public String getCinventoryName() { + return cinventoryName; + } + + public void setCinventoryName(String cinventoryName) { + this.cinventoryName = cinventoryName; + } + + public String getInvspec() { + return invspec; + } + + public void setInvspec(String invspec) { + this.invspec = invspec; + } + + public BigDecimal getNnum() { + return nnum; + } + + public void setNnum(BigDecimal nnum) { + this.nnum = nnum; + } + + public BigDecimal getNastnum() { + return nastnum; + } + + public void setNastnum(BigDecimal nastnum) { + this.nastnum = nastnum; + } + + public BigDecimal getNfreezenum() { + return nfreezenum; + } + + public void setNfreezenum(BigDecimal nfreezenum) { + this.nfreezenum = nfreezenum; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinDetailPo.java new file mode 100644 index 0000000..a31ed5f --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinDetailPo.java @@ -0,0 +1,71 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; + +public class OtherinDetailPo { + + private Long id; + private String vbillcode;//单据编号 + private String inventoryCode;//存货编码 + private String inventoryName;//存货名称 + private BigDecimal ninnum;//实入数量 + private BigDecimal nmny;//金额 + private String vbatchcode;//批次号 + + public String getInventoryCode() { + return inventoryCode; + } + + public void setInventoryCode(String inventoryCode) { + this.inventoryCode = inventoryCode; + } + + public String getInventoryName() { + return inventoryName; + } + + public void setInventoryName(String inventoryName) { + this.inventoryName = inventoryName; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public BigDecimal getNinnum() { + return ninnum; + } + + public void setNinnum(BigDecimal ninnum) { + this.ninnum = ninnum; + } + + public BigDecimal getNmny() { + return nmny; + } + + public void setNmny(BigDecimal nmny) { + this.nmny = nmny; + } + + public String getVbatchcode() { + return vbatchcode; + } + + public void setVbatchcode(String vbatchcode) { + this.vbatchcode = vbatchcode; + } + +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinPo.java new file mode 100644 index 0000000..1e7051b --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtherinPo.java @@ -0,0 +1,188 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.util.Date; +import java.util.List; + +public class OtherinPo { + + private Long id; + private String vbillcode;//单据号 + private Date dbilldate;//单据日期 + private String cwarehouseid;//仓库id + private String warehouseidCode;//仓库编码 + private String warehouseidName;//仓库名称 + private String coperatorid;//制单人id + private String operatorCode;//制单人编码 + private String operatorName;//制单人名称 + private String cregister;//签字人id + private String registerCode;//签字人编码 + private String registerName;//签字人名称 + private String cauditorid;//审核人id + private String auditorCode;//审核人编码 + private String auditorName;//审核人名称 + private String pkCalbody;//库存组织id + private String calbodyCode;//库存组织编码 + private String calbodyName;//库存组织名称 + private String dr;//删除标志 + private List childrenvo; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getWarehouseidCode() { + return warehouseidCode; + } + + public void setWarehouseidCode(String warehouseidCode) { + this.warehouseidCode = warehouseidCode; + } + + public String getWarehouseidName() { + return warehouseidName; + } + + public void setWarehouseidName(String warehouseidName) { + this.warehouseidName = warehouseidName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getOperatorCode() { + return operatorCode; + } + + public void setOperatorCode(String operatorCode) { + this.operatorCode = operatorCode; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getCregister() { + return cregister; + } + + public void setCregister(String cregister) { + this.cregister = cregister; + } + + public String getRegisterCode() { + return registerCode; + } + + public void setRegisterCode(String registerCode) { + this.registerCode = registerCode; + } + + public String getRegisterName() { + return registerName; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + + public String getCauditorid() { + return cauditorid; + } + + public void setCauditorid(String cauditorid) { + this.cauditorid = cauditorid; + } + + public String getAuditorCode() { + return auditorCode; + } + + public void setAuditorCode(String auditorCode) { + this.auditorCode = auditorCode; + } + + public String getAuditorName() { + return auditorName; + } + + public void setAuditorName(String auditorName) { + this.auditorName = auditorName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getDr() { + return dr; + } + + public void setDr(String dr) { + this.dr = dr; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutDetailPo.java new file mode 100644 index 0000000..2246e74 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutDetailPo.java @@ -0,0 +1,70 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; + +public class OtheroutDetailPo { + + private Long id; + private String vbillcode;//单据编号 + private String inventoryCode;//存货编码 + private String inventoryName;//存货名称 + private BigDecimal ninnum;//实入数量 + private BigDecimal nmny;//金额 + private String vbatchcode;//批次号 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public String getInventoryCode() { + return inventoryCode; + } + + public void setInventoryCode(String inventoryCode) { + this.inventoryCode = inventoryCode; + } + + public String getInventoryName() { + return inventoryName; + } + + public void setInventoryName(String inventoryName) { + this.inventoryName = inventoryName; + } + + public BigDecimal getNinnum() { + return ninnum; + } + + public void setNinnum(BigDecimal ninnum) { + this.ninnum = ninnum; + } + + public BigDecimal getNmny() { + return nmny; + } + + public void setNmny(BigDecimal nmny) { + this.nmny = nmny; + } + + public String getVbatchcode() { + return vbatchcode; + } + + public void setVbatchcode(String vbatchcode) { + this.vbatchcode = vbatchcode; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutPo.java new file mode 100644 index 0000000..bdd3d0e --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/OtheroutPo.java @@ -0,0 +1,188 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.util.Date; +import java.util.List; + +public class OtheroutPo { + + private Long id; + private String vbillcode;//单据号 + private Date dbilldate;//单据日期 + private String cwarehouseid;//仓库id + private String warehouseidCode;//仓库编码 + private String warehouseidName;//仓库名称 + private String coperatorid;//制单人id + private String operatorCode;//制单人编码 + private String operatorName;//制单人名称 + private String cregister;//签字人id + private String registerCode;//签字人编码 + private String registerName;//签字人名称 + private String cauditorid;//审核人id + private String auditorCode;//审核人编码 + private String auditorName;//审核人名称 + private String pkCalbody;//库存组织id + private String calbodyCode;//库存组织编码 + private String calbodyName;//库存组织名称 + private String dr;//删除标志 + private List childrenvo; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getWarehouseidCode() { + return warehouseidCode; + } + + public void setWarehouseidCode(String warehouseidCode) { + this.warehouseidCode = warehouseidCode; + } + + public String getWarehouseidName() { + return warehouseidName; + } + + public void setWarehouseidName(String warehouseidName) { + this.warehouseidName = warehouseidName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getOperatorCode() { + return operatorCode; + } + + public void setOperatorCode(String operatorCode) { + this.operatorCode = operatorCode; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getCregister() { + return cregister; + } + + public void setCregister(String cregister) { + this.cregister = cregister; + } + + public String getRegisterCode() { + return registerCode; + } + + public void setRegisterCode(String registerCode) { + this.registerCode = registerCode; + } + + public String getRegisterName() { + return registerName; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + + public String getCauditorid() { + return cauditorid; + } + + public void setCauditorid(String cauditorid) { + this.cauditorid = cauditorid; + } + + public String getAuditorCode() { + return auditorCode; + } + + public void setAuditorCode(String auditorCode) { + this.auditorCode = auditorCode; + } + + public String getAuditorName() { + return auditorName; + } + + public void setAuditorName(String auditorName) { + this.auditorName = auditorName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getDr() { + return dr; + } + + public void setDr(String dr) { + this.dr = dr; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinDetailPo.java new file mode 100644 index 0000000..6a74fa6 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinDetailPo.java @@ -0,0 +1,72 @@ +package com.seeyon.apps.src_reportDataSync.po; + + +import java.math.BigDecimal; + +//产成品入库单表体 +public class ProductinDetailPo { + + private Long id; + private String vbillcode;//单据编号 + private String inventoryCode;//存货编码 + private String inventoryName;//存货名称 + private BigDecimal ninnum;//实入数量 + private BigDecimal nmny;//金额 + private String vbatchcode;//批次号 + + public String getInventoryCode() { + return inventoryCode; + } + + public void setInventoryCode(String inventoryCode) { + this.inventoryCode = inventoryCode; + } + + public String getInventoryName() { + return inventoryName; + } + + public void setInventoryName(String inventoryName) { + this.inventoryName = inventoryName; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public BigDecimal getNinnum() { + return ninnum; + } + + public void setNinnum(BigDecimal ninnum) { + this.ninnum = ninnum; + } + + public BigDecimal getNmny() { + return nmny; + } + + public void setNmny(BigDecimal nmny) { + this.nmny = nmny; + } + + public String getVbatchcode() { + return vbatchcode; + } + + public void setVbatchcode(String vbatchcode) { + this.vbatchcode = vbatchcode; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinPo.java new file mode 100644 index 0000000..bad1c31 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/ProductinPo.java @@ -0,0 +1,190 @@ +package com.seeyon.apps.src_reportDataSync.po; + + +import java.util.Date; +import java.util.List; + +//产成品入库单表头 +public class ProductinPo { + + private Long id ; + private String vbillcode;//单据号 + private Date dbilldate;//单据日期 + private String cwarehouseid;//仓库ID + private String warehouseidCode;//仓库编码 + private String warehouseidName;//仓库名称 + private String coperatorid;//制单人ID + private String operatorCode;//制单人编码 + private String operatorName;//制单人名称 + private String cregister;//签字人id + private String registerCode;//签字人编码 + private String registerName;//签字人名称 + private String cauditorid;//审核人ID + private String auditorCode;//审核人编码 + private String auditorName;//审核人名称 + private String pkCalbody;//库存组织ID + private String calbodyCode;//库存组织编码 + private String calbodyName;//库存组织名称 + private String dr; + private List childrenvo; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getWarehouseidCode() { + return warehouseidCode; + } + + public void setWarehouseidCode(String warehouseidCode) { + this.warehouseidCode = warehouseidCode; + } + + public String getWarehouseidName() { + return warehouseidName; + } + + public void setWarehouseidName(String warehouseidName) { + this.warehouseidName = warehouseidName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getOperatorCode() { + return operatorCode; + } + + public void setOperatorCode(String operatorCode) { + this.operatorCode = operatorCode; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getCregister() { + return cregister; + } + + public void setCregister(String cregister) { + this.cregister = cregister; + } + + public String getRegisterCode() { + return registerCode; + } + + public void setRegisterCode(String registerCode) { + this.registerCode = registerCode; + } + + public String getRegisterName() { + return registerName; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + + public String getCauditorid() { + return cauditorid; + } + + public void setCauditorid(String cauditorid) { + this.cauditorid = cauditorid; + } + + public String getAuditorCode() { + return auditorCode; + } + + public void setAuditorCode(String auditorCode) { + this.auditorCode = auditorCode; + } + + public String getAuditorName() { + return auditorName; + } + + public void setAuditorName(String auditorName) { + this.auditorName = auditorName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getDr() { + return dr; + } + + public void setDr(String dr) { + this.dr = dr; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinDetailPo.java new file mode 100644 index 0000000..5d63864 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinDetailPo.java @@ -0,0 +1,125 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; + +//采购入库单表体 +public class PurchaseinDetailPo { + + private Long id; + private String vbillcode; + private String cinventoryid;//存货ID + private String inventoryCode;//存货编码 + private String inventoryName;//存货名称 + private String invspec;//规格 + private String invtype;//型号 + private BigDecimal ninnum;//实入数量 + private BigDecimal nprice;//无税单价 + private BigDecimal nquotentmny;//原币无税金额 + private BigDecimal ntaxprice;//含税单价 + private BigDecimal ntaxmny;//含税金额 + private String vbatchcode;//批次号 + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCinventoryid() { + return cinventoryid; + } + + public void setCinventoryid(String cinventoryid) { + this.cinventoryid = cinventoryid; + } + + public String getInventoryCode() { + return inventoryCode; + } + + public void setInventoryCode(String inventoryCode) { + this.inventoryCode = inventoryCode; + } + + public String getInventoryName() { + return inventoryName; + } + + public void setInventoryName(String inventoryName) { + this.inventoryName = inventoryName; + } + + public String getInvspec() { + return invspec; + } + + public void setInvspec(String invspec) { + this.invspec = invspec; + } + + public String getInvtype() { + return invtype; + } + + public void setInvtype(String invtype) { + this.invtype = invtype; + } + + public BigDecimal getNinnum() { + return ninnum; + } + + public void setNinnum(BigDecimal ninnum) { + this.ninnum = ninnum; + } + + public BigDecimal getNprice() { + return nprice; + } + + public void setNprice(BigDecimal nprice) { + this.nprice = nprice; + } + + public BigDecimal getNquotentmny() { + return nquotentmny; + } + + public void setNquotentmny(BigDecimal nquotentmny) { + this.nquotentmny = nquotentmny; + } + + public BigDecimal getNtaxprice() { + return ntaxprice; + } + + public void setNtaxprice(BigDecimal ntaxprice) { + this.ntaxprice = ntaxprice; + } + + public BigDecimal getNtaxmny() { + return ntaxmny; + } + + public void setNtaxmny(BigDecimal ntaxmny) { + this.ntaxmny = ntaxmny; + } + + public String getVbatchcode() { + return vbatchcode; + } + + public void setVbatchcode(String vbatchcode) { + this.vbatchcode = vbatchcode; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinPo.java new file mode 100644 index 0000000..c1d62b7 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/PurchaseinPo.java @@ -0,0 +1,217 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.util.Date; +import java.util.List; + + +//采购入库单表头 +public class PurchaseinPo { + + private Long id; + private String cauditorid;//审核人ID + private String auditorCode;//审核人编码 + private String auditorName;//审核人名称 + private String pkCalbody;//库存组织ID + private String calbodyCode;//库存组织编码 + private String calbodyName;//库存组织名称 + private String coperatorid;//制单人ID + private String operatorCode;//制单人编码 + private String operatorName;//制单人名称 + private String cregister;//签字人ID + private String registerCode;//签字人编码 + private String registerName;//签字人名称 + private String vbillcode;//单据编号 + private Date dbilldate;//单据日期 + private String cwarehouseid;//仓库ID + private String warehouseidCode;//仓库编码 + private String warehouseidName;//仓库名称 + private String cproviderid;//供应商id + private String providerCode;//供应商id + private String providerName;//供应商名称 + private String dr;//删除标识 + private List childrenvo;//表体 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCauditorid() { + return cauditorid; + } + + public void setCauditorid(String cauditorid) { + this.cauditorid = cauditorid; + } + + public String getAuditorCode() { + return auditorCode; + } + + public void setAuditorCode(String auditorCode) { + this.auditorCode = auditorCode; + } + + public String getAuditorName() { + return auditorName; + } + + public void setAuditorName(String auditorName) { + this.auditorName = auditorName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getOperatorCode() { + return operatorCode; + } + + public void setOperatorCode(String operatorCode) { + this.operatorCode = operatorCode; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getCregister() { + return cregister; + } + + public void setCregister(String cregister) { + this.cregister = cregister; + } + + public String getRegisterCode() { + return registerCode; + } + + public void setRegisterCode(String registerCode) { + this.registerCode = registerCode; + } + + public String getRegisterName() { + return registerName; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getWarehouseidCode() { + return warehouseidCode; + } + + public void setWarehouseidCode(String warehouseidCode) { + this.warehouseidCode = warehouseidCode; + } + + public String getWarehouseidName() { + return warehouseidName; + } + + public void setWarehouseidName(String warehouseidName) { + this.warehouseidName = warehouseidName; + } + + public String getCproviderid() { + return cproviderid; + } + + public void setCproviderid(String cproviderid) { + this.cproviderid = cproviderid; + } + + public String getProviderCode() { + return providerCode; + } + + public void setProviderCode(String providerCode) { + this.providerCode = providerCode; + } + + public String getProviderName() { + return providerName; + } + + public void setProviderName(String providerName) { + this.providerName = providerName; + } + + public String getDr() { + return dr; + } + + public void setDr(String dr) { + this.dr = dr; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutDetailPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutDetailPo.java new file mode 100644 index 0000000..968968a --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutDetailPo.java @@ -0,0 +1,70 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.math.BigDecimal; + +public class SaleoutDetailPo { + + private Long id; + private String vbillcode;//单据编号 + private String inventoryCode;//存货编码 + private String inventoryName;//存货名称 + private BigDecimal ninnum;//实入数量 + private BigDecimal nmny;//金额 + private String vbatchcode;//批次号 + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public String getInventoryCode() { + return inventoryCode; + } + + public void setInventoryCode(String inventoryCode) { + this.inventoryCode = inventoryCode; + } + + public String getInventoryName() { + return inventoryName; + } + + public void setInventoryName(String inventoryName) { + this.inventoryName = inventoryName; + } + + public BigDecimal getNinnum() { + return ninnum; + } + + public void setNinnum(BigDecimal ninnum) { + this.ninnum = ninnum; + } + + public BigDecimal getNmny() { + return nmny; + } + + public void setNmny(BigDecimal nmny) { + this.nmny = nmny; + } + + public String getVbatchcode() { + return vbatchcode; + } + + public void setVbatchcode(String vbatchcode) { + this.vbatchcode = vbatchcode; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutPo.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutPo.java new file mode 100644 index 0000000..d75684b --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/po/SaleoutPo.java @@ -0,0 +1,188 @@ +package com.seeyon.apps.src_reportDataSync.po; + +import java.util.Date; +import java.util.List; + +public class SaleoutPo { + + private Long id; + private String vbillcode;//单据号 + private Date dbilldate;//单据日期 + private String cwarehouseid;//仓库id + private String warehouseidCode;//仓库编码 + private String warehouseidName;//仓库名称 + private String coperatorid;//制单人id + private String operatorCode;//制单人编码 + private String operatorName;//制单人名称 + private String cregister;//签字人id + private String registerCode;//签字人编码 + private String registerName;//签字人名称 + private String cauditorid;//审核人id + private String auditorCode;//审核人编码 + private String auditorName;//审核人名称 + private String pkCalbody;//库存组织id + private String calbodyCode;//库存组织编码 + private String calbodyName;//库存组织名称 + private String dr;//删除标志 + private List childrenvo; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getVbillcode() { + return vbillcode; + } + + public void setVbillcode(String vbillcode) { + this.vbillcode = vbillcode; + } + + public Date getDbilldate() { + return dbilldate; + } + + public void setDbilldate(Date dbilldate) { + this.dbilldate = dbilldate; + } + + public String getCwarehouseid() { + return cwarehouseid; + } + + public void setCwarehouseid(String cwarehouseid) { + this.cwarehouseid = cwarehouseid; + } + + public String getWarehouseidCode() { + return warehouseidCode; + } + + public void setWarehouseidCode(String warehouseidCode) { + this.warehouseidCode = warehouseidCode; + } + + public String getWarehouseidName() { + return warehouseidName; + } + + public void setWarehouseidName(String warehouseidName) { + this.warehouseidName = warehouseidName; + } + + public String getCoperatorid() { + return coperatorid; + } + + public void setCoperatorid(String coperatorid) { + this.coperatorid = coperatorid; + } + + public String getOperatorCode() { + return operatorCode; + } + + public void setOperatorCode(String operatorCode) { + this.operatorCode = operatorCode; + } + + public String getOperatorName() { + return operatorName; + } + + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + public String getCregister() { + return cregister; + } + + public void setCregister(String cregister) { + this.cregister = cregister; + } + + public String getRegisterCode() { + return registerCode; + } + + public void setRegisterCode(String registerCode) { + this.registerCode = registerCode; + } + + public String getRegisterName() { + return registerName; + } + + public void setRegisterName(String registerName) { + this.registerName = registerName; + } + + public String getCauditorid() { + return cauditorid; + } + + public void setCauditorid(String cauditorid) { + this.cauditorid = cauditorid; + } + + public String getAuditorCode() { + return auditorCode; + } + + public void setAuditorCode(String auditorCode) { + this.auditorCode = auditorCode; + } + + public String getAuditorName() { + return auditorName; + } + + public void setAuditorName(String auditorName) { + this.auditorName = auditorName; + } + + public String getPkCalbody() { + return pkCalbody; + } + + public void setPkCalbody(String pkCalbody) { + this.pkCalbody = pkCalbody; + } + + public String getCalbodyCode() { + return calbodyCode; + } + + public void setCalbodyCode(String calbodyCode) { + this.calbodyCode = calbodyCode; + } + + public String getCalbodyName() { + return calbodyName; + } + + public void setCalbodyName(String calbodyName) { + this.calbodyName = calbodyName; + } + + public String getDr() { + return dr; + } + + public void setDr(String dr) { + this.dr = dr; + } + + public List getChildrenvo() { + return childrenvo; + } + + public void setChildrenvo(List childrenvo) { + this.childrenvo = childrenvo; + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/quartz/U8WarehouseDataSyncQuartz.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/quartz/U8WarehouseDataSyncQuartz.java new file mode 100644 index 0000000..c1d0edf --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/quartz/U8WarehouseDataSyncQuartz.java @@ -0,0 +1,149 @@ +package com.seeyon.apps.src_reportDataSync.quartz; + +import cn.hutool.log.Log; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.ext.quartz.AbstractQuartzTask; +import com.seeyon.apps.src_reportDataSync.constants.U8DataSyncConstants; +import com.seeyon.apps.src_reportDataSync.service.U8WarehouseDataSyncService; +import com.seeyon.apps.src_reportDataSync.util.SystemTableExecutor; +import com.seeyon.cap4.util.StringUtil; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.utils.form.FormWhereCondition; +import com.seeyon.utils.form.SqlBuildParam; + +import javax.inject.Inject; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class U8WarehouseDataSyncQuartz extends AbstractQuartzTask { + + private static Log log = Log.get(U8WarehouseDataSyncQuartz.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private U8WarehouseDataSyncService u8WarehouseDataSyncService ; + + public String getPluginId() {return U8DataSyncConstants.getPluginId();} + public ConfigVo getU8DataSyncConfig() {return cstConfigApi.getConfig(getPluginId());} + + @Override + public String getName() { + return "U8C数据同步定时任务"; + } + + @Override + public String taskRun(String p) throws Exception { + log.info("========== 开始执行U8仓库数据同步任务 =========="); + try { + String simpleName = this.getClass().getSimpleName(); + String className = Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1); + + SqlBuildParam sqlBuildParam = new SqlBuildParam(); + sqlBuildParam.setOrderField("id"); + sqlBuildParam.setTableName("cst_quartz"); + sqlBuildParam.setQueryColumns(Arrays.asList("id")); + List conditions = new ArrayList<>(); + conditions.add(FormWhereCondition.build().value(className).fieldName("bean_id")); + sqlBuildParam.setConditions(conditions); +// 查询 + List> cstquartzs = SystemTableExecutor.query(sqlBuildParam); + Map cstquartz = cstquartzs.get(0); + String cstquartzid = cstquartz.get("id").toString(); + + sqlBuildParam = new SqlBuildParam(); + sqlBuildParam.setOrderField("create_date"); + sqlBuildParam.setTableName("cst_quartz_log"); + sqlBuildParam.setQueryColumns(Arrays.asList("create_date","message")); + sqlBuildParam.setSortType("desc"); + conditions = new ArrayList<>(); + conditions.add(FormWhereCondition.build().value(cstquartzid).fieldName("parentid")); + sqlBuildParam.setConditions(conditions); +// 查询日志 + List> cstquartzlogs = SystemTableExecutor.query(sqlBuildParam); +// 遍历所有日志信息,获取最新的返回结果为同步成功的时间 + String lastSuccessTime = null; + for (Map logEntry : cstquartzlogs) { + String message = logEntry.get("message") != null ? logEntry.get("message").toString() : ""; + if (allCountMatch(message)) { + lastSuccessTime = logEntry.get("create_date") != null ? logEntry.get("create_date").toString() : null; + break; + } + } + log.info("上次同步成功时间: {}", lastSuccessTime); + + String startTime; + if (lastSuccessTime != null && !lastSuccessTime.isEmpty()) { + // 提取日期部分(前10位,格式:yyyy-MM-dd) + String datePart = lastSuccessTime.substring(0, 10); + startTime = datePart + " 00:00:00"; + } else { + // 如果没有找到同步成功记录,默认使用1970-01-01作为开始时间 + startTime = "1970-01-01 00:00:00"; + } + if(StringUtil.isNotBlank(p)){ + startTime = p; + } + // 设置接口调用结束时间:获取当前日期,拼接00:00:00 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String currentDate = dateFormat.format(new java.util.Date()); + String endTime = currentDate + " 00:00:00"; + + log.info("接口调用开始时间: {}", startTime); + log.info("接口调用结束时间: {}", endTime); + +// 调用同步方法 + return u8WarehouseDataSyncService.synchronize(startTime,endTime); + + } catch (Exception e) { + String errorMsg = "U8仓库数据同步任务执行失败: " + e.getMessage(); + log.error(errorMsg, e); + return errorMsg; + } finally { + log.info("========== U8仓库数据同步任务结束 =========="); + } + } + + + /** + * 判断所有同步记录的获取条数与保存条数是否全部一致 + * @param message 同步日志字符串 + * @return 全部相等返回true,存在不等返回false + */ + public static boolean allCountMatch(String message) { + + Pattern pattern = Pattern.compile("获取.*?条数:(\\d+).*?保存数据条数:(\\d+)"); + + if (message == null || message.trim().length() == 0) { + return false; + } + // 分割每一条同步记录 + String[] lines = message.split(";"); + for (String line : lines) { + String trimLine = line.trim(); + if (trimLine.isEmpty()) continue; + + Matcher matcher = pattern.matcher(trimLine); + if (!matcher.find()) { + // 该行未匹配到条数,格式异常,判定不一致 + return false; + } + int getCount = Integer.parseInt(matcher.group(1)); + int saveCount = Integer.parseInt(matcher.group(2)); + if (getCount != saveCount) { + return false; + } + } + return true; + } + + +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/service/U8WarehouseDataSyncService.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/service/U8WarehouseDataSyncService.java new file mode 100644 index 0000000..c898d3f --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/service/U8WarehouseDataSyncService.java @@ -0,0 +1,943 @@ +package com.seeyon.apps.src_reportDataSync.service; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_reportDataSync.constants.U8DataSyncConstants; +import com.seeyon.apps.src_reportDataSync.dao.U8cSyncDao; +import com.seeyon.apps.src_reportDataSync.po.*; +import com.seeyon.apps.src_reportDataSync.util.BigDecimalUtil; +import com.seeyon.apps.src_reportDataSync.util.U8CHttpClient; +import com.seeyon.ctp.common.AppContext; + +import javax.inject.Inject; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class U8WarehouseDataSyncService { + + private static final Log log = Log.get(U8WarehouseDataSyncService.class); + + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Inject + private U8cSyncDao u8cSyncDao; + + public String getPluginId() {return U8DataSyncConstants.getPluginId();} + + public ConfigVo getU8WarehouseDataSyncConfig() {return cstConfigApi.getConfig(getPluginId());} + + + public String synchronize(String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String ipcorp = configVo.getParamVal(U8DataSyncConstants.ipcorp.name()); + StringBuffer res = new StringBuffer(); + + // 1. 同步现存量数据 + try { + String icOnhandQuery = configVo.getParamVal(U8DataSyncConstants.icOnhandQuery.name()); + List onhandList = synchronizeOnhandAll(ipcorp+icOnhandQuery, "1000"); + log.info("======>同步U8C现存量数据完成,获取数据条数:{}", onhandList.size()); + if (onhandList != null && !onhandList.isEmpty()) { + int savedCount = u8cSyncDao.onhandBatchSaveOrUpdate(onhandList); + log.info("======>保存U8C现存量数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取现存量数据条数:").append(onhandList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步现存量数据异常", e); + res.append("同步现存量数据失败:").append(e.getMessage()).append(";"); + } + + // 2. 同步材料出库单数据 + try { + String icMaterialoutQuery = configVo.getParamVal(U8DataSyncConstants.icMaterialoutQuery.name()); + List materialoutList = synchronizeMaterialoutAll(ipcorp+icMaterialoutQuery, startTime, endTime); + log.info("======>同步U8C库存材料出库单数据完成,获取数据条数:{}", materialoutList.size()); + if (materialoutList != null && !materialoutList.isEmpty()) { + int savedCount = u8cSyncDao.materialoutSaveOrUpdate(materialoutList); + log.info("======>保存U8C库存材料出库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存材料出库单数据条数:").append(materialoutList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步材料出库单数据异常", e); + res.append("同步材料出库单数据失败:").append(e.getMessage()).append(";"); + } + + // 3. 同步采购入库单数据 + try { + String icPurchaseinQuery = configVo.getParamVal(U8DataSyncConstants.icPurchaseinQuery.name()); + List purchaseinList = synchronizePurchaseinAll(ipcorp+icPurchaseinQuery, startTime, endTime); + log.info("======>同步U8C库存采购入库单数据完成,获取数据条数:{}", purchaseinList.size()); + if (purchaseinList != null && !purchaseinList.isEmpty()) { + int savedCount = u8cSyncDao.purchaseinSaveOrUpdate(purchaseinList); + log.info("======>保存U8C库存采购入库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存采购入库单数据条数:").append(purchaseinList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步采购入库单数据异常", e); + res.append("同步采购入库单数据失败:").append(e.getMessage()).append(";"); + } + + // 4. 同步产成品入库单数据 + try { + String icProductinQuery = configVo.getParamVal(U8DataSyncConstants.icProductinQuery.name()); + List productinList = synchronizeProductinAll(ipcorp+icProductinQuery, startTime, endTime); + log.info("======>同步U8C库存产成品入库单数据完成,获取数据条数:{}", productinList.size()); + if (productinList != null && !productinList.isEmpty()) { + int savedCount = u8cSyncDao.productinSaveOrUpdate(productinList); + log.info("======>保存U8C产成品入库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存产成品入库单数据条数:").append(productinList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步产成品入库单数据异常", e); + res.append("同步产成品入库单数据失败:").append(e.getMessage()).append(";"); + } + + // 5. 同步其他入库单数据 + try { + String icOtherinQuery = configVo.getParamVal(U8DataSyncConstants.icOtherinQuery.name()); + List otherinList = synchronizeOtherinAll(ipcorp+icOtherinQuery, startTime, endTime); + log.info("======>同步U8C库存其他入库单数据完成,获取数据条数:{}", otherinList.size()); + if (otherinList != null && !otherinList.isEmpty()) { + int savedCount = u8cSyncDao.otherinSaveOrUpdate(otherinList); + log.info("======>保存U8C其他入库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存其他入库单数据条数:").append(otherinList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步其他入库单数据异常", e); + res.append("同步其他入库单数据失败:").append(e.getMessage()).append(";"); + } + + // 6. 同步其他出库单数据 + try { + String icOtheroutQuery = configVo.getParamVal(U8DataSyncConstants.icOtheroutQuery.name()); + List otheroutList = synchronizeOtheroutAll(ipcorp+icOtheroutQuery, startTime, endTime); + log.info("======>同步U8C库存其他出库单数据完成,获取数据条数:{}", otheroutList.size()); + if (otheroutList != null && !otheroutList.isEmpty()) { + int savedCount = u8cSyncDao.otheroutSaveOrUpdate(otheroutList); + log.info("======>保存U8C其他出库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存其他出库单数据条数:").append(otheroutList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步其他出库单数据异常", e); + res.append("同步其他出库单数据失败:").append(e.getMessage()).append(";"); + } + + // 7. 同步销售出库单数据 + try { + String icSaleoutQuery = configVo.getParamVal(U8DataSyncConstants.icSaleoutQuery.name()); + List saleoutList = synchronizeSaleoutAll(ipcorp+icSaleoutQuery, startTime, endTime); + log.info("======>同步U8C库存销售出库单数据完成,获取数据条数:{}", saleoutList.size()); + if (saleoutList != null && !saleoutList.isEmpty()) { + int savedCount = u8cSyncDao.saleoutSaveOrUpdate(saleoutList); + log.info("======>保存U8C销售出库单数据完成,保存数据条数:{}", savedCount); + res.append("同步完成,获取库存销售出库单数据条数:").append(saleoutList.size()).append(",保存数据条数:").append(savedCount).append(";"); + } + } catch (Exception e) { + log.error("======>同步销售出库单数据异常", e); + res.append("同步销售出库单数据失败:").append(e.getMessage()).append(";"); + } + + return res.toString(); + } + + /** + * 自动分页查询U8C现存量所有数据并合并 + * @param pagesize 每页最大数量 + * @return OnhandPo列表 + */ + public List queryOnhandAllData(String pagesize) throws ParseException { + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String ipcorp = configVo.getParamVal(U8DataSyncConstants.ipcorp.name()); + String icOnhandQuery = configVo.getParamVal(U8DataSyncConstants.icOnhandQuery.name()); + return synchronizeOnhandAll(ipcorp + icOnhandQuery, pagesize); + } + + /** + * 自动分页查询并合并所有数据 + * @param url 请求地址 + * @param pagesize 每页最大数量 + * @return OnhandPo列表 + */ + private List synchronizeOnhandAll(String url, String pagesize) throws ParseException { + JSONArray allDatas = new JSONArray(); + int pageSize = Integer.parseInt(pagesize); + int currentPage = 1; + int totalCount = 0; + + try { + // 循环查询直到获取所有数据 + while (true) { + JSONObject pageResult = doQueryOnhandPage(url, String.valueOf(currentPage), pagesize); + if (!"200".equals(pageResult.getString("code"))) { + log.error("======>查询U8C现存量数据失败:{}", pageResult.getString("msg")); + return new ArrayList<>(); + } + totalCount = pageResult.getIntValue("allcount"); + JSONArray datas = pageResult.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取第{}页数据,本页{}条,累计{}条", currentPage, datas.size(), allDatas.size()); + } + // 判断是否已获取全部数据 + if (allDatas.size() >= totalCount || datas == null || datas.isEmpty() || datas.size() < pageSize) { + break; + } + + currentPage++; + } + + log.info("======>查询U8C现存量数据完成,总数量:{}, 实际获取:{}", totalCount, allDatas.size()); + + } catch (Exception e) { + log.error("查询U8C现存量数据失败", e); + return new ArrayList<>(); + } + + // 转换为List + return convertToOnhandPoList(allDatas); + } + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToOnhandPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + OnhandPo po = new OnhandPo(); + po.setPkCorp(obj.getString("pk_corp")); + po.setCorpCode(obj.getString("corp_code")); + po.setCorpName(obj.getString("corp_name")); + po.setCcalbodyid(obj.getString("ccalbodyid")); + po.setCcalbodyCode(obj.getString("ccalbody_code")); + po.setCcalbodyName(obj.getString("ccalbody_name")); + po.setCwarehouseid(obj.getString("cwarehouseid")); + po.setCwarehouseCode(obj.getString("cwarehouse_code")); + po.setCwarehouseName(obj.getString("cwarehouse_name")); + po.setCinventoryid(obj.getString("cinventoryid")); + po.setCinventoryCode(obj.getString("cinventory_code")); + po.setCinventoryName(obj.getString("cinventory_name")); + po.setInvspec(obj.getString("invspec")); + po.setNnum(BigDecimalUtil.toBigDecimal(obj.get("nnum"))); + po.setNastnum(BigDecimalUtil.toBigDecimal(obj.get("nastnum"))); + po.setNfreezenum(BigDecimalUtil.toBigDecimal(obj.get("nfreezenum"))); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String currentDate = dateFormat.format(new Date()); + po.setDataDate(dateFormat.parse(currentDate)); + list.add(po); + } + + return list; + } + + /** + * 查询单页数据 + * @param url 请求地址 + * @param pagenow 当前页码 + * @param pagesize 每页最大数量 + * @return 单页查询结果 + */ + private JSONObject doQueryOnhandPage(String url, String pagenow, String pagesize){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("warehouse","100"); + param.put("pagenow", pagenow); + param.put("pagesize", pagesize); + + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("allcount", data.getString("allcount")); + result.put("retcount", data.getString("retcount")); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C现存量第{}页数据失败", pagenow, e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + + return result; + } + + + private List synchronizeMaterialoutAll(String url,String startTime,String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQueryMaterialout(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } + +// 转换为List + return convertToMaterialoutPoList(allDatas); + } + + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQueryMaterialout(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C材料出库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + + return result; + } + + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToMaterialoutPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + MaterialoutPo po = new MaterialoutPo(); + po.setCgeneralhid(parentvo.getString("cgeneralhid")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setPkCorp(parentvo.getString("pk_corp")); + po.setCorpCode(parentvo.getString("corp_code")); + po.setCorpName(parentvo.getString("corp_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setCwarehouseidCode(parentvo.getString("cwarehouseid_code")); + po.setCwarehouseidName(parentvo.getString("cwarehouseid_name")); + po.setCdispatcherid(parentvo.getString("cdispatcherid")); + po.setCdispatcheridCode(parentvo.getString("cdispatcherid_code")); + po.setCdispatcheridName(parentvo.getString("cdispatcherid_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setCoperatoridCode(parentvo.getString("coperatorid_code")); + po.setCoperatoridName(parentvo.getString("coperatorid_name")); + po.setCwhsmanagerid(parentvo.getString("cwhsmanagerid")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + MaterialoutDetailPo detail = new MaterialoutDetailPo(); + detail.setCgeneralbid(detailObj.getString("cgeneralbid")); + detail.setCgeneralhid(parentvo.getString("cgeneralhid")); + detail.setCinventoryid(detailObj.getString("cinventoryid")); + detail.setCinventoryidCode(detailObj.getString("cinventoryid_code")); + detail.setCinventoryidName(detailObj.getString("cinventoryid_name")); + detail.setInvspec(detailObj.getString("invspec")); + detail.setNoutnum(BigDecimalUtil.toBigDecimal(detailObj.get("noutnum"))); + detail.setCrowno(detailObj.getString("crowno")); + detail.setPkMeasdoc(detailObj.getString("pk_measdoc")); + detail.setPkMeasdocCode(detailObj.getString("pk_measdoc_code")); + detail.setPkMeasdocName(detailObj.getString("pk_measdoc_name")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + + list.add(po); + } + + return list; + } + + + private List synchronizePurchaseinAll(String url, String startTime, String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQueryPurchasein(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } +// 转换为List + return convertToPurchaseinPoList(allDatas); + } + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQueryPurchasein(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C采购入库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + + return result; + } + + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToPurchaseinPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + PurchaseinPo po = new PurchaseinPo(); + + po.setCauditorid(parentvo.getString("cauditorid")); + po.setAuditorCode(parentvo.getString("auditor_code")); + po.setAuditorName(parentvo.getString("auditor_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setOperatorCode(parentvo.getString("operator_code")); + po.setOperatorName(parentvo.getString("operator_name")); + po.setCregister(parentvo.getString("cregister")); + po.setRegisterCode(parentvo.getString("register_code")); + po.setRegisterName(parentvo.getString("register_name")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setWarehouseidCode(parentvo.getString("warehouseid_code")); + po.setWarehouseidName(parentvo.getString("warehouseid_name")); + po.setCproviderid(parentvo.getString("cproviderid")); + po.setProviderCode(parentvo.getString("provider_code")); + po.setProviderName(parentvo.getString("provider_name")); + po.setDr(parentvo.getString("dr")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + PurchaseinDetailPo detail = new PurchaseinDetailPo(); + detail.setVbillcode(detailObj.getString("vbillcode")); + detail.setCinventoryid(detailObj.getString("cinventoryid")); + detail.setInventoryCode(detailObj.getString("inventory_code")); + detail.setInventoryName(detailObj.getString("inventory_name")); + detail.setInvspec(detailObj.getString("invspec")); + detail.setInvtype(detailObj.getString("invtype")); + detail.setNinnum(BigDecimalUtil.toBigDecimal(obj.get("ninnum"))); + detail.setNprice(BigDecimalUtil.toBigDecimal(obj.get("nprice"))); + detail.setNquotentmny(BigDecimalUtil.toBigDecimal(obj.get("nquotentmny"))); + detail.setNtaxprice(BigDecimalUtil.toBigDecimal(obj.get("ntaxprice"))); + detail.setNtaxmny(BigDecimalUtil.toBigDecimal(obj.get("ntaxmny"))); + detail.setVbatchcode(detailObj.getString("vbatchcode")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + + list.add(po); + } + + return list; + } + + private List synchronizeProductinAll(String url, String startTime, String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQueryProductin(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } +// 转换为List + return convertToProductinPoList(allDatas); + } + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQueryProductin(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C采购入库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + return result; + } + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToProductinPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + ProductinPo po = new ProductinPo(); + po.setCauditorid(parentvo.getString("cauditorid")); + po.setAuditorCode(parentvo.getString("auditor_code")); + po.setAuditorName(parentvo.getString("auditor_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setOperatorCode(parentvo.getString("operator_code")); + po.setOperatorName(parentvo.getString("operator_name")); + po.setCregister(parentvo.getString("cregister")); + po.setRegisterCode(parentvo.getString("register_code")); + po.setRegisterName(parentvo.getString("register_name")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setWarehouseidCode(parentvo.getString("warehouseid_code")); + po.setWarehouseidName(parentvo.getString("warehouseid_name")); + po.setDr(parentvo.getString("dr")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + ProductinDetailPo detail = new ProductinDetailPo(); + detail.setVbillcode(detailObj.getString("vbillcode")); + detail.setInventoryCode(detailObj.getString("inventory_code")); + detail.setInventoryName(detailObj.getString("inventory_name")); + detail.setNinnum(BigDecimalUtil.toBigDecimal(obj.get("ninnum"))); + detail.setNmny(BigDecimalUtil.toBigDecimal(obj.get("nmny"))); + detail.setVbatchcode(detailObj.getString("vbatchcode")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + + list.add(po); + } + return list; + } + + + + private List synchronizeOtherinAll(String url, String startTime, String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQueryOtherin(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } +// 转换为List + return convertToOtherinPoList(allDatas); + } + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQueryOtherin(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C其他入库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + return result; + } + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToOtherinPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + OtherinPo po = new OtherinPo(); + po.setCauditorid(parentvo.getString("cauditorid")); + po.setAuditorCode(parentvo.getString("auditor_code")); + po.setAuditorName(parentvo.getString("auditor_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setOperatorCode(parentvo.getString("operator_code")); + po.setOperatorName(parentvo.getString("operator_name")); + po.setCregister(parentvo.getString("cregister")); + po.setRegisterCode(parentvo.getString("register_code")); + po.setRegisterName(parentvo.getString("register_name")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setWarehouseidCode(parentvo.getString("warehouseid_code")); + po.setWarehouseidName(parentvo.getString("warehouseid_name")); + po.setDr(parentvo.getString("dr")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + OtherinDetailPo detail = new OtherinDetailPo(); + detail.setVbillcode(detailObj.getString("vbillcode")); + detail.setInventoryCode(detailObj.getString("inventory_code")); + detail.setInventoryName(detailObj.getString("inventory_name")); + detail.setNinnum(BigDecimalUtil.toBigDecimal(obj.get("ninnum"))); + detail.setNmny(BigDecimalUtil.toBigDecimal(obj.get("nmny"))); + detail.setVbatchcode(detailObj.getString("vbatchcode")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + list.add(po); + } + return list; + } + + + private List synchronizeOtheroutAll(String url, String startTime, String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQueryOtherout(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } +// 转换为List + return convertToOtheroutPoList(allDatas); + } + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQueryOtherout(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C其他入库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + return result; + } + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToOtheroutPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + OtheroutPo po = new OtheroutPo(); + po.setCauditorid(parentvo.getString("cauditorid")); + po.setAuditorCode(parentvo.getString("auditor_code")); + po.setAuditorName(parentvo.getString("auditor_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setOperatorCode(parentvo.getString("operator_code")); + po.setOperatorName(parentvo.getString("operator_name")); + po.setCregister(parentvo.getString("cregister")); + po.setRegisterCode(parentvo.getString("register_code")); + po.setRegisterName(parentvo.getString("register_name")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setWarehouseidCode(parentvo.getString("warehouseid_code")); + po.setWarehouseidName(parentvo.getString("warehouseid_name")); + po.setDr(parentvo.getString("dr")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + OtheroutDetailPo detail = new OtheroutDetailPo(); + detail.setVbillcode(detailObj.getString("vbillcode")); + detail.setInventoryCode(detailObj.getString("inventory_code")); + detail.setInventoryName(detailObj.getString("inventory_name")); + detail.setNinnum(BigDecimalUtil.toBigDecimal(obj.get("ninnum"))); + detail.setNmny(BigDecimalUtil.toBigDecimal(obj.get("nmny"))); + detail.setVbatchcode(detailObj.getString("vbatchcode")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + list.add(po); + } + return list; + } + + + private List synchronizeSaleoutAll(String url, String startTime, String endTime) throws ParseException { + JSONArray allDatas = new JSONArray(); + JSONObject result = doQuerySaleout(url,startTime,endTime); + JSONArray datas = result.getJSONArray("datas"); + if (datas != null && !datas.isEmpty()) { + allDatas.addAll(datas); + log.info("======>已获取{}条", datas.size()); + } +// 转换为List + return convertToSaleoutPoList(allDatas); + } + + /** + * 查询区间内数据 + * @param url 请求地址 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 查询结果 + */ + private JSONObject doQuerySaleout(String url, String startTime,String endTime){ + ConfigVo configVo = getU8WarehouseDataSyncConfig(); + String calbody = configVo.getParamVal(U8DataSyncConstants.calbody.name()); + String corp = configVo.getParamVal(U8DataSyncConstants.corp.name()); + JSONObject result = new JSONObject(); + JSONObject param = new JSONObject(); + param.put("calbody",calbody); + param.put("corp",corp); + param.put("date_begin",startTime); + param.put("date_end", endTime); + try { + String res = U8CHttpClient.doPost(url, param.toString()); + JSONObject resjson = JSONObject.parseObject(res); + String status = resjson.getString("status"); + if("success".equals(status)){ + JSONObject data = resjson.getJSONObject("data"); + result.put("code", "200"); + result.put("datas", data.getJSONArray("datas")); + }else{ + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + resjson); + } + } catch (Exception e) { + log.error("查询U8C销售出库单数据失败", e); + result.put("code", "500"); + result.put("msg", "查询失败,错误信息为:" + e.getMessage()); + } + return result; + } + + /** + * 将JSONArray转换为List + * @param datas JSONArray数据 + * @return List + */ + private List convertToSaleoutPoList(JSONArray datas) throws ParseException { + List list = new ArrayList<>(); + if (datas == null || datas.isEmpty()) { + return list; + } + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = datas.getJSONObject(i); + JSONObject parentvo = obj.getJSONObject("parentvo"); + SaleoutPo po = new SaleoutPo(); + po.setCauditorid(parentvo.getString("cauditorid")); + po.setAuditorCode(parentvo.getString("auditor_code")); + po.setAuditorName(parentvo.getString("auditor_name")); + po.setPkCalbody(parentvo.getString("pk_calbody")); + po.setCalbodyCode(parentvo.getString("calbody_code")); + po.setCalbodyName(parentvo.getString("calbody_name")); + po.setCoperatorid(parentvo.getString("coperatorid")); + po.setOperatorCode(parentvo.getString("operator_code")); + po.setOperatorName(parentvo.getString("operator_name")); + po.setCregister(parentvo.getString("cregister")); + po.setRegisterCode(parentvo.getString("register_code")); + po.setRegisterName(parentvo.getString("register_name")); + po.setVbillcode(parentvo.getString("vbillcode")); + po.setDbilldate(parentvo.getDate("dbilldate")); + po.setCwarehouseid(parentvo.getString("cwarehouseid")); + po.setWarehouseidCode(parentvo.getString("warehouseid_code")); + po.setWarehouseidName(parentvo.getString("warehouseid_name")); + po.setDr(parentvo.getString("dr")); + // 解析子表数据 + List detailList = new ArrayList<>(); + JSONArray childrenvo = obj.getJSONArray("childrenvo"); + if (childrenvo != null && !childrenvo.isEmpty()) { + for (int j = 0; j < childrenvo.size(); j++) { + JSONObject detailObj = childrenvo.getJSONObject(j); + SaleoutDetailPo detail = new SaleoutDetailPo(); + detail.setVbillcode(detailObj.getString("vbillcode")); + detail.setInventoryCode(detailObj.getString("inventory_code")); + detail.setInventoryName(detailObj.getString("inventory_name")); + detail.setNinnum(BigDecimalUtil.toBigDecimal(obj.get("ninnum"))); + detail.setNmny(BigDecimalUtil.toBigDecimal(obj.get("nmny"))); + detail.setVbatchcode(detailObj.getString("vbatchcode")); + detailList.add(detail); + } + } + po.setChildrenvo(detailList); + list.add(po); + } + return list; + } + + +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/BigDecimalUtil.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/BigDecimalUtil.java new file mode 100644 index 0000000..08b5314 --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/BigDecimalUtil.java @@ -0,0 +1,31 @@ +package com.seeyon.apps.src_reportDataSync.util; + +import java.math.BigDecimal; +import java.math.BigInteger; + +public class BigDecimalUtil { + /** + * Object 转为 BigDecimal,null返回BigDecimal.ZERO + */ + public static BigDecimal toBigDecimal(Object obj) { + if (obj == null) { + return BigDecimal.ZERO; + } + if (obj instanceof BigDecimal) { + return (BigDecimal) obj; + } + if (obj instanceof BigInteger) { + return new BigDecimal((BigInteger) obj); + } + if (obj instanceof Number) { + // Integer/Long/Double/Float/Short/Byte + return BigDecimal.valueOf(((Number) obj).doubleValue()); + } + // 字符串、其他对象转字符串再解析 + String str = obj.toString().trim(); + if (str.isEmpty()) { + return BigDecimal.ZERO; + } + return new BigDecimal(str); + } +} \ No newline at end of file diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/SystemTableExecutor.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/SystemTableExecutor.java new file mode 100644 index 0000000..d1f740b --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/SystemTableExecutor.java @@ -0,0 +1,55 @@ +package com.seeyon.apps.src_reportDataSync.util; + +import cn.hutool.log.Log; +import com.seeyon.aicloud.common.JsonUtils; +import com.seeyon.ctp.util.JDBCAgent; +import com.seeyon.utils.form.SqlBuildParam; +import com.seeyon.utils.form.SqlGenerator; +import com.seeyon.utils.form.SqlType; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class SystemTableExecutor { + + private static final Log log = Log.get(SystemTableExecutor.class); + + public static List> query(SqlBuildParam sqlBuildParam) { + sqlBuildParam.setSqlType(SqlType.SELECT); + Map result = SqlGenerator.generateSql(sqlBuildParam); + JDBCAgent agent = new JDBCAgent(); + try { + String sql = (String) result.get("sql"); + List params = (List) result.get("params"); + agent.execute(sql, params); + log.info("执行sql为: " + sql); + log.info("执行sql参数为: " + JsonUtils.toJSONString(params)); + List> rows = agent.resultSetToList(); + + // 如果设置了查询列,则只返回指定列的数据 + List queryColumns = sqlBuildParam.getQueryColumns(); + if (queryColumns != null && !queryColumns.isEmpty() && rows != null && !rows.isEmpty()) { + List> filteredRows = new ArrayList<>(); + for (Map row : rows) { + Map filteredRow = new java.util.LinkedHashMap<>(); + for (String col : queryColumns) { + if (row.containsKey(col)) { + filteredRow.put(col, row.get(col)); + } + } + filteredRows.add(filteredRow); + } + return filteredRows; + } + return rows != null ? rows : new ArrayList<>(); + } catch (Exception e) { + log.error("执行sql为: " + result.get("sql")); + log.error("执行sql参数为: " + JsonUtils.toJSONString(result.get("params"))); + log.error(e.getMessage(), e); + } finally { + agent.close(); + } + return new ArrayList<>(); + } +} diff --git a/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/U8CHttpClient.java b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/U8CHttpClient.java new file mode 100644 index 0000000..09b2d7c --- /dev/null +++ b/apps-customize/src/main/java/com/seeyon/apps/src_reportDataSync/util/U8CHttpClient.java @@ -0,0 +1,30 @@ +package com.seeyon.apps.src_reportDataSync.util; + +import cn.hutool.http.HttpRequest; + +public class U8CHttpClient { + + + private static final String CONTENT_TYPE = "application/json"; + private static final String SYSTEM_NAME = "ZQCOA"; + private static final String USER = "OA"; + private static final String CONNECTION = "Keep-Alive"; + private static final String PASSWORD_MD5 = "0411fd12d05765c3019657ae66358733"; + + private U8CHttpClient() { + + } + + public static String doPost(String url, String body) throws Exception { + + return HttpRequest.post(url).header("accept", "*/*") + .header("connection", CONNECTION) + .header("Content-Type", CONTENT_TYPE) + .header("system", SYSTEM_NAME) + .header("usercode", USER) + .header("password", PASSWORD_MD5) + .body(body).execute().body(); + } + + +} diff --git a/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/pluginCfg.xml b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/pluginCfg.xml new file mode 100644 index 0000000..318a2e2 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_reportDataSync + U8数据定时同步开发 + 20260715 + diff --git a/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-dao.xml b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-dao.xml new file mode 100644 index 0000000..852fb58 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-dao.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-quartz.xml b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-quartz.xml new file mode 100644 index 0000000..2ab20ff --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-quartz.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-service.xml b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-service.xml new file mode 100644 index 0000000..7194ea3 --- /dev/null +++ b/seeyon/WEB-INF/cfgHome/plugin/src_reportDataSync/spring/spring-service.xml @@ -0,0 +1,8 @@ + + + + + + + +