From 7ac2b4256ecb210eb8dbad30f33d642643fb8dc6 Mon Sep 17 00:00:00 2001 From: xins Date: Tue, 30 Apr 2024 17:37:57 +0800 Subject: [PATCH] =?UTF-8?q?2.1.9=20ERP=EF=BC=9A=E5=90=8C=E6=AD=A5=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hw/jindie/api/RemoteJindieService.java | 4 +- .../factory/RemoteJindieFallbackFactory.java | 4 +- .../controller/KingdeeErpSyncController.java | 8 +- .../jindie/enums/SyncMaterialInfoEnums.java | 110 ++++++++++ .../mapper/MesBaseMaterialInfoMapper.java | 24 ++ .../service/IKingdeeErpSyncService.java | 5 +- .../impl/KingdeeErpSyncServiceImpl.java | 206 +++++++++--------- .../com/hw/jindie/test/BdCustomerTest.java | 45 ++++ .../jindie/MesBaseMaterialInfoMapper.xml | 21 ++ .../src/main/java/com/hw/job/task/RyTask.java | 6 +- 10 files changed, 323 insertions(+), 110 deletions(-) create mode 100644 hw-modules/hw-jindie/src/main/java/com/hw/jindie/enums/SyncMaterialInfoEnums.java diff --git a/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/RemoteJindieService.java b/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/RemoteJindieService.java index ca9184ba..99e654a1 100644 --- a/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/RemoteJindieService.java +++ b/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/RemoteJindieService.java @@ -20,9 +20,9 @@ public interface RemoteJindieService { /** 同步供应商*/ @GetMapping("/jindie/ErpSupplierInfo") - R ErpSupplierInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source, @RequestParam("beginTime") String beginTime, @RequestParam("endTime") String endTime); + R ErpSupplierInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** 同步物料*/ @GetMapping("/jindie/syncMaterialInfo") - R ErpMesMaterialInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source, @RequestParam("beginTime") String beginTime, @RequestParam("endTime") String endTime); + R ErpMesMaterialInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/factory/RemoteJindieFallbackFactory.java b/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/factory/RemoteJindieFallbackFactory.java index e9bc33e0..e81d500a 100644 --- a/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/factory/RemoteJindieFallbackFactory.java +++ b/hw-api/hw-api-jindie/src/main/java/com/hw/jindie/api/factory/RemoteJindieFallbackFactory.java @@ -14,12 +14,12 @@ public class RemoteJindieFallbackFactory implements FallbackFactory ErpSupplierInfo(String source, String beginTime, String endTime) { + public R ErpSupplierInfo(String source) { return null; } @Override - public R ErpMesMaterialInfo(String source, String beginTime, String endTime) { + public R ErpMesMaterialInfo(String source) { return null; } }; diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/controller/KingdeeErpSyncController.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/controller/KingdeeErpSyncController.java index da101441..875e7127 100644 --- a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/controller/KingdeeErpSyncController.java +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/controller/KingdeeErpSyncController.java @@ -30,9 +30,9 @@ public class KingdeeErpSyncController { * 同步erp中供应商数据 * */ @GetMapping("/ErpSupplierInfo") - public AjaxResult ErpSupplierInfo(String beginTime, String endTime){ + public AjaxResult ErpSupplierInfo(){ try { - return AjaxResult.success(kingdeeErpSyncService.syncSupplierInfoFromErp(0,beginTime,endTime)); + return AjaxResult.success(kingdeeErpSyncService.syncSupplierInfoFromErp(0)); } catch (Exception e){ e.printStackTrace(); return AjaxResult.error(); @@ -45,9 +45,9 @@ public class KingdeeErpSyncController { // @RequiresPermissions("wms:mobile:addrawinstock") @Log(title = "物料信息", businessType = BusinessType.INSERT) @GetMapping(("/syncMaterialInfo")) - public AjaxResult syncMaterialInfo(String beginTime, String endTime) { + public AjaxResult syncMaterialInfo() { try { - return AjaxResult.success(kingdeeErpSyncService.syncMaterialInfoFromErp(beginTime,endTime)); + return AjaxResult.success(kingdeeErpSyncService.syncMaterialInfoFromErp(0)); } catch (Exception e) { e.printStackTrace(); return AjaxResult.error(); diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/enums/SyncMaterialInfoEnums.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/enums/SyncMaterialInfoEnums.java new file mode 100644 index 00000000..831b6d27 --- /dev/null +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/enums/SyncMaterialInfoEnums.java @@ -0,0 +1,110 @@ +package com.hw.jindie.enums; + + +import com.hw.common.core.enums.DataTypeEnums; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用枚举,需要用反射,影响性能 + */ +public enum SyncMaterialInfoEnums { + /** + * 物料ID + */ + ERPID("Integer","FMaterialId"), + + /** + * 物料编码 + */ + MATERIALCODE("String","FNumber"), + + /** + * 物料名称 + */ + MATERIALNAME("String","FName"), + + /** + * 计量单位ID + */ + MATERIALUNITID("Integer","FBaseUnitId"), + + /** + * 物料规格 + */ + MATERIALSPEC("String","FSpecification"), + + /** + * 净重 + */ + NETWEIGHT("BigDecimal","FNETWEIGHT"), + + /** + * 毛重 + */ + GROSSWEIGHT("BigDecimal","FGROSSWEIGHT"), + + /** + * 创建时间 + */ + CREATETIME("String","FCreateDate"), + + /** + * ERP最后更新时间,根据此字段获取最新数据 + */ + ERPMODIFYDATE("String","FModifyDate"), + + /** + * 审核日期 + */ + APPROVEDATE("String","FApproveDate"), + + /** + * 创建组织 + */ + CREATEORGID("Integer","FCreateOrgId"), + + /** + * 使用组织 + */ + USEORGID("Integer","FUseOrgId"), + + /** + * 采购计量单价ID + */ + PURCHASEPRICEUNITID("Integer","FPurchasePriceUnitId"); + + + // 参数类型 + private final String dataType; + + // 参数名称 + private final String fieldKey; + + SyncMaterialInfoEnums(String dataType, String fieldKey) { + this.dataType = dataType; + this.fieldKey = fieldKey; + } + + public String getDataType() { + return dataType; + } + + public String getFieldKey() { + return fieldKey; + } + + + public static final List fieldKeyList = Arrays.stream(values()).map(SyncMaterialInfoEnums::getFieldKey).collect(Collectors.toList()); + + + public static void main(String[] args) { + System.out.println(fieldKeyList.toString().replaceAll("\\[","").replaceAll("]","")); + for (SyncMaterialInfoEnums syncMaterialInfoEnums : SyncMaterialInfoEnums.values()) { +// System.out.println(syncMaterialInfoEnums + " - " + syncMaterialInfoEnums.getDataType()); + } + + } +} diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/mapper/MesBaseMaterialInfoMapper.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/mapper/MesBaseMaterialInfoMapper.java index fda2bef1..504d119d 100644 --- a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/mapper/MesBaseMaterialInfoMapper.java +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/mapper/MesBaseMaterialInfoMapper.java @@ -72,4 +72,28 @@ public interface MesBaseMaterialInfoMapper */ public List selectMesBaseMaterialInfoListByMaterialIds(Long[] materialIds); + + /** + * 获取最大的ERP更新时间 + * @return String + */ + public String getMaxErpModifyDate(); + + /** + * 查询物料信息 + * + * @param erpId ERP主键 + * @return 物料信息 + */ + public MesBaseMaterialInfo selectMesBaseMaterialInfoByErpId(Long erpId); + + /** + * 批量新增物料信息 + * + * @param mesBaseMaterialInfos 物料信息列表 + * @return 结果 + */ + public int batchMesBaseMaterialInfo(List mesBaseMaterialInfos); + + } diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/IKingdeeErpSyncService.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/IKingdeeErpSyncService.java index e900865d..99f30de1 100644 --- a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/IKingdeeErpSyncService.java +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/IKingdeeErpSyncService.java @@ -2,7 +2,6 @@ package com.hw.jindie.service; public interface IKingdeeErpSyncService { - public int syncMaterialInfoFromErp(String beginTime,String endTime) throws Exception; - public int syncSupplierInfoFromErp(int startRow,String beginTime,String endTime) throws Exception; - + public int syncSupplierInfoFromErp(int startRow) throws Exception; + public int syncMaterialInfoFromErp(int startRow) throws Exception; } diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/impl/KingdeeErpSyncServiceImpl.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/impl/KingdeeErpSyncServiceImpl.java index 891d67b8..9276b119 100644 --- a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/impl/KingdeeErpSyncServiceImpl.java +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/service/impl/KingdeeErpSyncServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -37,12 +38,11 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { private MesBaseSupplierInfoMapper mesBaseSupplierInfoMapper; - /** * @throws Exception * @Description:从金蝶ERP同步供应商信息 */ - public int syncSupplierInfoFromErp(int startRow,String beginTime,String endTime) throws Exception { + public int syncSupplierInfoFromErp(int startRow) throws Exception { K3CloudApi api = new K3CloudApi(); // "FormId": "BD_Supplier", // "FieldKeys": "FNumber ,FName,FCreateDate,FModifyDate,FAuditDate", @@ -62,10 +62,10 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { queryJson.put("Limit", limit); queryJson.put("SubSystemId", ""); //条件查询 - if (StringUtils.isNotEmpty(beginTime)&&StringUtils.isNotEmpty(endTime)){ - String filterString = "FCreateDate >'"+beginTime+"' AND '"+endTime+"' >FCreateDate"; - queryJson.put("FilterString",filterString); - } +// if (StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)) { +// String filterString = "FCreateDate >'" + beginTime + "' AND '" + endTime + "' >FCreateDate"; +// queryJson.put("FilterString", filterString); +// } // System.out.println(queryJson.toString()); // "FieldKeys": "FNumber,FName,FBaseUnitId,FSpecification,FNETWEIGHT,FGROSSWEIGHT,FCreateDate,FModifyDate,FApproveDate", @@ -118,10 +118,9 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { System.out.println(mesBaseSupplierInfo); //通过erp主键判断,表中是否有重复的数据,如果有则更新,没有则插入 - if (mesBaseSupplierInfos.size()==0){ + if (mesBaseSupplierInfos.size() == 0) { mesBaseSupplierInfoMapper.insertMesBaseSupplierInfo(mesBaseSupplierInfo); - } - else { + } else { //todo 主键 mesBaseSupplierInfo.setSupplierId(mesBaseSupplierInfos.get(0).getSupplierId()); mesBaseSupplierInfoMapper.updateMesBaseSupplierInfo(mesBaseSupplierInfo); @@ -133,12 +132,12 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { if (resultArray.size() < limit) { // System.out.println(startRow); //通过递归同步所有供应商,测试先不用 - int i = syncSupplierInfoFromErp(startRow + resultArray.size(),beginTime,endTime); + int i = syncSupplierInfoFromErp(startRow + resultArray.size()); // return i; return 1; } else { //为空时的总行数 - return startRow+resultArray.size(); + return startRow + resultArray.size(); } } @@ -148,7 +147,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { * @Description:从金蝶ERP同步物料信息 */ @Override - public int syncMaterialInfoFromErp(String beginTime,String endTime) throws Exception { + public int syncMaterialInfoFromErp(int startRow) throws Exception { K3CloudApi api = new K3CloudApi(); String FDocumentStatus = "C"; @@ -159,7 +158,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { // String filterString = "FNumber='98010102'"; String orderString = ""; int topRowCount = 0; - int startRow = 0; +// int startRow = 0; int limit = 20; queryJson.put("FormId", formId); queryJson.put("FieldKeys", fieldKeys); @@ -169,91 +168,104 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { queryJson.put("Limit", limit); queryJson.put("SubSystemId", ""); //条件查询 - if (StringUtils.isNotEmpty(beginTime)&&StringUtils.isNotEmpty(endTime)){ - String filterString = "FCreateDate >'"+beginTime+"' AND '"+endTime+"' >FCreateDate"; - queryJson.put("FilterString",filterString); + String maxErpModifyDate = mesBaseMaterialInfoMapper.getMaxErpModifyDate(); + if (StringUtils.isNotEmpty(maxErpModifyDate)) { + String filterString = "FModifyDate >'" + maxErpModifyDate + "'"; + queryJson.put("FilterString", filterString); } System.out.println(queryJson.toString()); - String result = api.billQuery(queryJson.toString()); JSONArray resultArray = JSONArray.parseArray(result); System.out.println("物料单据查询接口: " + result); + List toInsertMaterialInfoList = new ArrayList<>(); + List toUpdateMaterialInfoList = new ArrayList<>(); for (int i = 0; i < resultArray.size(); i++) { - try { - JSONObject resultObject = (JSONObject) resultArray.get(i); - MesBaseMaterialInfo mesBaseMaterialInfo = new MesBaseMaterialInfo(); - //erp主键 - Integer erpId = (Integer) resultObject.get("FMaterialId"); - //物料编码 - String materialCode = (String) resultObject.get("FNumber"); - //物料名称 - String materialName = (String) resultObject.get("FName"); - //计量单位ID - Integer materaialUnitId = resultObject.get("FBaseUnitId") == null ? null : (Integer) resultObject.get("FBaseUnitId"); - //物料规格 - String materialSpec = resultObject.get("FSpecification") == null ? null : (String) resultObject.get("FSpecification"); - //净重 - BigDecimal netWeight = resultObject.get("FNETWEIGHT") == null ? null : (BigDecimal) resultObject.get("FNETWEIGHT"); - //毛重 - BigDecimal grossWeight = resultObject.get("FGROSSWEIGHT") == null ? null : (BigDecimal) resultObject.get("FGROSSWEIGHT"); - //创建时间 - String createDateStr = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate"); - //erp最后更新日期 - String modifyDateStr = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate"); - //审核日期 - String approveDateStr = resultObject.get("FApproveDate") == null ? null : (String) resultObject.get("FApproveDate"); - //创建组织 - Integer createOrgId = resultObject.get("FCreateOrgId") == null ? null : (Integer) resultObject.get("FCreateOrgId"); - //使用组织 - Integer useOrgId = resultObject.get("FUseOrgId") == null ? null : (Integer) resultObject.get("FUseOrgId"); - //采购计量单价 - Integer purchasePriceUnitId = resultObject.get("FPurchasePriceUnitId") == null ? null : (Integer) resultObject.get("FPurchasePriceUnit"); + JSONObject resultObject = (JSONObject) resultArray.get(i); + MesBaseMaterialInfo mesBaseMaterialInfo = new MesBaseMaterialInfo(); + //erp主键 + Integer erpId = (Integer) resultObject.get("FMaterialId"); + //物料编码 + String materialCode = (String) resultObject.get("FNumber"); + //物料名称 + String materialName = (String) resultObject.get("FName"); + //计量单位ID + Integer materaialUnitId = resultObject.get("FBaseUnitId") == null ? null : (Integer) resultObject.get("FBaseUnitId"); + //物料规格 + String materialSpec = resultObject.get("FSpecification") == null ? null : (String) resultObject.get("FSpecification"); + //净重 + BigDecimal netWeight = resultObject.get("FNETWEIGHT") == null ? null : (BigDecimal) resultObject.get("FNETWEIGHT"); + //毛重 + BigDecimal grossWeight = resultObject.get("FGROSSWEIGHT") == null ? null : (BigDecimal) resultObject.get("FGROSSWEIGHT"); + //创建时间 + String createDateStr = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate"); + //erp最后更新日期 + String modifyDateStr = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate"); + //审核日期 + String approveDateStr = resultObject.get("FApproveDate") == null ? null : (String) resultObject.get("FApproveDate"); + //创建组织 + Integer createOrgId = resultObject.get("FCreateOrgId") == null ? null : (Integer) resultObject.get("FCreateOrgId"); + //使用组织 + Integer useOrgId = resultObject.get("FUseOrgId") == null ? null : (Integer) resultObject.get("FUseOrgId"); + //采购计量单价 + Integer purchasePriceUnitId = resultObject.get("FPurchasePriceUnitId") == null ? null : (Integer) resultObject.get("FPurchasePriceUnit"); + + mesBaseMaterialInfo.setMaterialCode(materialCode); + mesBaseMaterialInfo.setMaterialName(materialName); + mesBaseMaterialInfo.setMaterialUnitId(Long.valueOf(materaialUnitId)); + mesBaseMaterialInfo.setMaterialSpec(materialSpec); + mesBaseMaterialInfo.setNetWeight(netWeight); + mesBaseMaterialInfo.setGrossWeight(grossWeight); + mesBaseMaterialInfo.setCreateOrgId(Long.valueOf(createOrgId)); + mesBaseMaterialInfo.setUseOrgId(Long.valueOf(useOrgId)); + mesBaseMaterialInfo.setPurchasePriceUnitId(Long.valueOf(purchasePriceUnitId)); + + if (StringUtils.isNotEmpty(createDateStr)) { + mesBaseMaterialInfo.setCreateTime(conversionERPTime(createDateStr)); + } + + if (StringUtils.isNotEmpty(modifyDateStr)) { + mesBaseMaterialInfo.setErpModifyDate(conversionERPTime(modifyDateStr)); + } + + if (StringUtils.isNotEmpty(approveDateStr)) { + mesBaseMaterialInfo.setApproveDate(conversionERPTime(approveDateStr)); + } -// 2023-08-26T16:15:15.05 + MesBaseMaterialInfo existedMesBaseMaterialInfo = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByErpId(Long.valueOf(erpId)); - mesBaseMaterialInfo.setErpId(Long.valueOf(erpId)); + if (existedMesBaseMaterialInfo != null) { + mesBaseMaterialInfo.setMaterialId(existedMesBaseMaterialInfo.getMaterialId()); + toUpdateMaterialInfoList.add(mesBaseMaterialInfo); + } else { + toInsertMaterialInfoList.add(mesBaseMaterialInfo); + } - List mesBaseMaterialInfos = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoList(mesBaseMaterialInfo); - mesBaseMaterialInfo.setMaterialCode(materialCode); - mesBaseMaterialInfo.setMaterialName(materialName); - mesBaseMaterialInfo.setMaterialUnitId(Long.valueOf(materaialUnitId)); - mesBaseMaterialInfo.setMaterialSpec(materialSpec); - mesBaseMaterialInfo.setNetWeight(netWeight); - mesBaseMaterialInfo.setGrossWeight(grossWeight); - mesBaseMaterialInfo.setCreateOrgId(Long.valueOf(createOrgId)); - mesBaseMaterialInfo.setUseOrgId(Long.valueOf(useOrgId)); + } - - if (StringUtils.isNotEmpty(createDateStr)) { - mesBaseMaterialInfo.setCreateTime(conversionERPTime(createDateStr)); - } - - if (StringUtils.isNotEmpty(modifyDateStr)) { - mesBaseMaterialInfo.setErpModifyDate(conversionERPTime(modifyDateStr)); - } - - if (StringUtils.isNotEmpty(approveDateStr)) { - mesBaseMaterialInfo.setApproveDate(conversionERPTime(approveDateStr)); - } - System.out.println(mesBaseMaterialInfo); - if (mesBaseMaterialInfos.size()!=0){ - mesBaseMaterialInfoMapper.updateMesBaseMaterialInfo(mesBaseMaterialInfo); - } - else { - mesBaseMaterialInfoMapper.insertMesBaseMaterialInfo(mesBaseMaterialInfo); - } -// mesBaseMaterialInfoMapper.insertMesBaseMaterialInfo(mesBaseMaterialInfo); - } catch (Exception e) { - e.printStackTrace(); + if (!toInsertMaterialInfoList.isEmpty()) { + mesBaseMaterialInfoMapper.batchMesBaseMaterialInfo(toInsertMaterialInfoList); + } + if (!toUpdateMaterialInfoList.isEmpty()) { + for (MesBaseMaterialInfo toUpdatedMaterialInfo : toUpdateMaterialInfoList) { + mesBaseMaterialInfoMapper.updateMesBaseMaterialInfo(toUpdatedMaterialInfo); } } -// System.out.println(resultArray.size()); + /**分页递归获取所有物料信息*/ + if (resultArray.size() < limit) { +// System.out.println(startRow); + //通过递归同步所有物料信息,测试先不用 + int i = syncMaterialInfoFromErp(startRow + resultArray.size()); +// return i; + return 1; + } else { + //为空时的总行数 + return startRow + resultArray.size(); + } - return 1; } @@ -335,19 +347,19 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { System.out.println(resultArray.size()); System.out.println("项目信息单据查询接口: " + result); - for (int i = 0; i < resultArray.size(); i++){ + for (int i = 0; i < resultArray.size(); i++) { try { JSONObject resultObject = (JSONObject) resultArray.get(i); MesProjectInfo mesProjectInfo = new MesProjectInfo(); - Integer FID = resultObject.get("FID")==null ? 0 : (Integer)resultObject.get("FID"); - String FNumber = resultObject.get("FNumber")==null ? null : (String)resultObject.get("FNumber"); - String FName = resultObject.get("FName")==null ? null :(String)resultObject.get("FName"); + Integer FID = resultObject.get("FID") == null ? 0 : (Integer) resultObject.get("FID"); + String FNumber = resultObject.get("FNumber") == null ? null : (String) resultObject.get("FNumber"); + String FName = resultObject.get("FName") == null ? null : (String) resultObject.get("FName"); // String FDocumentStatus = resultObject.get("FDocumentStatus")==null? null:(String)resultObject.get("FDocumentStatus"); - String FForbidStatus = resultObject.get("FForbidStatus")==null? null:(String)resultObject.get("FForbidStatus"); - String FAuditDate = resultObject.get("FAuditDate")==null?null:(String) resultObject.get("FAuditDate"); - String FModifyDate = resultObject.get("FModifyDate")==null?null:(String) resultObject.get("FModifyDate"); - String FCreateDate = resultObject.get("FCreateDate")==null?null:(String) resultObject.get("FCreateDate"); + String FForbidStatus = resultObject.get("FForbidStatus") == null ? null : (String) resultObject.get("FForbidStatus"); + String FAuditDate = resultObject.get("FAuditDate") == null ? null : (String) resultObject.get("FAuditDate"); + String FModifyDate = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate"); + String FCreateDate = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate"); mesProjectInfo.setErpId(Long.valueOf(FID)); @@ -361,20 +373,20 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FAuditDate); mesProjectInfo.setAuditDate(date); } - if (StringUtils.isNotEmpty(FModifyDate)){ - FModifyDate = FModifyDate.replace("T"," "); - Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss",FModifyDate); + if (StringUtils.isNotEmpty(FModifyDate)) { + FModifyDate = FModifyDate.replace("T", " "); + Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FModifyDate); mesProjectInfo.setErpModifyDate(date); } - if (StringUtils.isNotEmpty(FCreateDate)){ - FCreateDate = FCreateDate.replace("T"," "); - Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss",FCreateDate); + if (StringUtils.isNotEmpty(FCreateDate)) { + FCreateDate = FCreateDate.replace("T", " "); + Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FCreateDate); mesProjectInfo.setCreateTime(date); } System.out.println(mesProjectInfo); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } @@ -423,7 +435,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService { } //将erp中获取的时间string转换为date类型 - public Date conversionERPTime(String ERPTime){ + public Date conversionERPTime(String ERPTime) { ERPTime = ERPTime.replace("T", " "); Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", ERPTime); return date; diff --git a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/test/BdCustomerTest.java b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/test/BdCustomerTest.java index be2c04fc..4294fc98 100644 --- a/hw-modules/hw-jindie/src/main/java/com/hw/jindie/test/BdCustomerTest.java +++ b/hw-modules/hw-jindie/src/main/java/com/hw/jindie/test/BdCustomerTest.java @@ -4,6 +4,8 @@ import static org.junit.Assert.fail; import java.util.*; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.google.gson.JsonObject; import com.kingdee.bos.webapi.entity.*; import com.kingdee.bos.webapi.sdk.K3CloudApi; @@ -234,4 +236,47 @@ public class BdCustomerTest { } + + /*本接口用于获取销售订单信息*/ + @Test + public void syncSaleOrderFromErp() throws Exception { + String FDocumentStatus = "C"; + String json = "{\n" + + " \"FormId\": \"SAL_SaleOrder\",\n" + + " \"FieldKeys\": \"FID,FBillNo,FApproveDate,FSaleOrderEntry_FEntryID,FMaterialId.FNumber,FMaterialName,FQty ,FMinPlanDeliveryDate,\",\n" + +// " \"FilterString\": \"FDocumentStatus=\'" + FDocumentStatus + "\' and FMaterialGroup.FNUMBER IN ('28') \",\n" + + " \"OrderString\": \"\",\n" + + " \"TopRowCount\": 0,\n" + + " \"StartRow\": 0,\n" + + " \"Limit\": 2000,\n" + + " \"SubSystemId\": \"\"\n" + + "}"; + + JSONObject queryJson = new JSONObject(); + String formId = "SAL_SaleOrder"; + String fieldKeys = "FID,FBillNo,FApproveDate,FSaleOrderEntry_FEntryID,FMaterialId.FNumber,FMaterialName,FQty,FModifyDate,FMinPlanDeliveryDate"; +// String filterString = "FNumber='98010102'"; + String orderString = ""; + int topRowCount = 0; + int startRow = 0; + int limit = 2000; + queryJson.put("FormId", formId); + queryJson.put("FieldKeys", fieldKeys); +// queryJson.put("FilterString", filterString); + queryJson.put("OrderString", orderString); + queryJson.put("TopRowCount", topRowCount); + queryJson.put("StartRow", startRow); + queryJson.put("Limit", limit); + queryJson.put("SubSystemId", ""); + System.out.println(queryJson.toString()); + + String result = api.billQuery(queryJson.toString()); + JSONArray resultArray = JSONArray.parseArray(result); + System.out.println(resultArray.size()); + System.out.println("销售订单单据查询接口: " + result); + + + } + + } diff --git a/hw-modules/hw-jindie/src/main/resources/mapper/jindie/MesBaseMaterialInfoMapper.xml b/hw-modules/hw-jindie/src/main/resources/mapper/jindie/MesBaseMaterialInfoMapper.xml index 4f162b5b..fe24330d 100644 --- a/hw-modules/hw-jindie/src/main/resources/mapper/jindie/MesBaseMaterialInfoMapper.xml +++ b/hw-modules/hw-jindie/src/main/resources/mapper/jindie/MesBaseMaterialInfoMapper.xml @@ -239,4 +239,25 @@ + + + + + + + + + INSERT INTO mes_base_material_info (erp_id, material_code, old_material_code, material_name, material_categories, material_subclass, material_type_id, batch_flag, material_unit_id, material_unit, material_matkl, material_spec, net_weight, gross_weight, factory_id, create_org_id, use_org_id, prodline_id, active_flag, deleted_flag, remark, purchase_price_unit_id, create_by, create_time, approve_date, erp_modify_date) VALUES + + ( #{item.erpId}, #{item.materialCode}, #{item.oldMaterialCode}, #{item.materialName}, #{item.materialCategories}, #{item.materialSubclass}, #{item.materialTypeId}, #{item.batchFlag}, #{item.materialUnifId}, #{item.materialUnit}, #{item.materialMatkl}, #{item.materialSpec}, #{item.netWeight}, #{item.grossWeight}, #{item.factoryId}, #{item.createOrgId}, #{item.useOrgId}, #{item.prodlineId}, #{item.activeFlag}, #{item.deletedFlag}, #{item.remark}, #{item.purchasePriceUnitId}, #{item.createBy}, #{item.createTime}, #{item.approveDate}, #{item.erpModifyDate}) + + + + diff --git a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java index f1b5c8bd..7951261e 100644 --- a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java +++ b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java @@ -69,11 +69,13 @@ public class RyTask } public void ERPSynMesSupplierInfo(String beginTime, String endTime){ System.out.println("++同步ERP中物料供应商++ErpSupplierInfo"); - remoteJindieService.ErpSupplierInfo(SecurityConstants.INNER,beginTime,endTime); + remoteJindieService.ErpSupplierInfo(SecurityConstants.INNER); } public void ERPSynMesMaterialInfo(String beginTime, String endTime){ + + //todo 查询createtime>上次执行时间和updatetime>上次执行时间的,要区分是第一次查询还是后续查询 System.out.println("++同步ERP中物料信息++ErpMesMaterialInfo"); - remoteJindieService.ErpMesMaterialInfo(SecurityConstants.INNER,beginTime,endTime); + remoteJindieService.ErpMesMaterialInfo(SecurityConstants.INNER); } }