diff --git a/src/main/java/com/yem/or/task/CustomerTask.java b/src/main/java/com/yem/or/task/CustomerTask.java index a6aebd94..485f1134 100644 --- a/src/main/java/com/yem/or/task/CustomerTask.java +++ b/src/main/java/com/yem/or/task/CustomerTask.java @@ -5,6 +5,7 @@ import com.yem.wm.task.YunZhiJaGetOpenidTask; import com.yem.wm.utils.YEM; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.exception.KDBizException; import kd.bos.exception.KDException; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; @@ -14,65 +15,75 @@ import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import java.io.IOException; import java.util.Map; +import static com.yem.or.utils.OrderApiUtils.getToken; + /** * ljw * 同步数据至下单平台 */ public class CustomerTask extends AbstractTask { + + private static final Log log = LogFactory.getLog(CustomerTask.class); + @Override public void execute(RequestContext requestContext, Map map) throws KDException { - Log log = LogFactory.getLog(YunZhiJaGetOpenidTask.class); + + String accessToken = ""; + + try { + Map token = getToken(); + accessToken = token.get("token"); + } catch (IOException e) { + throw new RuntimeException(e); + } + + if (YEM.isEmpty(accessToken)) { + throw new KDBizException("获取AccessToken失败"); + } + QFilter qFilter = new QFilter("status", QCP.equals, "C"); DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customer", "id,number,name,yem_checkboxfield,yem_torderid,group,yem_groupcustomers" , new QFilter[]{qFilter}); for (DynamicObject dynamicObject : dynamicObjects) { - DynamicObject group = dynamicObject.getDynamicObject("group"); - if (group != null) { - long groupid = group.getLong("id"); - DynamicObject[] bd_customergroup = BusinessDataServiceHelper.load("bd_customergroup", "id,number,parent" - , new QFilter[]{new QFilter("parent.number", QCP.equals, "11602"), new QFilter("id", QCP.equals, groupid)}); - if (bd_customergroup.length > 0) { - for (int i = 0; i < bd_customergroup.length; i++) { - String number = dynamicObject.getString("number"); - String name = dynamicObject.getString("name"); - DynamicObject groupcustomers = dynamicObject.getDynamicObject("yem_groupcustomers"); - if (YEM.isEmpty(groupcustomers)) { - continue; - } - if (!groupcustomers.containsProperty("yem_torderid")) { - groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())}); - String group_torderid = groupcustomers.getString("yem_torderid"); - if (YEM.isEmpty(group_torderid)) { - continue; - } - } - Map demands; - if (dynamicObject.getBoolean("yem_checkboxfield")) { - String torderid = dynamicObject.getString("yem_torderid"); - if(YEM.isEmpty(torderid)) { - continue; - } - Long id = Long.valueOf(torderid); - demands = OrderApiUtils.demands(name, number, groupcustomers, false, id); - } else { - demands = OrderApiUtils.demands(name, number, groupcustomers, true, null); - } - String msg = demands.get("msg"); - if (msg == null) { - String id = demands.get("id"); - if (YEM.isNotEmpty(id)) { - dynamicObject.set("yem_torderid", id); - dynamicObject.set("yem_checkboxfield", true); - SaveServiceHelper.update(dynamicObject); - SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); - } - } - } + String number = dynamicObject.getString("number"); + String name = dynamicObject.getString("name"); + DynamicObject groupcustomers = dynamicObject.getDynamicObject("yem_groupcustomers"); + if (YEM.isEmpty(groupcustomers)) { + log.error(" [SKIP] 业务主体为空 "); + continue; + } + if (!groupcustomers.containsProperty("yem_torderid")) { + groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())}); + String group_torderid = groupcustomers.getString("yem_torderid"); + if (YEM.isEmpty(group_torderid)) { + log.error(" [SKIP] 业务主体未同步 "); + continue; } } + Map demands; + if (dynamicObject.getBoolean("yem_checkboxfield")) { + String torderid = dynamicObject.getString("yem_torderid"); + if (YEM.isEmpty(torderid)) { + log.error(" [SKIP] 已同步但ID为空 "); + continue; + } + Long id = Long.valueOf(torderid); + demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, id); + } else { + demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null); + } + log.info(demands.toString()); + if (demands.containsKey("id")) { + String id = demands.get("id"); + dynamicObject.set("yem_torderid", id); + dynamicObject.set("yem_checkboxfield", true); + SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); + } else if (demands.containsKey("msg")) { + log.error(demands.get("msg")); + } } - } } diff --git a/src/main/java/com/yem/or/utils/OrderApiUtils.java b/src/main/java/com/yem/or/utils/OrderApiUtils.java index 8d4b9b20..61b60e87 100644 --- a/src/main/java/com/yem/or/utils/OrderApiUtils.java +++ b/src/main/java/com/yem/or/utils/OrderApiUtils.java @@ -138,7 +138,7 @@ public class OrderApiUtils { resStatus.put("msg", "未知客户"); return resStatus; } - customer = BusinessDataServiceHelper.loadSingle(customer.getPkValue(),customer.getDynamicObjectType().getName()); + customer = BusinessDataServiceHelper.loadSingle(customer.getPkValue(), customer.getDynamicObjectType().getName()); dynamicObject.set("yem_customer", customer);//客户\ dynamicObject.set("yem_customername", customer.getString("name")); @@ -421,7 +421,7 @@ public class OrderApiUtils { /** * 新增用户 */ - public static Map demands(String username, String userNumber, DynamicObject groupcustomers, boolean isCreate, Long existId) { + public static Map demands(String accessToken, String username, String userNumber, DynamicObject groupcustomers, boolean isCreate, Long existId) { String requestUrl; if (isCreate) { requestUrl = ENDPOINTS + "/admin-api/system/user/create"; @@ -429,65 +429,57 @@ public class OrderApiUtils { requestUrl = ENDPOINTS + "/admin-api/system/user/update"; } - Map headers = null; - try { - headers = getToken(); - } catch (IOException e) { - throw new RuntimeException(e); - } + Map resStatus = new HashMap<>(); - // 租户ID - if ("success".equals(headers.get("status"))) { - String accessToken = headers.get("token"); - headers.put("Authorization", "Bearer " + (accessToken)); - Map requestBody = new HashMap<>(); - if (!groupcustomers.containsProperty("yem_torderid") || !groupcustomers.containsProperty("number") || !groupcustomers.containsProperty("name")) { - groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())}); - } - String groupUserId = groupcustomers.getString("yem_torderid"); - String groupName = groupcustomers.getString("number"); - String name = groupcustomers.getString("name"); - requestBody.put("nickname", username); - requestBody.put("password", "ensign@123"); - requestBody.put("username", userNumber); - requestBody.put("deptId", "100"); - requestBody.put("groupCustomerId", groupUserId); - requestBody.put("groupCustomerNumber", groupName); - requestBody.put("groupCustomerName", name); - if (!isCreate) { - requestBody.put("id", existId); - } - String res = ""; + Map headers = new HashMap<>(); + headers.put("Authorization", "Bearer " + (accessToken)); + Map requestBody = new HashMap<>(); + if (!groupcustomers.containsProperty("yem_torderid") || !groupcustomers.containsProperty("number") || !groupcustomers.containsProperty("name")) { + groupcustomers = BusinessDataServiceHelper.loadSingleFromCache(groupcustomers.getDataEntityType().getName(), new QFilter[]{new QFilter("id", "=", groupcustomers.getPkValue())}); + } + String groupUserId = groupcustomers.getString("yem_torderid"); + String groupName = groupcustomers.getString("number"); + String name = groupcustomers.getString("name"); + requestBody.put("nickname", username); + requestBody.put("password", "ensign@123"); + requestBody.put("username", userNumber); + requestBody.put("deptId", "100"); + requestBody.put("groupCustomerId", groupUserId); + requestBody.put("groupCustomerNumber", groupName); + requestBody.put("groupCustomerName", name); + if (!isCreate) { + requestBody.put("id", existId); + } + String res = ""; - try { - log.info("start request {}", requestUrl); - res = HttpClientUtils.postAppJson(requestUrl, headers, requestBody, 3000, 3000); - } catch (IOException e) { - log.error("request token error", e); - resStatus.put("status", "error"); - resStatus.put("msg", String.format("获取token请求异常:%s", e.getMessage())); -// throw new RuntimeException(e); - } - - JSONObject jsonObject = JSONObject.parseObject(res); - int code = jsonObject.getIntValue("code"); - if (code == 0) { - Integer data = jsonObject.getInteger("data"); + try { + log.info("start request {}", requestUrl); + res = HttpClientUtils.postAppJson(requestUrl, headers, requestBody, 3000, 3000); + } catch (IOException e) { + log.error("request token error", e); + resStatus.put("status", "error"); + resStatus.put("msg", String.format("获取token请求异常:%s", e.getMessage())); + } + log.info("request {}", requestBody); + JSONObject jsonObject = JSONObject.parseObject(res); + log.info("response {}", jsonObject); + int code = jsonObject.getIntValue("code"); + if (code == 0) { + Object data = jsonObject.get("data"); + if (!(data instanceof Boolean)) { resStatus.put("id", String.valueOf(data)); - } else { - throw new KDBizException("失败:" + res); } - return resStatus; } else { - log.error(headers.get("msg")); + resStatus.put("msg", JSON.toJSONString(jsonObject)); } return resStatus; } + /** * 修改用户 */ - public static Map Modifyuser(String big,String string) { + public static Map Modifyuser(String big, String string) { final String requestUrl = ENDPOINTS + "/admin-api/system/user/update-status"; @@ -508,7 +500,7 @@ public class OrderApiUtils { String res = ""; try { log.info("start request {}", requestUrl); - res = HttpUtils.doPut(requestUrl, JSON.toJSONString(requestBody),"json", headers); + res = HttpUtils.doPut(requestUrl, JSON.toJSONString(requestBody), "json", headers); // HttpUtils.doPut(requestUrl, JSON.toJSONString(objectArrayList), "json", headers); } catch (IOException e) { log.error("request token error", e); @@ -518,6 +510,7 @@ public class OrderApiUtils { } return null; } + /** * 同步订单 * @@ -552,9 +545,9 @@ public class OrderApiUtils { requestBody.put("model", Bearer.get("model")); requestBody.put("salesman", Bearer.get("salesman")); requestBody.put("seller", Bearer.get("seller")); - requestBody.put("productenname",Bearer.get("productenname")); - requestBody.put("productname",Bearer.get("productname")); - requestBody.put("product",Bearer.get("productnumber")); + requestBody.put("productenname", Bearer.get("productenname")); + requestBody.put("productname", Bearer.get("productname")); + requestBody.put("product", Bearer.get("productnumber")); Map objectMap = new HashMap<>(); objectMap.put("salesorderno", Bearer.get("salesordernos")); objectMap.put("framenumber", Bearer.get("framenumber")); @@ -601,8 +594,8 @@ public class OrderApiUtils { DynamicObject[] mechanical = BusinessDataServiceHelper.load("yem_em_devicefiles" , "id,number,yem_ordeid,yem_issynorde" , new QFilter[]{new QFilter("yem_salesorderno", QCP.equals, salesorderno), - new QFilter("number", QCP.in, compNo) - }); + new QFilter("number", QCP.in, compNo) + }); for (DynamicObject d : mechanical) { d.set("yem_ordeid", objectsId); d.set("yem_issynorde", true); @@ -620,6 +613,7 @@ public class OrderApiUtils { /** * 同步产品机型到下单平台权限项 + * * @param parentObject 父级 */ public static void syncProductModuleToPermissions(DynamicObject parentObject, ORM orm) throws IOException { @@ -647,6 +641,7 @@ public class OrderApiUtils { /** * 查询子级所有的产品机型,为空则查询一级 + * * @param parent * @return */ @@ -684,7 +679,7 @@ public class OrderApiUtils { Long itemId = requestAddPermissionItem(object, returnId, token, subIdx); object.set("yem_orderperid", itemId); - log.info("AddPermissionItem__parent: " + dynamicObject.getString("number") + "_" + dynamicObject.getString("name") +"_item: " + object.getPkValue() + "_" + object.getString("number") + "_" + object.getString("name")); + log.info("AddPermissionItem__parent: " + dynamicObject.getString("number") + "_" + dynamicObject.getString("name") + "_item: " + object.getPkValue() + "_" + object.getString("number") + "_" + object.getString("name")); } SaveServiceHelper.update(collection.toArray(new DynamicObject[0])); @@ -696,7 +691,7 @@ public class OrderApiUtils { if ("success".equals(resMap.get("status"))) { return "Bearer " + resMap.get("token"); } else { - throw new IOException("获取token失败"); + throw new IOException("获取token失败"); } } @@ -754,7 +749,7 @@ public class OrderApiUtils { * * @param object 产品机型 * @param parentId 该机型对应类型ID - * @param subIdx 排序 + * @param subIdx 排序 * @return */ private static Long requestAddPermissionItem(DynamicObject object, Long parentId, String token, int subIdx) throws IOException { @@ -812,10 +807,10 @@ public class OrderApiUtils { headers.put("Authorization", "Bearer " + (accessToken)); for (Map Bearer : list) { Map requestBody = new HashMap<>(); - requestBody.put("id",Bearer.get("id")); - requestBody.put("status",Bearer.get("status")); - requestBody.put("logisticsNo",Bearer.get("logisticsNo")); - requestBody.put("ladingDate",Bearer.get("ladingDate")); + requestBody.put("id", Bearer.get("id")); + requestBody.put("status", Bearer.get("status")); + requestBody.put("logisticsNo", Bearer.get("logisticsNo")); + requestBody.put("ladingDate", Bearer.get("ladingDate")); objectArrayList.add(requestBody); } try { diff --git a/src/main/java/com/yem/wm/bd/customer/from/Validator/CustomerValidator.java b/src/main/java/com/yem/wm/bd/customer/from/Validator/CustomerValidator.java index fdec1ec3..1be11411 100644 --- a/src/main/java/com/yem/wm/bd/customer/from/Validator/CustomerValidator.java +++ b/src/main/java/com/yem/wm/bd/customer/from/Validator/CustomerValidator.java @@ -5,13 +5,16 @@ import com.yem.wm.utils.YEM; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.validate.AbstractValidator; -import kd.bos.orm.query.QCP; +import kd.bos.exception.KDBizException; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import java.io.IOException; import java.util.Map; +import static com.yem.or.utils.OrderApiUtils.getToken; + /** * ljw * 同步数据至下单平台 @@ -21,18 +24,23 @@ public class CustomerValidator extends AbstractValidator { @Override public void validate() { ExtendedDataEntity[] dataEntities = this.getDataEntities(); + + String accessToken = ""; + + try { + Map token = getToken(); + accessToken = token.get("token"); + } catch (IOException e) { + throw new RuntimeException(e); + } + + if (YEM.isEmpty(accessToken)) { + throw new KDBizException("获取AccessToken失败"); + } + for (ExtendedDataEntity dataEntitie : dataEntities) { DynamicObject mechanical = dataEntitie.getDataEntity(); boolean isSynced = mechanical.getBoolean("yem_checkboxfield"); -// DynamicObject group = mechanical.getDynamicObject("group"); -// if (group != null) { -// long groupid = group.getLong("id"); -// QFilter qFilter = new QFilter("parent.number", QCP.equals, "11602"); -// QFilter qFilter1 = new QFilter("id", QCP.equals, groupid); -// qFilter1.and(new QFilter("enable", QCP.equals, "1")); -// DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_customergroup", "id,number,parent" -// , new QFilter[]{qFilter, qFilter1}); -// if (dynamicObjects.length > 0) { String number = mechanical.getString("number"); String name = mechanical.getString("name"); DynamicObject groupcustomers = mechanical.getDynamicObject("yem_groupcustomers"); @@ -53,26 +61,18 @@ public class CustomerValidator extends AbstractValidator { if (isSynced) { String torderid = mechanical.getString("yem_torderid"); Long existId = Long.valueOf(torderid); - demands = OrderApiUtils.demands(name, number, groupcustomers, false, existId); + demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, false, existId); } else { - demands = OrderApiUtils.demands(name, number, groupcustomers, true, null); + demands = OrderApiUtils.demands(accessToken, name, number, groupcustomers, true, null); } - String msg = demands.get("msg"); if (demands.containsKey("id")) { String id = demands.get("id"); mechanical.set("yem_torderid", id); mechanical.set("yem_checkboxfield", true); - SaveServiceHelper.update(mechanical); SaveServiceHelper.save(new DynamicObject[]{mechanical}); - } else { - this.addErrorMessage(dataEntitie, msg); + } else if (demands.containsKey("msg")) { + this.addErrorMessage(dataEntitie, demands.get("msg")); } -// } else { -// this.addErrorMessage(dataEntitie, "当前客户不满足同步条件,禁止同步至下单平台!!!"); -// } -// } else { -// this.addErrorMessage(dataEntitie, "当前客户分组为空!!"); -// } } } }