diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectNewOpportunityController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectNewOpportunityController.java index ba8efe5..6ce3b87 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectNewOpportunityController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectNewOpportunityController.java @@ -43,23 +43,33 @@ public class ProjectNewOpportunityController { String apiName = "NewOpportunityObj"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "集成测试-商机")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "集成测试-商机")); JSONObject jsonject = fxapi.getSynNewDataObj(false, "商机", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); - + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(false, "商机重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行项目(商机)" + i + " -------------------" + nameData); @@ -77,6 +87,9 @@ public class ProjectNewOpportunityController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -89,7 +102,7 @@ public class ProjectNewOpportunityController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDataProject(jsonObjectData); @@ -120,6 +133,11 @@ public class ProjectNewOpportunityController { String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; String number = GcjJson.getNodeValue(str, "JSON.opportunity_id__c") != null ? GcjJson.getNodeValue(str, "JSON.opportunity_id__c").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + + + String org = GcjJson.getNodeValue(str, "JSON.erp_organization__c") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization__c").toString() : ""; String strJson = ""; try{ @@ -128,6 +146,9 @@ public class ProjectNewOpportunityController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -146,7 +167,7 @@ public class ProjectNewOpportunityController { datajson.put("enable","1");//使用状态 datajson.put("status","C");//数据状态 //创建组织 - datajson.put("createorg_number","zyierp"); + datajson.put("createorg_number",org); dataarr.add(datajson); params.put("data",dataarr); log.info("--请求json---" + params.toJSONString()); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectObjController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectObjController.java index c5b3d62..5b6fcf8 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectObjController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/ProjectObjController.java @@ -43,23 +43,33 @@ public class ProjectObjController { String apiName = "ProjectObj"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "设备台账集成测试22")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "设备台账集成测试22")); JSONObject jsonject = fxapi.getSynNewDataObj(false, "项目启动单", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); - + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(false, "项目启动单重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行项目(项目启动单)" + i + " -------------------" + nameData); @@ -77,6 +87,9 @@ public class ProjectObjController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -89,7 +102,7 @@ public class ProjectObjController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDataProject(jsonObjectData); @@ -120,7 +133,19 @@ public class ProjectObjController { String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; String number = GcjJson.getNodeValue(str, "JSON.project_no__c") != null ? GcjJson.getNodeValue(str, "JSON.project_no__c").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + + String org1 = GcjJson.getNodeValue(str, "JSON.erp_organization_code_pre__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_code_pre__c__v").toString() : ""; + String org2 = GcjJson.getNodeValue(str, "JSON.erp_organization_code_sale__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_code_sale__c__v").toString() : ""; + + String org = ""; + if(!"".equals(org2)){ + org = org2; + }else { + org = org1; + } String strJson = ""; try{ JSONObject dataSyn = MagicApi.getSendSYNDataProject("project", syn_type, dataId,"3"); @@ -128,6 +153,9 @@ public class ProjectObjController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -146,7 +174,7 @@ public class ProjectObjController { datajson.put("enable","1");//使用状态 datajson.put("status","C");//数据状态 //创建组织 - datajson.put("createorg_number","zyierp"); + datajson.put("createorg_number",org); dataarr.add(datajson); params.put("data",dataarr); log.info("--请求json---" + params.toJSONString()); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java index 44d975b..f8bee3b 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java @@ -44,6 +44,7 @@ public class customerContactController { String apiName = "ContactObj"; List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("ISN", "field_7qGnx__c", ""), diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java index be0b88b..8d67f1c 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java @@ -44,6 +44,7 @@ public class customerFinInfoController { String apiName = "AccountFinInfoObj"; List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("ISN", "field_7qGnx__c", ""), diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/materialreqbillXTController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/materialreqbillXTController.java index 099901e..7ab512d 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/materialreqbillXTController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/materialreqbillXTController.java @@ -28,9 +28,40 @@ public class materialreqbillXTController { static Logger log = LoggerFactory.getLogger("materialreqbillv2"); public static void main(String[] args) throws Exception { - // new materialreqbillXTController().getSynDataAdd(); - // new materialreqbillXTController().materialreqbillSave(); - new materialreqbillXTController().doOperation("6836d1275313060001419706","audit"); + new materialreqbillXTController().getSynDataAdd(); + new materialreqbillXTController().materialreqbillSave(); + } + + public void getOperation()throws Exception{ + FXHTTP fxapi = new FXHTTP(); + String apiName = "shipping_application__c"; + String[] arr ={"option_awaiting_review__c","option_pending_submission__c","option_pending_cancellation__c","option_awaiting_re__c"}; + + List paramList = Arrays.asList( + new CrmFXApiParam("ISN", "erp_id__c", ""), + new CrmFXApiParam("IN", "erp_document_status__c", arr), + new CrmFXApiParam("EQ", "sync_status__c", "option_sync_success__c") + ); + JSONObject jsonject = fxapi.getSynNewDataObj(true, "发货申请", apiName, paramList); + JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + if(array.isEmpty()){ + return; + } + for (int i = 0; i < array.size(); i++) { + JSONObject str = array.getJSONObject(i); + String crmId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.erp_document_status__c") != null ? GcjJson.getNodeValue(str, "JSON.erp_document_status__c").toString() : ""; + if("option_pending_submission__c".equals(status)){ + new materialreqbillXTController().doOperation(crmId,"submit"); + } else if ("option_awaiting_review__c".equals(status)) { + new materialreqbillXTController().doOperation(crmId,"audit"); + } else if ("option_pending_cancellation__c".equals(status)) { + new materialreqbillXTController().doOperation(crmId,"unsubmit"); + } else if ("option_awaiting_re__c".equals(status)) { + new materialreqbillXTController().doOperation(crmId,"unaudit"); + } + } + } public void getSynDataAdd() throws Exception { @@ -43,23 +74,34 @@ public class materialreqbillXTController { String apiName = "shipping_application__c"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), - new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), + new CrmFXApiParam("EQ", "life_status", "under_review") + ); - - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "FHSQ202505280014")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "FHSQ202505280014")); JSONObject jsonject = fxapi.getSynNewDataObj(true, "发货申请", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(true, "发货申请重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); + for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行发货申请" + i + " -------------------" + nameData); @@ -77,6 +119,9 @@ public class materialreqbillXTController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -89,7 +134,7 @@ public class materialreqbillXTController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDatamaterialreqbill(jsonObjectData); @@ -125,15 +170,27 @@ public class materialreqbillXTController { String contractno2 = GcjJson.getNodeValue(str, "JSON.pre_signed_contract_number__c") != null ? GcjJson.getNodeValue(str, "JSON.pre_signed_contract_number__c").toString() : ""; + + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + + String org1 = GcjJson.getNodeValue(str, "JSON.erp_organization_pre_contr__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_pre_contr__c__v").toString() : ""; + + String org2 = GcjJson.getNodeValue(str, "JSON.erp_organization_sales_con__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_sales_con__c__v").toString() : ""; + + String org = ""; + if(!"".equals(org2)){ + org = org2; + }else { + org = org1; + } + String cemployeeid = ""; if (GcjJson.getNodeValue(str, "JSON.owner__r.id") != null) { cemployeeid = GcjJson.getNodeValue(str, "JSON.owner__r.id").toString(); cemployeeid = fxapi.getDataBYID("PersonnelObj", "_id", cemployeeid, "JSON.data.dataList[0].field_T1xid__c"); } - /* if (StringUtils.isBlank(cemployeeid)) { - sendFlag = true; - stringBuffer.append("销售员不存在\n"); - }*/ + String cdeptid = ""; if (GcjJson.getNodeValue(str, "JSON.owner_department_id") != null) { String dept_id = GcjJson.getNodeValue(str, "JSON.owner_department_id").toString(); @@ -146,6 +203,9 @@ public class materialreqbillXTController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -156,12 +216,13 @@ public class materialreqbillXTController { JSONArray dataarr = new JSONArray(); JSONObject datajson = new JSONObject(); datajson.put("billno",nameData); - //datajson.put("org_number","zyierp"); - datajson.put("org","ZHY"); - datajson.put("bizorg","ZHY"); + + + datajson.put("org",org); + datajson.put("bizorg",org); datajson.put("biztime",sdf.format(GcjJson.getNodeValue(str, "JSON.application_date__c"))); - datajson.put("applyuser","ID-000016"); - datajson.put("applydept","004"); + datajson.put("applyuser",cemployeeid); + datajson.put("applydept",cdeptid); if(!"".equals(contractno2)){ datajson.put("contractno",contractno2);//contractno }else { @@ -196,7 +257,7 @@ public class materialreqbillXTController { //批号 groupstandardjson.put("lot",GcjJson.getNodeValue(stra, "JSON.batch_number__c")); - groupstandardjson.put("ecostcenter","ZHY"); + groupstandardjson.put("ecostcenter",org); //项目编码 groupstandardjson.put("project",GcjJson.getNodeValue(stra, "JSON.project_code__c")); @@ -263,18 +324,24 @@ public class materialreqbillXTController { paramMap.put("erp_id__c", erpid);//数据ID paramMap.put("sync_status__c", "option_sync_success__c"); paramMap.put("sync_info__c", "同步成功"); + paramMap.put("erp_document_status__c", "submit"); + fxapi.lock(false, dataId, "shipping_application__c"); //回写json fxapi.upSynZDYFieldParam("", "shipping_application__c", dataId, paramMap); //调用提交 this.doOperation(dataId,"submit"); + }else{ sendFlag=true; stringBuffer.append("发货申请创建接口调用失败:"+resjs.getString("message")); Map paramMap = new HashMap(); paramMap.put("sync_status__c", "option_sync_failure__c"); paramMap.put("sync_info__c", stringBuffer); + paramMap.put("erp_document_status__c", "option_pending_action__c"); + fxapi.lock(false, dataId, "shipping_application__c"); //回写json fxapi.upSynZDYFieldParam("", "shipping_application__c", dataId, paramMap); + fxapi.lock(true, dataId, "shipping_application__c"); } } catch (Exception e) { sendFlag = true; @@ -282,8 +349,11 @@ public class materialreqbillXTController { Map paramMap = new HashMap(); paramMap.put("sync_status__c", "option_sync_failure__c"); paramMap.put("sync_info__c", stringBuffer); + paramMap.put("erp_document_status__c", "option_pending_action__c"); + fxapi.lock(false, dataId, "shipping_application__c"); //回写json fxapi.upSynZDYFieldParam("", "shipping_application__c", dataId, paramMap); + fxapi.lock(true, dataId, "shipping_application__c"); } JSONObject sendData = new JSONObject(); @@ -311,6 +381,7 @@ public class materialreqbillXTController { } public void doOperation(String crmId,String operation) throws Exception { + FXHTTP fxapi = new FXHTTP(); //操作类型:submit:提交;audit:审核;撤销:unsubmit;删除:delete;反审核:unaudit String res_url = "http://192.168.31.158:8022/ierp/kapi/v2/f9w5/im/materialreqbill/doOperation"; JSONObject datajson = new JSONObject(); @@ -333,13 +404,36 @@ public class materialreqbillXTController { String crmid = successdata.getString("crmid"); String erpid = successdata.getString("pkId"); String billno = successdata.getString("billno"); + + Map paramMap = new HashMap(); + paramMap.put("erp_document_status__c", operation);//数据ID + paramMap.put("review_info__c", operation+"调用成功"); + fxapi.lock(false, crmId, "shipping_application__c"); + //回写json + fxapi.upSynZDYFieldParam("", "shipping_application__c", crmId, paramMap); + if("submit".equals(operation)){//审核成功,操作完锁定状态 + fxapi.lock(true, crmId, "shipping_application__c"); + } }else{ //响应的消息 String message = resjs.getString("message"); + Map paramMap = new HashMap(); + paramMap.put("erp_document_status__c", "option_pending_action__c");//数据ID + paramMap.put("review_info__c", message); + + + if("submit".equals(operation)){//审核失败,解锁更新状态 + fxapi.cancel( message,crmId, "shipping_application__c");//取消审批 + //回写json + fxapi.upSynZDYFieldParam("", "shipping_application__c", crmId, paramMap); + }else { + //其他情况,先解锁,在更新 + fxapi.lock(false, crmId, "shipping_application__c"); + fxapi.upSynZDYFieldParam("", "shipping_application__c", crmId, paramMap); + } + } - - } } diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/priceapprovaController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/priceapprovaController.java index 6ae877e..f44617d 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/priceapprovaController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/priceapprovaController.java @@ -51,23 +51,33 @@ public class priceapprovaController { String apiName = "project_quote_quotation__c"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "BJD-2025-05-270002")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "BJD-2025-05-270002")); JSONObject jsonject = fxapi.getSynNewDataObj(true, "项目报价询价", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); - + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(true, "重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行项目报价询价" + i + " -------------------" + nameData); @@ -85,6 +95,9 @@ public class priceapprovaController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -97,7 +110,7 @@ public class priceapprovaController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDatapriceapprova(jsonObjectData); @@ -129,6 +142,8 @@ public class priceapprovaController { String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; String warranty = GcjJson.getNodeValue(str, "JSON.field_I3e77__c") != null ? GcjJson.getNodeValue(str, "JSON.field_I3e77__c").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; String project_location = GcjJson.getNodeValue(str, "JSON.project_location__c") != null ? GcjJson.getNodeValue(str, "JSON.project_location__c").toString() : ""; String crspdencestd = GcjJson.getNodeValue(str, "JSON.field_h1HJx__c") != null ? GcjJson.getNodeValue(str, "JSON.field_h1HJx__c").toString() : ""; @@ -139,6 +154,7 @@ public class priceapprovaController { JSONArray specificationfile = (JSONArray) GcjJson.getNodeValue(str, "JSON.technical_specification__c"); + String org = GcjJson.getNodeValue(str, "JSON.erp_organization__c") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization__c").toString() : ""; String cemployeeid = ""; @@ -146,10 +162,7 @@ public class priceapprovaController { cemployeeid = GcjJson.getNodeValue(str, "JSON.owner__r.id").toString(); cemployeeid = fxapi.getDataBYID("PersonnelObj", "_id", cemployeeid, "JSON.data.dataList[0].field_T1xid__c"); } - /* if (StringUtils.isBlank(cemployeeid)) { - sendFlag = true; - stringBuffer.append("销售员不存在\n"); - }*/ + String cdeptid = ""; if (GcjJson.getNodeValue(str, "JSON.owner_department_id") != null) { String dept_id = GcjJson.getNodeValue(str, "JSON.owner_department_id").toString(); @@ -162,6 +175,9 @@ public class priceapprovaController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -184,7 +200,7 @@ public class priceapprovaController { datajson.put("billcretype","3"); datajson.put("currency_number","CNY"); datajson.put("pricelisttypeid_number","JMLX_SYS_CG"); - datajson.put("org_number","ZHY"); + datajson.put("org_number",org); datajson.put("f9w5_warranty",warranty); datajson.put("f9w5_projectlocation",project_location); datajson.put("f9w5_crspdencestd",crspdencestd); @@ -218,8 +234,8 @@ public class priceapprovaController { //产品编码 groupstandardjson.put("material_number",GcjJson.getNodeValue(stra, "JSON.product_code_text__c")); - groupstandardjson.put("user_operatornumber","ID-000016"); - groupstandardjson.put("dept_number","004"); + groupstandardjson.put("user_operatornumber",cemployeeid); + groupstandardjson.put("dept_number",cdeptid); //供应商编码 groupstandardjson.put("supplierid_number",GcjJson.getNodeValue(stra, "JSON.supplier_code__c")); // groupstandardjson.put("supplierid_number","Sup-000001"); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/returnapplicationController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/returnapplicationController.java index dc691ed..0eb5629 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/returnapplicationController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/returnapplicationController.java @@ -43,23 +43,36 @@ public class returnapplicationController { String apiName = "return_application__c"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "create_time", "1748923200000"), new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "THSQ20250528-0005")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "THSQ20250528-0005")); JSONObject jsonject = fxapi.getSynNewDataObj(true, "退货申请", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(true, "退货申请重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); + for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行退货申请" + i + " -------------------" + nameData); @@ -77,6 +90,9 @@ public class returnapplicationController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -89,7 +105,7 @@ public class returnapplicationController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDatamaterialreqbill(jsonObjectData); @@ -127,15 +143,26 @@ public class returnapplicationController { String contractno2 = GcjJson.getNodeValue(str, "JSON.pre_signed_contract_number__c") != null ? GcjJson.getNodeValue(str, "JSON.pre_signed_contract_number__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + + String org1 = GcjJson.getNodeValue(str, "JSON.erp_organization_pre_contr__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_pre_contr__c__v").toString() : ""; + + String org2 = GcjJson.getNodeValue(str, "JSON.erp_organization_sales_con__c__v") != null ? GcjJson.getNodeValue(str, "JSON.erp_organization_sales_con__c__v").toString() : ""; + + String org = ""; + if(!"".equals(org2)){ + org = org2; + }else { + org = org1; + } + String cemployeeid = ""; if (GcjJson.getNodeValue(str, "JSON.owner__r.id") != null) { cemployeeid = GcjJson.getNodeValue(str, "JSON.owner__r.id").toString(); cemployeeid = fxapi.getDataBYID("PersonnelObj", "_id", cemployeeid, "JSON.data.dataList[0].field_T1xid__c"); } - /* if (StringUtils.isBlank(cemployeeid)) { - sendFlag = true; - stringBuffer.append("销售员不存在\n"); - }*/ + String cdeptid = ""; if (GcjJson.getNodeValue(str, "JSON.owner_department_id") != null) { String dept_id = GcjJson.getNodeValue(str, "JSON.owner_department_id").toString(); @@ -148,6 +175,9 @@ public class returnapplicationController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -169,10 +199,12 @@ public class returnapplicationController { - datajson.put("applydept","004"); - datajson.put("applyuser","ID-000016"); - datajson.put("bizorg","ZHY"); - datajson.put("org","ZHY"); + datajson.put("applydept",cdeptid); + datajson.put("applyuser",cemployeeid); + + datajson.put("bizorg",org); + datajson.put("org",org); + datajson.put("crmid",dataId); datajson.put("erpid",erpid); @@ -203,7 +235,7 @@ public class returnapplicationController { groupstandardjson.put("location",GcjJson.getNodeValue(stra, "JSON.warehouse_position__c")); //项目编码 groupstandardjson.put("project",GcjJson.getNodeValue(stra, "JSON.project_code__c")); - groupstandardjson.put("ecostcenter","ZHY"); + groupstandardjson.put("ecostcenter",org); groupstandardjson.put("erpEntryId",GcjJson.getNodeValue(stra, "JSON.erp_outbound_line_id__c")); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXHTTP.java b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXHTTP.java index 2a3fb03..1268779 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXHTTP.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXHTTP.java @@ -948,6 +948,29 @@ public class FXHTTP { APIUtil.FXApiObj(url, Xkjson); } + + public void cancel(String message, String id, String apiName) { + XKTokenAccess xktonken = new XKTokenAccess(); + + String Xkjson = "{\n" + + " \"corpId\": \"" + FXTIC.CORPID + "\",\n" + + " \"corpAccessToken\": \"" + xktonken.getCorpAccessToken().getCorpAccessToken() + "\",\n" + + " \"currentOpenUserId\": \"" + FXTIC.CURRENTOPENUSERID + "\",\n" + + + " \"data\":{\n" + + " \n" + + " \"entityId\":\"" + apiName + "\",\n" + + " \"objectId\":\"" + id + "\",\n" + + " \"detailObjStrategy\":\"" + message + "\" \n" + + " \n" + + " }\n" + + "}"; + String url = "https://open.fxiaoke.com/cgi/crm/v2/special/approval/instance/cancel"; + + //请求接口 + APIUtil.FXApiObj(url, Xkjson); + } + /** * 修改同步字段-成功 *