package com.malk.eastar.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.malk.eastar.service.AitableService; import com.malk.eastar.service.DDCoreClient; import com.malk.eastar.service.YidaService; import com.malk.server.common.McException; import com.malk.server.common.McR; import com.malk.utils.UtilMap; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @RestController @RequestMapping("/aitable") public class AitableController { @Autowired private AitableService aitableService; @Autowired private YidaService yidaService; @Autowired private DDCoreClient ddCoreClient; /** * 新建客户 * @param data * @return */ @PostMapping("/newCustomer") McR createNewCustomer(@RequestBody JSONObject data) { log.info("新建客户, {}", data); McException.assertParamException_Null(data, "yidaInstanceId"); String yidaInstanceId = UtilMap.getString(data, "yidaInstanceId"); //宜搭实例ID String yidaCustomerName = UtilMap.getString(data, "yidaCustomerName"); //客户公司名(英文名) String yidaBusinessUserId = UtilMap.getString(data, "yidaBusinessUserId"); //业务userId String yidaCustomerLevel = UtilMap.getString(data, "yidaCustomerLevel"); //客户潜在等级 String yidaNewOrOld = UtilMap.getString(data, "yidaNewOrOld"); //新老客户 String yidaCustomerStatus = UtilMap.getString(data, "yidaCustomerStatus"); //客户情况 String yidaCountryOrRegion = UtilMap.getString(data, "yidaCountryOrRegion"); //客户国家/地区 List yidaProductTypes = UtilMap.getList(data, "yidaProductTypes"); //主要品类 Map fields = new HashMap<>(); try { fields.put("20rO7zS",yidaCustomerName); //客户公司名【基础】 fields.put("qgOhsh1",yidaCustomerLevel); //客户分级【客户】 fields.put("3Y796Wb",yidaNewOrOld); //新老客户?【客户】 fields.put("jIS3Gbd",yidaCustomerStatus); //客户情况 fields.put("JjVfpWO",yidaCountryOrRegion); //客户国家/地区【客户】 fields.put("6rCZkSN",yidaProductTypes); //客户标签【客户】 if(yidaBusinessUserId != null && !yidaBusinessUserId.isEmpty()){ JSONArray user = new JSONArray(); JSONObject unionId = new JSONObject(); unionId.put("unionId",ddCoreClient.getUnionIdByUserId(yidaBusinessUserId)); user.add(unionId); fields.put("ynNC3Kq",JSONObject.toJSONString(user)); //业务【人事】 } String aitableId = aitableService.querySys1CustomerIdByName(yidaCustomerName); if(aitableId == null || aitableId.isEmpty()){ aitableId = aitableService.addSys1CustomerData(fields); }else{ log.info("客户["+yidaCustomerName+"]在项目总表已存在,不再新增"); } yidaService.updateCustomerRelatedAitableId(yidaInstanceId, aitableId); return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } /** * 客户已建联 * @param data * @return */ @PostMapping("/establishedContact") McR establishedContactCustomer(@RequestBody JSONObject data) { log.info("客户已建联, {}", data); McException.assertParamException_Null(data, "aitableId"); String aitableId = UtilMap.getString(data, "aitableId"); Map fields = new HashMap<>(); try { fields.put("jIS3Gbd","已建联"); //客户情况 aitableService.updateSys1CustomerData(aitableId,fields); return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } /** * 业务员变更 * @param data * @return */ @PostMapping("/chanegBusinessUser") McR changeCustomerBusinessUser(@RequestBody JSONObject data) { log.info("业务员变更, {}", data); McException.assertParamException_Null(data, "aitableId"); String aitableId = UtilMap.getString(data, "aitableId"); String yidaBusinessUserId = UtilMap.getString(data, "yidaBusinessUserId"); //业务userId Map fields = new HashMap<>(); try { JSONArray user = new JSONArray(); if(yidaBusinessUserId == null || yidaBusinessUserId.isEmpty()){ log.info("业务userId为空,将业务置空"); }else{ JSONObject unionId = new JSONObject(); unionId.put("unionId",ddCoreClient.getUnionIdByUserId(yidaBusinessUserId)); user.add(unionId); } fields.put("ynNC3Kq",JSONObject.toJSONString(user)); //业务【人事】 aitableService.updateSys1CustomerData(aitableId,fields); return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } /** * 客户变更 * @param data * @return */ @PostMapping("/changeCustomer") McR changeCustomerBasicInfo(@RequestBody JSONObject data) { log.info("客户变更, {}", data); McException.assertParamException_Null(data, "aitableId"); String aitableId = UtilMap.getString(data, "aitableId"); String yidaCustomerLevel = UtilMap.getString(data, "yidaCustomerLevel"); //客户潜在等级 String yidaNewOrOld = UtilMap.getString(data, "yidaNewOrOld"); //新老客户 Map fields = new HashMap<>(); try { if(StringUtils.isNotEmpty(yidaCustomerLevel)){ fields.put("qgOhsh1",yidaCustomerLevel); //客户分级【客户】 } if(StringUtils.isNotEmpty(yidaNewOrOld)){ fields.put("3Y796Wb",yidaNewOrOld); //新老客户?【客户】 } aitableService.updateSys1CustomerData(aitableId,fields); return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } /** * 新建商机 * @param data * @return */ @PostMapping("/newOpportunity") McR createNewOpportunity(@RequestBody JSONObject data) { log.info("新建商机, {}", data); McException.assertParamException_Null(data, "yidaInstanceId"); String yidaInstanceId = UtilMap.getString(data, "yidaInstanceId"); //宜搭实例ID String yidaProjectCode = UtilMap.getString(data, "yidaProjectCode"); //项目编号 String yidaProjectName = UtilMap.getString(data, "yidaProjectName"); //项目名称 String yidaOrderCompletionRate = UtilMap.getString(data, "yidaOrderCompletionRate"); //成单情况 String yidaEstimatedOrderDate = UtilMap.getString(data, "yidaEstimatedOrderDate"); //预计成单日期 String yidaOrderAmount = UtilMap.getString(data, "yidaOrderAmount"); //预计项目金额 String aiTableCustomerID = UtilMap.getString(data, "aiTableCustomerID"); //客户AI表格映射ID String yidaCustomerName = UtilMap.getString(data, "yidaCustomerName"); //客户公司名 String yidaBusinessUserId = UtilMap.getString(data, "yidaBusinessUserId"); //业务 Map fields = new HashMap<>(); try { if(yidaProjectCode==null || yidaProjectCode.isEmpty()){ yidaProjectCode = yidaService.queryProjectCode(yidaInstanceId); } fields.put("zP1nHJs",yidaProjectCode); //项目编号 - S1【基础】 fields.put("P3XtfD8",yidaProjectName); //项目名称 - S1【基础】 fields.put("KDAelfq",yidaOrderCompletionRate); //成单情况【商机进度】 fields.put("m34IbuX",Long.parseLong(yidaEstimatedOrderDate)); //预计成单日期 - S1~2【商机进度】 fields.put("MYBeHPG",yidaOrderAmount); //订单金额 - S2~3【销售数据】 JSONObject bidirectionalLink = new JSONObject(); String[] linkedRecordIds = new String[]{aiTableCustomerID}; bidirectionalLink.put("linkedRecordIds",linkedRecordIds); fields.put("F7zdGI6",bidirectionalLink); //客户公司名 - S1【基础】 JSONArray user = new JSONArray(); JSONObject unionId = new JSONObject(); unionId.put("unionId",ddCoreClient.getUnionIdByUserId(yidaBusinessUserId)); user.add(unionId); fields.put("Iz0yaro",JSONObject.toJSONString(user)); //业务 - S1【人事】 String aitableId = aitableService.addSys1SaleData(fields); yidaService.updateSaleProjectRelatedAitableId(yidaInstanceId, aitableId); return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } /** * 销售项目变更 * @param data * @return */ @PostMapping("/changeOpportunity") McR changeSaleProject(@RequestBody JSONObject data) { log.info("销售项目变更, {}", data); McException.assertParamException_Null(data, "aitableId"); String aitableId = UtilMap.getString(data, "aitableId"); String yidaSaleProjectStatus = UtilMap.getString(data, "yidaSaleProjectStatus"); //销售项目状态 String yidaOrderAmount = UtilMap.getString(data, "yidaOrderAmount"); //预计项目金额 String yidaActualOrderDate = UtilMap.getString(data, "yidaActualOrderDate"); //实际成单日期 Map fields = new HashMap<>(); try { String aiTableOrderStatus = ""; //订单状态 - S1~3【商机进度】 String aiTableOpportunityStage = ""; //商机阶段 - S1~3【商机进度】 if(yidaSaleProjectStatus != null && !yidaSaleProjectStatus.isEmpty()){ if("报价中".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "2、报价中"; aiTableOpportunityStage = "RFQ"; }else if("提前打样 / 修图".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "3、提前打样 / 修图"; }else if("订单确认".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "4、订单确认"; aiTableOpportunityStage = "已成单"; }else if("已立项".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "5、已立项"; }else if("暂停".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "6、暂停"; }else if("已完成".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "7、已完成"; }else if("已终止".equals(yidaSaleProjectStatus)){ aiTableOrderStatus = "8、已终止"; aiTableOpportunityStage = "已丢单"; } fields.put("31G4UB7",aiTableOrderStatus); //订单状态 - S1~3【商机进度】 if(StringUtils.isNotEmpty(aiTableOpportunityStage)){ fields.put("LQF6OWD",aiTableOpportunityStage); //商机阶段 - S1~3【商机进度】 } if(StringUtils.isNotEmpty(yidaActualOrderDate)){ fields.put("VBsHxPE",Long.parseLong(yidaActualOrderDate)); //实际成单日期 - S3【销售数据】 } if(StringUtils.isNotEmpty(yidaOrderAmount)){ fields.put("MYBeHPG",Double.parseDouble(yidaOrderAmount)); //订单金额 - S2~3【销售数据】 } aitableService.updateSys1SaleData(aitableId,fields); }else if(yidaOrderAmount != null && !yidaOrderAmount.isEmpty()){ //成单预测 fields.put("MYBeHPG",Double.parseDouble(yidaOrderAmount)); //订单金额 - S2~3【销售数据】 aitableService.updateSys1SaleData(aitableId,fields); } return McR.success(); } catch (Exception e) { return McR.error("400",e.getMessage()); } } }