ERP:同步物料信息接口完善
master
xins 1 year ago
parent a9655e548e
commit 7ac2b4256e

@ -20,9 +20,9 @@ public interface RemoteJindieService {
/** 同步供应商*/ /** 同步供应商*/
@GetMapping("/jindie/ErpSupplierInfo") @GetMapping("/jindie/ErpSupplierInfo")
R<Integer> ErpSupplierInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source, @RequestParam("beginTime") String beginTime, @RequestParam("endTime") String endTime); R<Integer> ErpSupplierInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** 同步物料*/ /** 同步物料*/
@GetMapping("/jindie/syncMaterialInfo") @GetMapping("/jindie/syncMaterialInfo")
R<Integer> ErpMesMaterialInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source, @RequestParam("beginTime") String beginTime, @RequestParam("endTime") String endTime); R<Integer> ErpMesMaterialInfo(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} }

@ -14,12 +14,12 @@ public class RemoteJindieFallbackFactory implements FallbackFactory<RemoteJindie
public RemoteJindieService create(Throwable throwable) { public RemoteJindieService create(Throwable throwable) {
return new RemoteJindieService() { return new RemoteJindieService() {
@Override @Override
public R<Integer> ErpSupplierInfo(String source, String beginTime, String endTime) { public R<Integer> ErpSupplierInfo(String source) {
return null; return null;
} }
@Override @Override
public R<Integer> ErpMesMaterialInfo(String source, String beginTime, String endTime) { public R<Integer> ErpMesMaterialInfo(String source) {
return null; return null;
} }
}; };

@ -30,9 +30,9 @@ public class KingdeeErpSyncController {
* erp * erp
* */ * */
@GetMapping("/ErpSupplierInfo") @GetMapping("/ErpSupplierInfo")
public AjaxResult ErpSupplierInfo(String beginTime, String endTime){ public AjaxResult ErpSupplierInfo(){
try { try {
return AjaxResult.success(kingdeeErpSyncService.syncSupplierInfoFromErp(0,beginTime,endTime)); return AjaxResult.success(kingdeeErpSyncService.syncSupplierInfoFromErp(0));
} catch (Exception e){ } catch (Exception e){
e.printStackTrace(); e.printStackTrace();
return AjaxResult.error(); return AjaxResult.error();
@ -45,9 +45,9 @@ public class KingdeeErpSyncController {
// @RequiresPermissions("wms:mobile:addrawinstock") // @RequiresPermissions("wms:mobile:addrawinstock")
@Log(title = "物料信息", businessType = BusinessType.INSERT) @Log(title = "物料信息", businessType = BusinessType.INSERT)
@GetMapping(("/syncMaterialInfo")) @GetMapping(("/syncMaterialInfo"))
public AjaxResult syncMaterialInfo(String beginTime, String endTime) { public AjaxResult syncMaterialInfo() {
try { try {
return AjaxResult.success(kingdeeErpSyncService.syncMaterialInfoFromErp(beginTime,endTime)); return AjaxResult.success(kingdeeErpSyncService.syncMaterialInfoFromErp(0));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return AjaxResult.error(); return AjaxResult.error();

@ -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<String> 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());
}
}
}

@ -72,4 +72,28 @@ public interface MesBaseMaterialInfoMapper
*/ */
public List<MesBaseMaterialInfo> selectMesBaseMaterialInfoListByMaterialIds(Long[] materialIds); public List<MesBaseMaterialInfo> 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<MesBaseMaterialInfo> mesBaseMaterialInfos);
} }

@ -2,7 +2,6 @@ package com.hw.jindie.service;
public interface IKingdeeErpSyncService { public interface IKingdeeErpSyncService {
public int syncMaterialInfoFromErp(String beginTime,String endTime) throws Exception; public int syncSupplierInfoFromErp(int startRow) throws Exception;
public int syncSupplierInfoFromErp(int startRow,String beginTime,String endTime) throws Exception; public int syncMaterialInfoFromErp(int startRow) throws Exception;
} }

@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -37,12 +38,11 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
private MesBaseSupplierInfoMapper mesBaseSupplierInfoMapper; private MesBaseSupplierInfoMapper mesBaseSupplierInfoMapper;
/** /**
* @throws Exception * @throws Exception
* @Description:ERP * @Description:ERP
*/ */
public int syncSupplierInfoFromErp(int startRow,String beginTime,String endTime) throws Exception { public int syncSupplierInfoFromErp(int startRow) throws Exception {
K3CloudApi api = new K3CloudApi(); K3CloudApi api = new K3CloudApi();
// "FormId": "BD_Supplier", // "FormId": "BD_Supplier",
// "FieldKeys": "FNumber ,FName,FCreateDate,FModifyDate,FAuditDate", // "FieldKeys": "FNumber ,FName,FCreateDate,FModifyDate,FAuditDate",
@ -62,10 +62,10 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
queryJson.put("Limit", limit); queryJson.put("Limit", limit);
queryJson.put("SubSystemId", ""); queryJson.put("SubSystemId", "");
//条件查询 //条件查询
if (StringUtils.isNotEmpty(beginTime)&&StringUtils.isNotEmpty(endTime)){ // if (StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)) {
String filterString = "FCreateDate >'"+beginTime+"' AND '"+endTime+"' >FCreateDate"; // String filterString = "FCreateDate >'" + beginTime + "' AND '" + endTime + "' >FCreateDate";
queryJson.put("FilterString",filterString); // queryJson.put("FilterString", filterString);
} // }
// System.out.println(queryJson.toString()); // System.out.println(queryJson.toString());
// "FieldKeys": "FNumber,FName,FBaseUnitId,FSpecification,FNETWEIGHT,FGROSSWEIGHT,FCreateDate,FModifyDate,FApproveDate", // "FieldKeys": "FNumber,FName,FBaseUnitId,FSpecification,FNETWEIGHT,FGROSSWEIGHT,FCreateDate,FModifyDate,FApproveDate",
@ -118,10 +118,9 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
System.out.println(mesBaseSupplierInfo); System.out.println(mesBaseSupplierInfo);
//通过erp主键判断表中是否有重复的数据如果有则更新没有则插入 //通过erp主键判断表中是否有重复的数据如果有则更新没有则插入
if (mesBaseSupplierInfos.size()==0){ if (mesBaseSupplierInfos.size() == 0) {
mesBaseSupplierInfoMapper.insertMesBaseSupplierInfo(mesBaseSupplierInfo); mesBaseSupplierInfoMapper.insertMesBaseSupplierInfo(mesBaseSupplierInfo);
} } else {
else {
//todo 主键 //todo 主键
mesBaseSupplierInfo.setSupplierId(mesBaseSupplierInfos.get(0).getSupplierId()); mesBaseSupplierInfo.setSupplierId(mesBaseSupplierInfos.get(0).getSupplierId());
mesBaseSupplierInfoMapper.updateMesBaseSupplierInfo(mesBaseSupplierInfo); mesBaseSupplierInfoMapper.updateMesBaseSupplierInfo(mesBaseSupplierInfo);
@ -133,12 +132,12 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
if (resultArray.size() < limit) { if (resultArray.size() < limit) {
// System.out.println(startRow); // System.out.println(startRow);
//通过递归同步所有供应商,测试先不用 //通过递归同步所有供应商,测试先不用
int i = syncSupplierInfoFromErp(startRow + resultArray.size(),beginTime,endTime); int i = syncSupplierInfoFromErp(startRow + resultArray.size());
// return i; // return i;
return 1; return 1;
} else { } else {
//为空时的总行数 //为空时的总行数
return startRow+resultArray.size(); return startRow + resultArray.size();
} }
} }
@ -148,7 +147,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
* @Description:ERP * @Description:ERP
*/ */
@Override @Override
public int syncMaterialInfoFromErp(String beginTime,String endTime) throws Exception { public int syncMaterialInfoFromErp(int startRow) throws Exception {
K3CloudApi api = new K3CloudApi(); K3CloudApi api = new K3CloudApi();
String FDocumentStatus = "C"; String FDocumentStatus = "C";
@ -159,7 +158,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
// String filterString = "FNumber='98010102'"; // String filterString = "FNumber='98010102'";
String orderString = ""; String orderString = "";
int topRowCount = 0; int topRowCount = 0;
int startRow = 0; // int startRow = 0;
int limit = 20; int limit = 20;
queryJson.put("FormId", formId); queryJson.put("FormId", formId);
queryJson.put("FieldKeys", fieldKeys); queryJson.put("FieldKeys", fieldKeys);
@ -169,91 +168,104 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
queryJson.put("Limit", limit); queryJson.put("Limit", limit);
queryJson.put("SubSystemId", ""); queryJson.put("SubSystemId", "");
//条件查询 //条件查询
if (StringUtils.isNotEmpty(beginTime)&&StringUtils.isNotEmpty(endTime)){ String maxErpModifyDate = mesBaseMaterialInfoMapper.getMaxErpModifyDate();
String filterString = "FCreateDate >'"+beginTime+"' AND '"+endTime+"' >FCreateDate"; if (StringUtils.isNotEmpty(maxErpModifyDate)) {
queryJson.put("FilterString",filterString); String filterString = "FModifyDate >'" + maxErpModifyDate + "'";
queryJson.put("FilterString", filterString);
} }
System.out.println(queryJson.toString()); System.out.println(queryJson.toString());
String result = api.billQuery(queryJson.toString()); String result = api.billQuery(queryJson.toString());
JSONArray resultArray = JSONArray.parseArray(result); JSONArray resultArray = JSONArray.parseArray(result);
System.out.println("物料单据查询接口: " + result); System.out.println("物料单据查询接口: " + result);
List<MesBaseMaterialInfo> toInsertMaterialInfoList = new ArrayList<>();
List<MesBaseMaterialInfo> toUpdateMaterialInfoList = new ArrayList<>();
for (int i = 0; i < resultArray.size(); i++) { for (int i = 0; i < resultArray.size(); i++) {
try { JSONObject resultObject = (JSONObject) resultArray.get(i);
JSONObject resultObject = (JSONObject) resultArray.get(i); MesBaseMaterialInfo mesBaseMaterialInfo = new MesBaseMaterialInfo();
MesBaseMaterialInfo mesBaseMaterialInfo = new MesBaseMaterialInfo(); //erp主键
//erp主键 Integer erpId = (Integer) resultObject.get("FMaterialId");
Integer erpId = (Integer) resultObject.get("FMaterialId"); //物料编码
//物料编码 String materialCode = (String) resultObject.get("FNumber");
String materialCode = (String) resultObject.get("FNumber"); //物料名称
//物料名称 String materialName = (String) resultObject.get("FName");
String materialName = (String) resultObject.get("FName"); //计量单位ID
//计量单位ID Integer materaialUnitId = resultObject.get("FBaseUnitId") == null ? null : (Integer) resultObject.get("FBaseUnitId");
Integer materaialUnitId = resultObject.get("FBaseUnitId") == null ? null : (Integer) resultObject.get("FBaseUnitId"); //物料规格
//物料规格 String materialSpec = resultObject.get("FSpecification") == null ? null : (String) resultObject.get("FSpecification");
String materialSpec = resultObject.get("FSpecification") == null ? null : (String) resultObject.get("FSpecification"); //净重
//净重 BigDecimal netWeight = resultObject.get("FNETWEIGHT") == null ? null : (BigDecimal) resultObject.get("FNETWEIGHT");
BigDecimal netWeight = resultObject.get("FNETWEIGHT") == null ? null : (BigDecimal) resultObject.get("FNETWEIGHT"); //毛重
//毛重 BigDecimal grossWeight = resultObject.get("FGROSSWEIGHT") == null ? null : (BigDecimal) resultObject.get("FGROSSWEIGHT");
BigDecimal grossWeight = resultObject.get("FGROSSWEIGHT") == null ? null : (BigDecimal) resultObject.get("FGROSSWEIGHT"); //创建时间
//创建时间 String createDateStr = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate");
String createDateStr = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate"); //erp最后更新日期
//erp最后更新日期 String modifyDateStr = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate");
String modifyDateStr = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate"); //审核日期
//审核日期 String approveDateStr = resultObject.get("FApproveDate") == null ? null : (String) resultObject.get("FApproveDate");
String approveDateStr = resultObject.get("FApproveDate") == null ? null : (String) resultObject.get("FApproveDate"); //创建组织
//创建组织 Integer createOrgId = resultObject.get("FCreateOrgId") == null ? null : (Integer) resultObject.get("FCreateOrgId");
Integer createOrgId = resultObject.get("FCreateOrgId") == null ? null : (Integer) resultObject.get("FCreateOrgId"); //使用组织
//使用组织 Integer useOrgId = resultObject.get("FUseOrgId") == null ? null : (Integer) resultObject.get("FUseOrgId");
Integer useOrgId = resultObject.get("FUseOrgId") == null ? null : (Integer) resultObject.get("FUseOrgId"); //采购计量单价
//采购计量单价 Integer purchasePriceUnitId = resultObject.get("FPurchasePriceUnitId") == null ? null : (Integer) resultObject.get("FPurchasePriceUnit");
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<MesBaseMaterialInfo> 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 (!toInsertMaterialInfoList.isEmpty()) {
if (StringUtils.isNotEmpty(createDateStr)) { mesBaseMaterialInfoMapper.batchMesBaseMaterialInfo(toInsertMaterialInfoList);
mesBaseMaterialInfo.setCreateTime(conversionERPTime(createDateStr)); }
} if (!toUpdateMaterialInfoList.isEmpty()) {
for (MesBaseMaterialInfo toUpdatedMaterialInfo : toUpdateMaterialInfoList) {
if (StringUtils.isNotEmpty(modifyDateStr)) { mesBaseMaterialInfoMapper.updateMesBaseMaterialInfo(toUpdatedMaterialInfo);
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();
} }
} }
// 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(resultArray.size());
System.out.println("项目信息单据查询接口: " + result); System.out.println("项目信息单据查询接口: " + result);
for (int i = 0; i < resultArray.size(); i++){ for (int i = 0; i < resultArray.size(); i++) {
try { try {
JSONObject resultObject = (JSONObject) resultArray.get(i); JSONObject resultObject = (JSONObject) resultArray.get(i);
MesProjectInfo mesProjectInfo = new MesProjectInfo(); MesProjectInfo mesProjectInfo = new MesProjectInfo();
Integer FID = resultObject.get("FID")==null ? 0 : (Integer)resultObject.get("FID"); Integer FID = resultObject.get("FID") == null ? 0 : (Integer) resultObject.get("FID");
String FNumber = resultObject.get("FNumber")==null ? null : (String)resultObject.get("FNumber"); String FNumber = resultObject.get("FNumber") == null ? null : (String) resultObject.get("FNumber");
String FName = resultObject.get("FName")==null ? null :(String)resultObject.get("FName"); String FName = resultObject.get("FName") == null ? null : (String) resultObject.get("FName");
// String FDocumentStatus = resultObject.get("FDocumentStatus")==null? null:(String)resultObject.get("FDocumentStatus"); // String FDocumentStatus = resultObject.get("FDocumentStatus")==null? null:(String)resultObject.get("FDocumentStatus");
String FForbidStatus = resultObject.get("FForbidStatus")==null? null:(String)resultObject.get("FForbidStatus"); String FForbidStatus = resultObject.get("FForbidStatus") == null ? null : (String) resultObject.get("FForbidStatus");
String FAuditDate = resultObject.get("FAuditDate")==null?null:(String) resultObject.get("FAuditDate"); String FAuditDate = resultObject.get("FAuditDate") == null ? null : (String) resultObject.get("FAuditDate");
String FModifyDate = resultObject.get("FModifyDate")==null?null:(String) resultObject.get("FModifyDate"); String FModifyDate = resultObject.get("FModifyDate") == null ? null : (String) resultObject.get("FModifyDate");
String FCreateDate = resultObject.get("FCreateDate")==null?null:(String) resultObject.get("FCreateDate"); String FCreateDate = resultObject.get("FCreateDate") == null ? null : (String) resultObject.get("FCreateDate");
mesProjectInfo.setErpId(Long.valueOf(FID)); 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); Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FAuditDate);
mesProjectInfo.setAuditDate(date); mesProjectInfo.setAuditDate(date);
} }
if (StringUtils.isNotEmpty(FModifyDate)){ if (StringUtils.isNotEmpty(FModifyDate)) {
FModifyDate = FModifyDate.replace("T"," "); FModifyDate = FModifyDate.replace("T", " ");
Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss",FModifyDate); Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FModifyDate);
mesProjectInfo.setErpModifyDate(date); mesProjectInfo.setErpModifyDate(date);
} }
if (StringUtils.isNotEmpty(FCreateDate)){ if (StringUtils.isNotEmpty(FCreateDate)) {
FCreateDate = FCreateDate.replace("T"," "); FCreateDate = FCreateDate.replace("T", " ");
Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss",FCreateDate); Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", FCreateDate);
mesProjectInfo.setCreateTime(date); mesProjectInfo.setCreateTime(date);
} }
System.out.println(mesProjectInfo); System.out.println(mesProjectInfo);
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -423,7 +435,7 @@ public class KingdeeErpSyncServiceImpl implements IKingdeeErpSyncService {
} }
//将erp中获取的时间string转换为date类型 //将erp中获取的时间string转换为date类型
public Date conversionERPTime(String ERPTime){ public Date conversionERPTime(String ERPTime) {
ERPTime = ERPTime.replace("T", " "); ERPTime = ERPTime.replace("T", " ");
Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", ERPTime); Date date = DateUtils.dateTime("yyyy-MM-dd HH:mm:ss", ERPTime);
return date; return date;

@ -4,6 +4,8 @@ import static org.junit.Assert.fail;
import java.util.*; import java.util.*;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.kingdee.bos.webapi.entity.*; import com.kingdee.bos.webapi.entity.*;
import com.kingdee.bos.webapi.sdk.K3CloudApi; 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);
}
} }

@ -239,4 +239,25 @@
</foreach> </foreach>
</select> </select>
<select id="selectMaxErpModifyDate" resultMap="String">
<include refid="selectMesBaseMaterialInfoVo"/>
SELECT max(erp_modify_date) FROM mes_base_material_info order by erp_id
</select>
<select id="selectMesBaseMaterialInfoByErpId" parameterType="Long"
resultMap="MesBaseMaterialInfoResult">
select material_id from mes_base_material_info where erp_id = #{erpId} limit 1
</select>
<insert id="batchMesBaseMaterialInfo">
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
<foreach item="item" index="index" collection="list" separator=",">
( #{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})
</foreach>
</insert>
</mapper> </mapper>

@ -69,11 +69,13 @@ public class RyTask
} }
public void ERPSynMesSupplierInfo(String beginTime, String endTime){ public void ERPSynMesSupplierInfo(String beginTime, String endTime){
System.out.println("++同步ERP中物料供应商++ErpSupplierInfo"); System.out.println("++同步ERP中物料供应商++ErpSupplierInfo");
remoteJindieService.ErpSupplierInfo(SecurityConstants.INNER,beginTime,endTime); remoteJindieService.ErpSupplierInfo(SecurityConstants.INNER);
} }
public void ERPSynMesMaterialInfo(String beginTime, String endTime){ public void ERPSynMesMaterialInfo(String beginTime, String endTime){
//todo 查询createtime>上次执行时间和updatetime>上次执行时间的,要区分是第一次查询还是后续查询
System.out.println("++同步ERP中物料信息++ErpMesMaterialInfo"); System.out.println("++同步ERP中物料信息++ErpMesMaterialInfo");
remoteJindieService.ErpMesMaterialInfo(SecurityConstants.INNER,beginTime,endTime); remoteJindieService.ErpMesMaterialInfo(SecurityConstants.INNER);
} }
} }

Loading…
Cancel
Save