diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/BankInfoController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/BankInfoController.java index 86015a2..1d5e7e6 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/BankInfoController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/BankInfoController.java @@ -286,7 +286,7 @@ public class BankInfoController { Map deptReq = new HashMap<>(); deptReq.put("data", data); deptReq.put("pageNo", 1); - deptReq.put("pageSize", 1); + deptReq.put("pageSize", 1999); //开始获取金蝶token String accessToken = new KDTokenController().getKDAccessTokenTest(); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DesignController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DesignController.java index 56406d6..0badbd1 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DesignController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DesignController.java @@ -50,7 +50,7 @@ public class DesignController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject getDesignDoc = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), //new Filter("EQ", "name", Arrays.asList("SJWJ250528-0022")), new Filter("GT", "create_time", Arrays.asList("1748923200000")), @@ -84,7 +84,8 @@ public class DesignController { String designDocName = designDocData.getString("name"); //当前单据的创建时间 - String createTime = designDocData.getString("create_time"); + //String createTime = designDocData.getString("create_time"); + String createTime = designDocData.getString("last_modified_time"); //开始查询该单据是否已经集成过 JSONObject isLog = new JSONObject(); @@ -106,7 +107,19 @@ public class DesignController { //开始封装传输至ERP中的请求 Map erpDesignMap = new HashMap<>(); erpDesignMap.put("billno", designDocName);//设计文件编号 - erpDesignMap.put("org_number", "ZHY");//组织编码 + + //判断组织编码 + String orgCode = ""; + if (designDocData.getString("erp_organization_sales_con__c__v") != null && !"".equals(designDocData.getString("erp_organization_sales_con__c__v"))) { + orgCode = designDocData.getString("erp_organization_sales_con__c__v"); + } else if (designDocData.getString("erp_organization_pre_contr__c__v") != null && !"".equals(designDocData.getString("erp_organization_pre_contr__c__v"))) { + orgCode = designDocData.getString("erp_organization_pre_contr__c__v"); + } else { + log.info("当前单据没有组织编码,将不再向下执行"); + continue; + } + + erpDesignMap.put("org_number", orgCode);//组织编码 erpDesignMap.put("billtype_number", "pm_requirapplybill_BT_sjwjxf");//单据类型 erpDesignMap.put("biztype_name", "物料类采购");//业务类型 @@ -139,15 +152,18 @@ public class DesignController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - erpDesignMap.put("dept_number", "004");//部门编码 + //erpDesignMap.put("dept_number", "004");//部门编码 + erpDesignMap.put("dept_number", deptCode);//部门编码 //获取负责人编码 String ownerCode = ""; List ownerIdList = designDocData.getJSONArray("owner"); + System.out.println(ownerIdList); + JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -158,13 +174,16 @@ public class DesignController { e.printStackTrace(); } + System.out.println("查询负责人结果为:" + ownerRes); + if ("success".equals(ownerRes.getString("errorDescription")) && !ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpDesignMap.put("bizuser_number", "ID-000011");//人员编码 - erpDesignMap.put("bizorg_number", "ZHY");//采购组织 + //erpDesignMap.put("bizuser_number", "ID-000011");//人员编码 + erpDesignMap.put("bizuser_number", ownerCode);//人员编码 + erpDesignMap.put("bizorg_number", orgCode);//采购组织 erpDesignMap.put("project_number", "SJ20250424-0033");//todo 项目号(商机) erpDesignMap.put("contractno", designDocData.getString("sales_contract_number__c__r"));//合同号 erpDesignMap.put("crmid", designDocId);//crm唯一id @@ -415,7 +434,19 @@ public class DesignController { Map erpDesignMap = new HashMap<>(); erpDesignMap.put("id", erpId);//erpId erpDesignMap.put("billno", designDocName);//设计文件编号 - erpDesignMap.put("org_number", "ZHY");//组织编码 + + //判断组织编码 + String orgCode = ""; + if (designDocData.getString("erp_organization_sales_con__c__v") != null && !"".equals(designDocData.getString("erp_organization_sales_con__c__v"))) { + orgCode = designDocData.getString("erp_organization_sales_con__c__v"); + } else if (designDocData.getString("erp_organization_pre_contr__c__v") != null && !"".equals(designDocData.getString("erp_organization_pre_contr__c__v"))) { + orgCode = designDocData.getString("erp_organization_pre_contr__c__v"); + } else { + log.info("当前单据没有组织编码,将不再向下执行"); + continue; + } + + erpDesignMap.put("org_number", orgCode);//组织编码 erpDesignMap.put("billtype_number", "pm_requirapplybill_STD_BT_S");//单据类型 erpDesignMap.put("biztype_name", "物料类采购");//业务类型 @@ -448,7 +479,8 @@ public class DesignController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - erpDesignMap.put("dept_number", "ZHY");//部门编码 + //erpDesignMap.put("dept_number", "ZHY");//部门编码 + erpDesignMap.put("dept_number", deptCode);//部门编码 //获取负责人编码 String ownerCode = ""; @@ -467,13 +499,16 @@ public class DesignController { e.printStackTrace(); } + System.out.println("测试负责人"+ownerRes); + if ("success".equals(ownerRes.getString("errorDescription")) && !ownerRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpDesignMap.put("bizuser_number", "ID-000011");//人员编码 - erpDesignMap.put("bizorg_number", "ZHY");//采购组织 + //erpDesignMap.put("bizuser_number", "ID-000011");//人员编码 + erpDesignMap.put("bizuser_number", ownerCode);//人员编码 + erpDesignMap.put("bizorg_number", orgCode);//采购组织 erpDesignMap.put("project_number", designDocData.getString("project_id__c"));//todo 项目号(商机) erpDesignMap.put("contractno", designDocData.getString("sales_contract_number__c__r"));//合同号 erpDesignMap.put("crmid", designDocId);//crm唯一id diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/FrameContractController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/FrameContractController.java index 1715df7..d73ca43 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/FrameContractController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/FrameContractController.java @@ -41,7 +41,7 @@ public class FrameContractController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject frameContract = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("EQ", "life_status", Arrays.asList("normal")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), //new Filter("EQ", "name", Arrays.asList("KJ2505200005")), @@ -73,7 +73,8 @@ public class FrameContractController { //合同名称 String frameContractName = frameContractData.getString("name"); //创建时间 - String createTime = frameContractData.getString("create_time"); + //String createTime = frameContractData.getString("create_time"); + String createTime = frameContractData.getString("last_modified_time"); //开始查询是否已经集成过该合同 JSONObject isLogRes = new JSONObject(); @@ -122,11 +123,11 @@ public class FrameContractController { frameContractReqMap.put("project_number", projectCode);//todo 项目号(商机编号) frameContractReqMap.put("billtype_number", "conm_salcontract_BT_QD");//erp单据类型 frameContractReqMap.put("zhybilltype", frameContractData.getString("contract_type__c") != null ? frameContractData.getString("contract_type__c") : "");//合同类型 - frameContractReqMap.put("billname", frameContractData.getString("contract_name__c") != null ? frameContractData.getString("contract_name__c") : "");//合同名称 + frameContractReqMap.put("billname", frameContractData.getString("project_name__c") != null ? frameContractData.getString("project_name__c") : "");//合同名称 frameContractReqMap.put("type_number", "XSHT-QD03");//合同类型 - frameContractReqMap.put("contparties_number", "BU-0002");//合同主体 - frameContractReqMap.put("createorg_number", "zyierp");//销售组织编码 - frameContractReqMap.put("org_number", "zyierp");//销售组织编码 + frameContractReqMap.put("contparties_number", frameContractData.getString("our_company_name__c") != null ? frameContractData.getString("our_company_name__c") : "");//合同主体 + frameContractReqMap.put("createorg_number", frameContractData.getString("our_company_name__c") != null ? frameContractData.getString("our_company_name__c") : "");//销售组织编码 + frameContractReqMap.put("org_number", frameContractData.getString("our_company_name__c") != null ? frameContractData.getString("our_company_name__c") : "");//销售组织编码 frameContractReqMap.put("currency_number", "CNY");//本位币.货币代码 frameContractReqMap.put("settlecurrency_number", "CNY");//结算币别.货币代码 @@ -170,7 +171,7 @@ public class FrameContractController { List ownerIdList = frameContractData.getJSONArray("owner"); JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -186,7 +187,8 @@ public class FrameContractController { ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - frameContractReqMap.put("operator", "ZHY12025");//todo 负责人 + //frameContractReqMap.put("operator", "ZHY12025");//todo 负责人 + frameContractReqMap.put("operator", ownerCode); //合同单位 String customerId = frameContractData.getString("contract_unit_name__c"); @@ -300,6 +302,11 @@ public class FrameContractController { } //开始回写 + //解锁 + if ("1".equals(frameContractData.getString("lock_status"))) { + log.info("解锁"); + crmRequestUtil.unlockCRM(frameContractId, "framework_contract__c"); + } JSONObject backReq = crmRequestUtil.updateCRM(backReqMap); JSONObject backRes = new JSONObject(); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/GoodsPlanController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/GoodsPlanController.java index f8e2008..8bf6f07 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/GoodsPlanController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/GoodsPlanController.java @@ -52,7 +52,7 @@ public class GoodsPlanController { //要货计划请求 JSONObject getGoodsPlan = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("GT", "create_time", Arrays.asList("1748923200000")), //new Filter("EQ", "name", Arrays.asList("YHJH20250508-0002")), @@ -88,7 +88,8 @@ public class GoodsPlanController { String goodsPlanName = goodsPlanData.getString("name"); //获取当前单据的创建时间 - String createTime = goodsPlanData.getString("create_time"); + //String createTime = goodsPlanData.getString("create_time"); + String createTime = goodsPlanData.getString("last_modified_time"); //开始查询该单据是否已经集成过 JSONObject logRes = new JSONObject(); @@ -144,7 +145,8 @@ public class GoodsPlanController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - erpGoodsPlanReq.put("dept", "zyierp");//todo 归属部门 + //erpGoodsPlanReq.put("dept", "zyierp");//todo 归属部门 + erpGoodsPlanReq.put("dept", deptCode);//todo 归属部门 //获取负责人编码 String ownerCode = ""; @@ -168,7 +170,8 @@ public class GoodsPlanController { ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpGoodsPlanReq.put("operator", "ID-000011");//todo 负责人 + //erpGoodsPlanReq.put("operator", "ID-000011");//todo 负责人 + erpGoodsPlanReq.put("operator", ownerCode);//todo 负责人 //根据要货计划查询要货计划明细 JSONObject getGoodsPlanDetail = crmRequestUtil.getCRMList(Arrays.asList( @@ -204,7 +207,7 @@ public class GoodsPlanController { Map erpGoodsPlanDetailReq = new HashMap<>(); erpGoodsPlanDetailReq.put("f9w5_crmentryid", goodsPlanDetailData.getString("_id"));//crm明细id erpGoodsPlanDetailReq.put("material_number", goodsPlanDetailData.getString("material_id__c__r"));//物料编号 - erpGoodsPlanDetailReq.put("entryorg_number", "zyierp");//组织编码 + erpGoodsPlanDetailReq.put("entryorg_number", "zyierp");//todo 组织编码 erpGoodsPlanDetailReq.put("qty", goodsPlanDetailData.getBigDecimal("quantity__c") != null ? goodsPlanDetailData.getBigDecimal("quantity__c") : 0);//数量 //erpGoodsPlanDetailReq.put("lot_number", goodsPlanDetailData.getString("batch_number__c") != null ? goodsPlanDetailData.getString("batch_number__c") : "");//批号 erpGoodsPlanDetailReq.put("entrycomment", goodsPlanDetailData.getString("remark__c") != null ? goodsPlanDetailData.getString("remark__c") : "");//备注 @@ -465,7 +468,7 @@ public class GoodsPlanController { List ownerIdList = goodsPlanData.getJSONArray("owner"); JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -481,7 +484,7 @@ public class GoodsPlanController { ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpGoodsPlanReq.put("operator", "ID-000011");//todo 负责人 + erpGoodsPlanReq.put("operator", ownerCode);//todo 负责人 //根据要货计划查询要货计划明细 JSONObject getGoodsPlanDetail = crmRequestUtil.getCRMList(Arrays.asList( diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/InvoiceController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/InvoiceController.java index 09087fe..bad630d 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/InvoiceController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/InvoiceController.java @@ -43,7 +43,7 @@ public class InvoiceController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject getInvoice = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("EQ", "life_status", Arrays.asList("normal")), //new Filter("EQ", "name", Arrays.asList("20250527-000010")) @@ -78,7 +78,8 @@ public class InvoiceController { //发票名称 String invoiceName = invoiceData.getString("name"); //开票创建时间 - String createTime = invoiceData.getString("create_time"); + //String createTime = invoiceData.getString("create_time"); + String createTime = invoiceData.getString("last_modified_time"); //开始判断数据库中是否存在数据 JSONObject isLogRes = new JSONObject(); @@ -101,9 +102,64 @@ public class InvoiceController { String invoiceType = invoiceData.getString("record_type") != null ? invoiceData.getString("record_type") : ""; invoiceMap.put("billsourcetype", "blue"); - invoiceMap.put("f9w5_crmbillno", invoiceName);//单据编号 + invoiceMap.put("crmbillno", invoiceName);//单据编号 + invoiceMap.put("crmid", invoiceData.getString("sales1_contract__c"));//销售合同CRMID + //是否国网 + String isGWStr = invoiceData.getString("is_state_grid__c") != null ? invoiceData.getString("is_state_grid__c") : ""; + Boolean isGW = null; + switch (isGWStr) { + case "ubaL12a0M": + isGW = true; + break; + case "tiVjNIMLU": + isGW = false; + break; + default: + isGW = null; + break; + } + + invoiceMap.put("isgw", isGW);//是否国网 + + //是否设计建筑服务 + String isJZStr = invoiceData.getString("is_involved_construction_s__c") != null ? invoiceData.getString("is_involved_construction_s__c") : ""; + Boolean isJZ = null; + switch (isJZStr) { + case "option_is_yes__c": + isJZ = true; + break; + case "option_is_no__c": + isJZ = false; + break; + default: + isJZ = null; + break; + } + + invoiceMap.put("isjzfw", isJZ);//是否设计建筑服务 + + //是否跨地市 + String isCityStr = invoiceData.getString("is_cross_city__c") != null ? invoiceData.getString("is_cross_city__c") : ""; + Boolean isCity = null; + switch (isCityStr) { + case "option_is_yes__c": + isCity = true; + break; + case "option_is_no__c": + isCity = false; + break; + default: + isCity = null; + break; + } + + invoiceMap.put("iskds", isCity);//是否跨地市 + + invoiceMap.put("jzaddr", invoiceData.getString("field_b11hY__c") != null ? invoiceData.getString("field_b11hY__c") : "");//建筑服务发生地 + invoiceMap.put("jzpjname", invoiceData.getString("field_6cxEV__c") != null ? invoiceData.getString("field_6cxEV__c") : "");//建筑服务项目名称 + invoiceMap.put("crminvoiceid", invoiceId);//crm开票申请ID //开票类型 @@ -184,8 +240,8 @@ public class InvoiceController { invoiceMap.put("issoftworks", isHasSoftBool); - //todo 软著版本编码 - invoiceMap.put("softworks_number", "21321321"); + //软著版本编码 + invoiceMap.put("softworks_number", invoiceData.getString("positive_number__c") != null ? invoiceData.getString("positive_number__c") : ""); //开始查询明细 JSONObject getInvoiceDetail = crmRequestUtil.getCRMList(Arrays.asList( @@ -339,8 +395,14 @@ public class InvoiceController { public void syncRedInvoice() { CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); + String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; + JSONObject getRedInvoice = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "name", Arrays.asList("HCFP2505-0003")) + new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), + //new Filter("IS", "field_UB1hE__c", Arrays.asList("")), + //new Filter("EQ", "name", Arrays.asList("HCFP2505-0003")), + new Filter("GT", "create_time", Arrays.asList("1748923200000")), + new Filter("EQ", "life_status", Arrays.asList("normal")) ), "custom_object_example1__c"); JSONObject redInvoiceRes = new JSONObject(); @@ -388,7 +450,7 @@ public class InvoiceController { Map invoiceMap = new HashMap(); invoiceMap.put("billsourcetype", "red");//单据类型 - invoiceMap.put("f9w5_crmbillno", redInvoiceName);//单据编号 + invoiceMap.put("crmbillno", redInvoiceName);//单据编号 invoiceMap.put("crmid", redInvoiceData.getString("blue_invoice_application__c"));//红冲开票CRMID invoiceMap.put("crminvoiceid", redInvoiceId);//CRM红冲开票申请ID invoiceMap.put("invoicetype", redInvoiceData.getString("invoice_type__c") != null ? redInvoiceData.getString("invoice_type__c") : "");//开票类型 @@ -442,7 +504,7 @@ public class InvoiceController { } invoiceMap.put("issoftworks", isSoftWorksFlag);//是否含软 - invoiceMap.put("softworks_number", "ooooaaaa");//软著版本编码 + invoiceMap.put("softworks_number", redInvoiceData.getString("registration_number__c") != null ? redInvoiceData.getString("registration_number__c") : "");//软著版本编码 invoiceMap.put("blueinvoiceno", redInvoiceData.getString("original_invoice_number__c") != null ? redInvoiceData.getString("original_invoice_number__c") : "");//待冲蓝字发票号码 invoiceMap.put("redreason", redInvoiceData.getString("redemption_reason__c") != null ? redInvoiceData.getString("redemption_reason__c") : "");//冲红原因 diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/PreContractController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/PreContractController.java index 93a8384..73334d6 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/PreContractController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/PreContractController.java @@ -51,7 +51,7 @@ public class PreContractController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject preContractReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("GT", "create_time", Arrays.asList("1748923200000")), //new Filter("EQ", "name", Arrays.asList("YQ2505220005")), @@ -79,7 +79,8 @@ public class PreContractController { System.out.println("当前正在处理的数据为:" + preContractData); String preContractId = preContractData.getString("_id"); - String createTime = preContractData.getString("create_time"); + //String createTime = preContractData.getString("create_time"); + String createTime = preContractData.getString("last_modified_time"); //根据唯一id和创建时间查询是否已经执行当前数据 JSONObject preContractIsExist = new JSONObject(); @@ -112,9 +113,9 @@ public class PreContractController { erpContractReq.put("billtype_number", "conm_salcontract_BT_YQ");//单据类型 erpContractReq.put("billname", preContractData.getString("project_name__c") != null ? preContractData.getString("project_name__c") : "预签合同");//合同名称 erpContractReq.put("type_number", "XSHT-YQ01");//合同类型 - erpContractReq.put("contparties_number", "ZHY");//合同主体 - erpContractReq.put("createorg_number", "ZHY");//销售组织编码 - erpContractReq.put("org_number", "ZHY");//销售组织编码 + erpContractReq.put("contparties_number", preContractData.getString("our_company_name__c") != null ? preContractData.getString("our_company_name__c") : "");//合同主体 + erpContractReq.put("createorg_number", preContractData.getString("our_company_name__c") != null ? preContractData.getString("our_company_name__c") : "");//销售组织编码 + erpContractReq.put("org_number", preContractData.getString("our_company_name__c") != null ? preContractData.getString("our_company_name__c") : "");//销售组织编码 erpContractReq.put("currency_number", "CNY");//本位币.货币代码 erpContractReq.put("settlecurrency_number", "CNY");//结算币别.货币代码 erpContractReq.put("biztime", date);//签订日期,单据日期 @@ -147,8 +148,10 @@ public class PreContractController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - erpContractReq.put("dept", "ZHY");//归属部门 - erpContractReq.put("dept_number", "004");//归属部门 + //erpContractReq.put("dept", "ZHY");//归属部门 + erpContractReq.put("dept", deptCode);//归属部门 + //erpContractReq.put("dept_number", "004");//归属部门 + erpContractReq.put("dept_number", deptCode);//归属部门 //获取负责人编码 String ownerCode = ""; @@ -156,7 +159,7 @@ public class PreContractController { List ownerIdList = preContractData.getJSONArray("owner"); JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -172,7 +175,8 @@ public class PreContractController { ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpContractReq.put("operator", "ID-000016");//todo 负责人 + //erpContractReq.put("operator", "ID-000016");//todo 负责人 + erpContractReq.put("operator", ownerCode);//负责人 //合同单位 String customerId = preContractData.getString("contract_unit_name__c"); @@ -280,7 +284,7 @@ public class PreContractController { //开始审核 KingDeeUtils kingDeeUtils = new KingDeeUtils(); - kingDeeUtils.audit(contractRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"), "conm_salcontract_BT_YQ"); + kingDeeUtils.audit(contractRes.getJSONObject("data").getJSONArray("result").getJSONObject(0).getString("id"), "conm_salcontract"); } else { //同步失败 logMap.put("log_status", "1"); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/QualityBackController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/QualityBackController.java index b900788..b8c93ba 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/QualityBackController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/QualityBackController.java @@ -46,7 +46,7 @@ public class QualityBackController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject getQualityBack = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("EQ", "life_status", Arrays.asList("normal")), //new Filter("EQ", "name", Arrays.asList("ZLXXFK202505270002")), @@ -79,7 +79,8 @@ public class QualityBackController { //反馈单单号 String qualityName = qualityBackData.getString("name"); //反馈单创建时间 - String createTime = qualityBackData.getString("create_time"); + //String createTime = qualityBackData.getString("create_time"); + String createTime = qualityBackData.getString("last_modified_time"); //开始查询当前单据是否已经集成过 JSONObject isLogRes = new JSONObject(); @@ -108,7 +109,7 @@ public class QualityBackController { List ownerIdList = qualityBackData.getJSONArray("owner"); JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -123,7 +124,8 @@ public class QualityBackController { JSONObject ownerData = ownerRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - qualityReqMap.put("provider_number", "ZHY10542");//todo 反馈人(负责人编号) + //qualityReqMap.put("provider_number", "ZHY10542");//todo 反馈人(负责人编号) + qualityReqMap.put("provider_number", ownerCode);//todo 反馈人(负责人编号) //部门编码 String deptCode = ""; @@ -148,8 +150,10 @@ public class QualityBackController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - qualityReqMap.put("dept_number", "ZHY");//归属部门 - qualityReqMap.put("org_number", "ZHY");//todo 组织编码 + //qualityReqMap.put("dept_number", "ZHY");//归属部门 + qualityReqMap.put("dept_number", deptCode);//归属部门 + //qualityReqMap.put("org_number", "ZHY");//todo 组织编码 + qualityReqMap.put("org_number", qualityBackData.getString("erp_organization__c") != null ? qualityBackData.getString("erp_organization__c") : "");//todo 组织编码 qualityReqMap.put("contractno", qualityBackData.getString("contract_number__c__r") != null ? qualityBackData.getString("contract_number__c__r") : "");//销售合同号 qualityReqMap.put("productionbatch", qualityBackData.getString("production_batch__c") != null ? qualityBackData.getString("production_batch__c") : "");//生产批次 diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/TenderingController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/TenderingController.java index d42babb..8bc37d9 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/TenderingController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/TenderingController.java @@ -45,7 +45,7 @@ public class TenderingController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject getTendering = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("EQ", "life_status", Arrays.asList("normal")), //new Filter("EQ", "name", Arrays.asList("BSGM250509")), @@ -79,7 +79,8 @@ public class TenderingController { //投标单号 String tenderingName = tenderingData.getString("name"); //投标单创建时间 - String createTime = tenderingData.getString("create_time"); + //String createTime = tenderingData.getString("create_time"); + String createTime = tenderingData.getString("last_modified_time"); //开始判断是否集成过该单据了 JSONObject isLogRes = new JSONObject(); @@ -121,7 +122,7 @@ public class TenderingController { tenderingMapReq.put("f9w5_applytype", applyTypeStr);//申请类型 tenderingMapReq.put("f9w5_lot", tenderingData.getString("batch_name__c") != null ? tenderingData.getString("batch_name__c") : "");//批次名称 - tenderingMapReq.put("createorg_number", "ZHY");//组织 + tenderingMapReq.put("createorg_number", tenderingData.getString("erp_organization__c__v") != null ? tenderingData.getString("erp_organization__c__v") : "");//组织 //供应商ID String vendorId = tenderingData.getString("bidding_agency__c") != null ? tenderingData.getString("bidding_agency__c") : ""; diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/XSHTController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/XSHTController.java index 7d2a42e..d7a6766 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/XSHTController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/XSHTController.java @@ -50,7 +50,7 @@ public class XSHTController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject preContractReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("IS", "erp_id__c", Arrays.asList("")), + //new Filter("IS", "erp_id__c", Arrays.asList("")), new Filter("IN", "sync_status__c", Arrays.asList(syncStatus)), new Filter("GT", "create_time", Arrays.asList("1748923200000")), //new Filter("EQ", "name", Arrays.asList("ZHY2505280021")), @@ -82,7 +82,8 @@ public class XSHTController { //合同名称 String contractName = contractData.getString("name"); //创建时间 - String createTime = contractData.getString("create_time"); + //String createTime = contractData.getString("create_time"); + String createTime = contractData.getString("last_modified_time"); //查看数据库表中是否已执行过当前数据 JSONObject isLogRes = new JSONObject(); @@ -137,9 +138,9 @@ public class XSHTController { erpContractReq.put("billtype_number", "conm_salcontract_BT_QD");//单据类型 erpContractReq.put("billname", contractData.getString("project_name__c") != null ? contractData.getString("project_name__c") : "销售合同");//合同名称 erpContractReq.put("type_number", "XSHT-QD01");//合同类型 - erpContractReq.put("contparties_number", "ZHY");//合同主体 - erpContractReq.put("createorg_number", "ZHY");//销售组织编码 - erpContractReq.put("org_number", "ZHY");//销售组织编码 + erpContractReq.put("contparties_number", contractData.getString("our_company_name__c") != null ? contractData.getString("our_company_name__c") : "");//合同主体 + erpContractReq.put("createorg_number", contractData.getString("our_company_name__c") != null ? contractData.getString("our_company_name__c") : "");//销售组织编码 + erpContractReq.put("org_number", contractData.getString("our_company_name__c") != null ? contractData.getString("our_company_name__c") : "");//销售组织编码 erpContractReq.put("currency_number", "CNY");//本位币.货币代码 erpContractReq.put("settlecurrency_number", "CNY");//结算币别.货币代码 erpContractReq.put("biztime", date);//签订日期,单据日期 @@ -174,7 +175,8 @@ public class XSHTController { deptCode = deptData.getString("field_Vj6sf__c") != null ? deptData.getString("field_Vj6sf__c") : ""; } - erpContractReq.put("dept", "zyierp");//归属部门 + //erpContractReq.put("dept", "zyierp");//归属部门 + erpContractReq.put("dept", deptCode);//归属部门 //获取负责人编码 String ownerCode = ""; @@ -182,7 +184,7 @@ public class XSHTController { List ownerIdList = contractData.getJSONArray("owner"); JSONObject ownerReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "_id", ownerIdList) + new Filter("EQ", "user_id", ownerIdList) ), "PersonnelObj"); JSONObject ownerRes = new JSONObject(); @@ -198,7 +200,8 @@ public class XSHTController { ownerCode = ownerData.getString("field_T1xid__c") != null ? ownerData.getString("field_T1xid__c") : ""; } - erpContractReq.put("operator", "ZHY10542");//todo 负责人 + //erpContractReq.put("operator", "ZHY10542");//todo 负责人 + erpContractReq.put("operator", ownerCode);//todo 负责人 //合同单位 String customerId = contractData.getString("account_id"); @@ -283,6 +286,22 @@ public class XSHTController { //销售方式 erpContractReq.put("salesmethod", contractData.getString("sales_method__c")); + //合同种类 + String contractType = contractData.getString("contract_zl__c") != null ? contractData.getString("contract_zl__c") : ""; + + if (contractType.equals("")) { + log.info("合同种类不存在,将不再向下执行"); + continue; + } + + String contractTypeStr = ""; + + if (contractType.equals("option_sales_contract_details__c")) { + contractTypeStr = "020"; + } else if (contractType.equals("option_sales_contract_total_amoun__c")) { + contractTypeStr = "020-1"; + } + //根据合同号查询合同明细 JSONObject contractDetailReq = crmRequestUtil.getCRMList(Arrays.asList( new Filter("EQ", "sale_contract_id", Arrays.asList(contractId)) @@ -311,7 +330,7 @@ public class XSHTController { //开始封装销售合同明细 Map contractDetailMap = new HashMap(); - contractDetailMap.put("linetype_number", "020");//行类型 + contractDetailMap.put("linetype_number", contractTypeStr);//行类型 contractDetailMap.put("goodsname", contractDetailData.getString("product_name__c"));//产品名称 //contractDetailMap.put("material_number", contractDetailData.getString("product_id__r"));//物料编号 contractDetailMap.put("material_number", "TEST0001");//todo 物料编号 @@ -405,7 +424,7 @@ public class XSHTController { //同步失败 logMap.put("log_status", "1"); logMap.put("res_body", "同步失败:" + contractRes.getString("message")); - backReqMap.put("sync_status__c", "k2JhS69IK"); + backReqMap.put("sync_status__c", "option_sync_failure__c"); backReqMap.put("response_info__c", contractRes.getString("message")); } @@ -456,7 +475,7 @@ public class XSHTController { log.info("附件存在,继续向下执行"); - MultiValueMap body = crmRequestUtil.attachmentuploadFile(contractFileList, Long.parseLong(contractERPID)); + MultiValueMap body = crmRequestUtil.contractFile(contractFileList, Long.parseLong(contractERPID)); //开始封装请求实体 HttpHeaders httpHeaders = new HttpHeaders(); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/task/ZHYTask.java b/magic-boot/src/main/java/org/ssssssss/magicboot/task/ZHYTask.java new file mode 100644 index 0000000..6f06ce7 --- /dev/null +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/task/ZHYTask.java @@ -0,0 +1,47 @@ +package org.ssssssss.magicboot.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.ssssssss.magicboot.controller.*; + +@Configuration +@EnableScheduling +public class ZHYTask { + @Autowired + PreContractController preContractController; + @Autowired + FrameContractController frameContractController; + @Autowired + XSHTController xshtController; + @Autowired + DesignController designController; + @Autowired + GoodsPlanController goodsPlanController; + @Autowired + InvoiceController invoiceController; + @Autowired + QualityBackController qualityBackController; + @Autowired + TenderingController tenderingController; + @Autowired + BankInfoController bankInfoController; + + @Scheduled(cron = "0 0/1 * * * ?") + private void configureTasks() throws Exception { + System.out.println("开始同步数据"); + preContractController.syncContract(); + frameContractController.syncFrameContract(); + xshtController.syncXSHT(); + xshtController.isComplete(); + designController.syncDesign(); + goodsPlanController.syncGoodsPlan(); + invoiceController.syncInvoice(); + invoiceController.syncRedInvoice(); + qualityBackController.qualityFeedBack(); + tenderingController.syncTendering(); + bankInfoController.syncBankInfo(); + System.out.println("执行完毕"); + } +} diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/utils/CrmRequestUtil.java b/magic-boot/src/main/java/org/ssssssss/magicboot/utils/CrmRequestUtil.java index bffddce..e5b4a7f 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/utils/CrmRequestUtil.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/utils/CrmRequestUtil.java @@ -461,5 +461,76 @@ public class CrmRequestUtil { return body; } + public MultiValueMap contractFile(List fileList, Long erpId) { + MultiValueMap body = new LinkedMultiValueMap<>(); + + JSONObject args = new JSONObject(); + args.put("entityNumber","conm_salcontract"); + args.put("billPkId",erpId); + args.put("controlKey","attachmentpanel"); + + body.add("attachmentUploadFileArgs", args); + + if (fileList == null || fileList.isEmpty()) { + log.info("文件列表为空"); + return body; // 返回空map而不是null + } + + for (Object fileObj : fileList) { + JSONObject fileData = JSON.parseObject(JSON.toJSONString(fileObj)); + + Map fileReq = new HashMap<>(); + fileReq.put("corpAccessToken", getCRMToken()); + fileReq.put("corpId", CertificateConstant.CORP_ID); + fileReq.put("mediaTypeDesc", "DOCUMENT"); + fileReq.put("mediaId", fileData.getString("path")); + fileReq.put("igonreMediaIdConvert", false); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> fileReqEntity = new HttpEntity<>(fileReq, headers); + + try { + ResponseEntity fileResp = restTemplate.exchange( + "https://open.fxiaoke.com/media/download", + HttpMethod.POST, + fileReqEntity, + byte[].class); + + if (fileResp.getStatusCode() == HttpStatus.OK && fileResp.getBody() != null) { + byte[] fileBytes = fileResp.getBody(); + String fileName = fileData.getString("filename"); + String contentType = fileData.getString("ext"); + + ByteArrayResource byteArrayResource = new ByteArrayResource(fileBytes) { + @Override + public String getFilename() { + return fileName != null ? fileName : UUID.randomUUID() + ".dat"; + } + }; + + HttpHeaders fileHeaders = new HttpHeaders(); + fileHeaders.setContentDispositionFormData("file", byteArrayResource.getFilename()); + + try { + fileHeaders.setContentType(MediaType.parseMediaType( + contentType != null ? contentType : MediaType.APPLICATION_OCTET_STREAM_VALUE)); + } catch (Exception e) { + fileHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + } + + HttpEntity fileEntity = new HttpEntity<>(byteArrayResource, fileHeaders); + body.add("file", fileEntity); + } else { + log.error("文件下载失败,mediaId: {}", fileData.getString("path")); + } + } catch (Exception e) { + log.error("下载文件出错", e); + } + } + + return body; + } + }