|
|
|
@ -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<MesBaseMaterialInfo> toInsertMaterialInfoList = new ArrayList<>();
|
|
|
|
|
List<MesBaseMaterialInfo> 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<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 (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;
|
|
|
|
|