From 08db83852d3f00d1be9703e6adb4373395fe1466 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期四, 27 七月 2023 21:04:56 +0800 Subject: [PATCH] #售前规划申请单需求多选 --- src/main/java/com/zy/crm/manager/controller/PlanController.java | 36 +++++++ src/main/webapp/static/js/plan/plan.js | 31 +++++- src/main/java/com/zy/crm/common/utils/SetOfUtils.java | 154 ++++++++++++++++++++++++++++++ src/main/java/com/zy/crm/manager/entity/Plan.java | 15 ++- src/main/java/com/zy/crm/common/entity/RouteCollectCountType.java | 42 ++++++++ 5 files changed, 268 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/crm/common/entity/RouteCollectCountType.java b/src/main/java/com/zy/crm/common/entity/RouteCollectCountType.java new file mode 100644 index 0000000..f7d3baf --- /dev/null +++ b/src/main/java/com/zy/crm/common/entity/RouteCollectCountType.java @@ -0,0 +1,42 @@ +package com.zy.crm.common.entity; + +public enum RouteCollectCountType { + + INTERSECTION(0, "浜ら泦"), // 浜ら泦 + DIFFERENCESET(1, "宸泦"), // 宸泦 + UNION(2, "骞堕泦"), //骞堕泦 + DEDUPLICATIONUNION(3, "鍘婚噸骞堕泦"), //鍘婚噸骞堕泦 + ; + + public Integer id; + public String desc; + RouteCollectCountType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static RouteCollectCountType get(Short id) { + if (null == id) { + return null; + } + for (RouteCollectCountType type : RouteCollectCountType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static RouteCollectCountType get(RouteCollectCountType type) { + if (null == type) { + return null; + } + for (RouteCollectCountType crnLiftPosType : RouteCollectCountType.values()) { + if (crnLiftPosType == type) { + return crnLiftPosType; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/crm/common/utils/SetOfUtils.java b/src/main/java/com/zy/crm/common/utils/SetOfUtils.java new file mode 100644 index 0000000..217ee67 --- /dev/null +++ b/src/main/java/com/zy/crm/common/utils/SetOfUtils.java @@ -0,0 +1,154 @@ +package com.zy.crm.common.utils; + + +import com.zy.crm.common.entity.RouteCollectCountType; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.stream.Collectors.toList; + +/** + * Created by Monkey D. Luffy on 2023/7/18 + */ +public class SetOfUtils { + +// 姝e簭 + public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{ + add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);add(11);add(12); + }}; +// 鍙嶅簭 + public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{ + add(12);add(11);add(10);add(9);add(8);add(7);add(6);add(5);add(4);add(3);add(2);add(1); + }}; + + public static String zerofill(String msg, Integer count){ + if (msg.length() == count){ + return msg; + } else if (msg.length() > count){ + return msg.substring(0, 16); + } else { + StringBuilder msgBuilder = new StringBuilder(msg); + for (int i = 0; i<count-msg.length(); i++){ + msgBuilder.insert(0,"0"); + } + return msgBuilder.toString(); + } + } + + // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎 + public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){ + boolean sign = groupStart < groupEnd; + List<Integer> result = new ArrayList<>(); + List<Integer> groupRoute = null; + if (sign){ + groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE; + }else { + groupRoute = TRACK_POSITION_REVERSE_SEQUENCE; + } + if (groupRoute.contains(groupStart) && groupRoute.contains(groupEnd)) { + sign = false; + for (Integer route : groupRoute) { + if (route.equals(groupStart)){ + sign=true; + } + if (route.equals(groupEnd)){ + result.add(route); + break; + } + if (sign){ + result.add(route); + } + } + }else { + return null; + } + return result; + } + + //鏄惁鏈変氦闆� + public static boolean getRouteBoolean(List<Integer> groupCurrent,List<Integer> groupOther){ + for (Integer positionCurrent : groupCurrent){ + for (Integer positionOther : groupOther){ + if (positionCurrent.equals(positionOther)){ + return true; + } + } + } + return false; + } + + //闆嗗悎杩愮畻 + public static List<Integer> getRouteIntersection(List<Integer> groupCurrent, List<Integer> groupOther, RouteCollectCountType routeCollectCountType){ + switch (routeCollectCountType){ + case INTERSECTION: + //浜ら泦 + return groupCurrent.stream().filter(item -> groupOther.contains(item)).collect(toList()); + case DIFFERENCESET: + //宸泦 + return groupCurrent.stream().filter(item -> !groupOther.contains(item)).collect(toList()); + case UNION: + //骞堕泦 + groupCurrent.addAll(groupOther); + return groupCurrent; + case DEDUPLICATIONUNION: + //鍘婚噸骞堕泦 + groupCurrent.addAll(groupOther); + return groupCurrent.stream().distinct().collect(toList()); + default: + return null; + } + } + + //闆嗗悎杩愮畻 + public static List<String> getRouteIntersectionString(List<String> groupCurrent, List<String> groupOther, RouteCollectCountType routeCollectCountType){ + switch (routeCollectCountType){ + case INTERSECTION: + //浜ら泦 + List<String> intersection = groupCurrent.stream().filter(item -> groupOther.contains(item)).collect(toList()); + return intersection; + case DIFFERENCESET: + //宸泦 + List<String> reduce1 = groupCurrent.stream().filter(item -> !groupOther.contains(item)).collect(toList()); + return reduce1; + case UNION: + //骞堕泦 + List<String> listAll = groupCurrent.parallelStream().collect(toList()); + List<String> listAll2 = groupOther.parallelStream().collect(toList()); + listAll.addAll(listAll2); + return listAll; + case DEDUPLICATIONUNION: + //鍘婚噸骞堕泦 + List<String> listAll1 = groupCurrent.parallelStream().collect(toList()); + List<String> listAll21 = groupOther.parallelStream().collect(toList()); + listAll1.addAll(listAll21); + List<String> listAllDistinct = listAll1.stream().distinct().collect(toList()); + return listAllDistinct; + default: + return null; + } + } + + public static void main(String[] arge){ + List<Integer> routeCurrent = getRoute(2, 9); //鑾峰彇褰撳墠灏忚溅璺緞 + List<Integer> routeOther = getRoute(12, 5); //鑾峰彇鍏跺畠灏忚溅璺緞 + System.out.println("褰撳墠灏忚溅璺緞:\t"+routeCurrent); + System.out.println("鍏跺畠灏忚溅璺緞:\t"+routeOther); + + boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther); //鏄惁鏈変氦闆� + System.out.println("鏄惁鏈変氦闆�:\t"+routeBoolean); + + List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//浜ら泦 + System.out.println("璺緞浜ら泦锛歕t"+routeIntersection); + + List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//宸泦 + System.out.println("璺緞宸泦锛歕t"+routeIntersection1); + + List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//骞堕泦 + System.out.println("璺緞骞堕泦锛歕t"+routeIntersection2); + + List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//鍘婚噸骞堕泦 + System.out.println("璺緞鍘婚噸骞堕泦锛歕t"+routeIntersection3); + } + +} diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java index 859bd71..c3dc7a5 100644 --- a/src/main/java/com/zy/crm/manager/controller/PlanController.java +++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java @@ -12,7 +12,9 @@ import com.core.common.R; import com.core.domain.KeyValueVo; import com.core.exception.CoolException; +import com.zy.crm.common.entity.RouteCollectCountType; import com.zy.crm.common.model.SettleDto; +import com.zy.crm.common.utils.SetOfUtils; import com.zy.crm.common.web.BaseController; import com.zy.crm.manager.controller.result.FollowerTableVo; import com.zy.crm.manager.entity.Plan; @@ -38,6 +40,8 @@ import java.io.IOException; import java.io.InputStream; import java.util.*; + +import static java.util.stream.Collectors.toList; @RestController public class PlanController extends BaseController { @@ -145,11 +149,43 @@ @RequestMapping(value = "/plan/update/auth") @ManagerAuth public R update(@RequestParam Map<String, Object> param){ + String planNeed = null; + Integer id = null; + for (Map.Entry<String, Object> entry : param.entrySet()){ + String val = String.valueOf(entry.getValue()); + if (Cools.isEmpty(val)){ + continue; + } + if (entry.getKey().equals("planNeed")){ + planNeed = val; + } + if (entry.getKey().equals("id")){ + try{ + id = Integer.parseInt(val); + }catch (Exception e){ + return R.error(); + } + } + } if (Cools.isEmpty(param) || Cools.isEmpty(param.get("id"))){ return R.error(); } + List<String> planNeedbs = new ArrayList<>(Arrays.asList(planNeed.split("-"))); + if (planNeedbs.get(0).equals("[object Object]")){ + planNeedbs.remove(0); + Plan plan1 = planService.selectById(id); + List<String> planNeedas = Arrays.asList(plan1.getPlanNeed().split("-")); + List<String> routeIntersectionString = SetOfUtils.getRouteIntersectionString(planNeedas, planNeedbs, RouteCollectCountType.DEDUPLICATIONUNION); + planNeed=""; + for (String planNeedss:routeIntersectionString){ + planNeed=planNeed==""? planNeedss:planNeed + "-" + planNeedss; + } + } + + // pre Plan plan = JSON.parseObject(JSON.toJSONString(param), Plan.class); + plan.setPlanNeed(planNeed); param.entrySet().removeIf(next -> this.fields.contains(next.getKey())); plan.setUpdateBy(getUserId()); plan.setUpdateTime(new Date()); diff --git a/src/main/java/com/zy/crm/manager/entity/Plan.java b/src/main/java/com/zy/crm/manager/entity/Plan.java index 0514720..25e5a1c 100644 --- a/src/main/java/com/zy/crm/manager/entity/Plan.java +++ b/src/main/java/com/zy/crm/manager/entity/Plan.java @@ -104,7 +104,7 @@ */ @ApiModelProperty(value= "鏂规鎵�闇�") @TableField("plan_need") - private Long planNeed; + private String planNeed; /** * 绔嬮」 1: 鏄� 0: 鍚� @@ -299,11 +299,16 @@ public String getPlanNeed$(){ PlanNeedService service = SpringUtils.getBean(PlanNeedService.class); - PlanNeed planNeed = service.selectById(this.planNeed); - if (!Cools.isEmpty(planNeed)){ - return String.valueOf(planNeed.getName()); + String[] planNeeds = this.planNeed.split("-"); + String name=""; + for (String planNeeda : planNeeds){ + PlanNeed planNeed = service.selectById(Integer.parseInt(planNeeda)); + if (!Cools.isEmpty(planNeed)){ +// return String.valueOf(planNeed.getName()); + name = name+planNeed.getName()+";"; + } } - return null; + return name; } public String getBeItem$(){ diff --git a/src/main/webapp/static/js/plan/plan.js b/src/main/webapp/static/js/plan/plan.js index 5c60d0f..dc3df76 100644 --- a/src/main/webapp/static/js/plan/plan.js +++ b/src/main/webapp/static/js/plan/plan.js @@ -257,7 +257,12 @@ data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null; data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null; data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null; - data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; + // data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; + var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; + for (var i=1;i<planNeedSel.getValue().length;i++){ + planNeedValue =planNeedSel.getValue()[i] ? planNeedValue+"-"+planNeedSel.getValue()[i].value : planNeedValue; + } + data.field.planNeed = planNeedValue; delete data.field.select;delete data.field.planTypeName; @@ -511,7 +516,20 @@ if (plan.orderId) { orderSel.setValue([{name: plan.orderId$, value: plan.orderId}]); } if (plan.cstmrId) { cstmrSel.setValue([{name: plan.cstmrId$, value: plan.cstmrId}]); } if (plan.userId) { userSel.setValue([{name: plan.userId$, value: plan.userId}]); } - if (plan.planNeed) { planNeedSel.setValue([{name: plan.planNeed$, value: plan.planNeed}]); } + // console.log(plan); + // console.log(plan.planNeed); + // console.log(plan.planNeed.split("-")); + // console.log(plan.planNeed.split("-").length); + let split = plan.planNeed.split("-"); + // console.log(split); + // console.log(split.length); + if (plan.planNeed) { + var planNeedValue1=split[0]; + for (var i=1;i<split.length;i++){ + planNeedValue1 = planNeedSel+"-" +split[i]; + } + planNeedSel.setValue([{name: plan.planNeed$, value: planNeedValue1}]); + } layDateRender(plan); plan['planTypeName'] = plan.planType$; form.val('detail', plan); @@ -519,8 +537,12 @@ data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null; data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null; data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null; - data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; - + // data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; + var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null; + for (var i=1;i<planNeedSel.getValue().length;i++){ + planNeedValue =planNeedSel.getValue()[i] ? planNeedValue+"-"+planNeedSel.getValue()[i].value : planNeedValue; + } + data.field.planNeed = planNeedValue; delete data.field.select;delete data.field.planTypeName; if (!data.field.orderId) { @@ -725,7 +747,6 @@ autoRow: true, filterable: true, remoteSearch: true, - radio: true, remoteMethod: function (val, cb, show) { $.ajax({ url: baseUrl + "/planNeed/all/get/kv", -- Gitblit v1.9.1