|
|
@@ -0,0 +1,202 @@
|
|
|
+package com.mokamrp.privates.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
|
|
+import com.baomidou.mybatisplus.plugins.Page;
|
|
|
+import com.mokamrp.privates.mapper.WorkContactRoomMapper;
|
|
|
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
|
|
|
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
|
|
|
+import com.mokamrp.privates.mapper.WorkRoomMapper;
|
|
|
+import com.mokamrp.privates.mapper.vo.WorkContactRoomGroupDataVo;
|
|
|
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
|
|
|
+import com.mokamrp.privates.service.WorkRoomService;
|
|
|
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 客户群表 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author gy
|
|
|
+ * @since 2021-04-21
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class WorkRoomServiceImpl extends ServiceImpl<WorkRoomMapper, WorkRoom> implements WorkRoomService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WorkRoomMapper mapperObj;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WorkContactRoomMapper contanctMapperObj;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getPageList(Integer pagesize, Integer page,
|
|
|
+ String name, Integer corp_id,
|
|
|
+ String start_create_time, String end_create_time,
|
|
|
+ String wx_chat_id, Integer corp_group_id,
|
|
|
+ List owner_id, List tag_id ){
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Page<WorkRoom> pageObj = new Page<>(page, pagesize);
|
|
|
+ EntityWrapper<WorkRoom> obj = new EntityWrapper<WorkRoom>();
|
|
|
+
|
|
|
+ if(name != null && !"".equals(name)){
|
|
|
+ obj.like("a.name",name);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(corp_id != null){
|
|
|
+ obj.eq("a.corp_id",corp_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(start_create_time != null && !"".equals(start_create_time)) {
|
|
|
+ obj.ge("a.create_time", start_create_time);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(end_create_time != null && !"".equals(end_create_time)) {
|
|
|
+ obj.le("a.create_time", end_create_time);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(owner_id !=null) {
|
|
|
+ obj.in("a.owner_id", owner_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(tag_id !=null) {
|
|
|
+ obj.in("f.tag_id", tag_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(corp_id != null){
|
|
|
+ obj.eq("a.corp_id",owner_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(corp_group_id != null){
|
|
|
+ obj.eq("c.group_id",corp_group_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(wx_chat_id != null && !"".equals(wx_chat_id)){
|
|
|
+ obj.eq("a.wx_chat_id",wx_chat_id);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<WorkRoomVo> list = mapperObj.getVoList(pageObj,obj);
|
|
|
+ Integer total = mapperObj.getVoListTotal(obj);
|
|
|
+ System.out.println("数据总数");
|
|
|
+ System.out.println(total);
|
|
|
+
|
|
|
+ if(list.size() > 0 ) {
|
|
|
+
|
|
|
+
|
|
|
+ List<Integer> ids = list.stream().map(WorkRoomVo -> WorkRoomVo.getId()).collect(Collectors.toList());
|
|
|
+ HashMap<Integer ,HashMap<String,Integer >> dataById = getDataById(ids);
|
|
|
+
|
|
|
+
|
|
|
+ System.out.println(dataById);
|
|
|
+ if(dataById.size() > 0){
|
|
|
+ list=list.stream().map(WorkRwoomVo -> {
|
|
|
+ WorkRoomVo detail = new WorkRoomVo();
|
|
|
+ BeanUtils.copyProperties(WorkRwoomVo, detail);
|
|
|
+ if(dataById.get(detail.getId()) != null){
|
|
|
+ ;
|
|
|
+ detail.setTotal_num((dataById.get(detail.getId()).get("total")));
|
|
|
+ detail.setAdd_num(dataById.get(detail.getId()).get("add_num"));
|
|
|
+ detail.setLeft_num(dataById.get(detail.getId()).get("left_num"));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return detail;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Object> resMap = new HashMap<String,Object>();
|
|
|
+
|
|
|
+ resMap.put("list",list);
|
|
|
+ resMap.put("total",total);
|
|
|
+
|
|
|
+ return resMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ private HashMap<Integer ,HashMap<String,Integer >> getDataById(List<Integer> ids){
|
|
|
+
|
|
|
+ String todayStartDate = (new SimpleDateFormat("yyyy-MM-dd 00:00:00")).format(new Date());
|
|
|
+ String todayEndDate = (new SimpleDateFormat("yyyy-MM-dd 23:59:59")).format(new Date());
|
|
|
+
|
|
|
+ //获取数据 群人数 ,当日新增,当日离开
|
|
|
+ EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTotal = new EntityWrapper<WorkContactRoom>();
|
|
|
+ EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTodayAdd = new EntityWrapper<WorkContactRoom>();
|
|
|
+ EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTodayLeft = new EntityWrapper<WorkContactRoom>();
|
|
|
+ contactRoomEntityWrapperTotal.in("room_id", ids);
|
|
|
+ contactRoomEntityWrapperTotal.eq("status", 1);
|
|
|
+
|
|
|
+ contactRoomEntityWrapperTodayAdd.in("room_id", ids);
|
|
|
+ contactRoomEntityWrapperTodayAdd.eq("status", 1);
|
|
|
+ contactRoomEntityWrapperTodayAdd.le("join_time", todayEndDate);
|
|
|
+ contactRoomEntityWrapperTodayAdd.ge("join_time", todayStartDate);//大于
|
|
|
+
|
|
|
+
|
|
|
+ contactRoomEntityWrapperTodayLeft.in("room_id", ids);
|
|
|
+ contactRoomEntityWrapperTodayLeft.eq("status", 2);
|
|
|
+ contactRoomEntityWrapperTodayLeft.le("out_time", todayEndDate);
|
|
|
+ contactRoomEntityWrapperTodayLeft.ge("out_time", todayStartDate);//大于
|
|
|
+
|
|
|
+ List<WorkContactRoomGroupDataVo> todayLefts= contanctMapperObj.getNum(contactRoomEntityWrapperTodayLeft);
|
|
|
+ List<WorkContactRoomGroupDataVo> todayAdds= contanctMapperObj.getNum(contactRoomEntityWrapperTodayAdd);
|
|
|
+ List<WorkContactRoomGroupDataVo> totals= contanctMapperObj.getNum(contactRoomEntityWrapperTotal);
|
|
|
+
|
|
|
+
|
|
|
+ HashMap<Integer ,HashMap<String,Integer >> dataById =
|
|
|
+ new HashMap<Integer, HashMap<String, Integer>>();
|
|
|
+
|
|
|
+ HashMap<String, Integer> temp = new HashMap<String, Integer>();
|
|
|
+ for (WorkContactRoomGroupDataVo o : totals) {
|
|
|
+ temp.put("total",o.getNum());
|
|
|
+ temp.put("add_num",0);
|
|
|
+ temp.put("left_num",0);
|
|
|
+ dataById.put(o.getRoom_id(),temp);
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<String, Integer> tempSetLeft = new HashMap<String, Integer>();
|
|
|
+ System.out.println("查看类型");
|
|
|
+ System.out.println(todayLefts);
|
|
|
+ System.out.println(todayAdds);
|
|
|
+ for (WorkContactRoomGroupDataVo o : todayLefts) {
|
|
|
+ if(dataById.get(o.getRoom_id())==null){//不存在
|
|
|
+ temp.put("total",0);
|
|
|
+ temp.put("left_num",o.getNum());
|
|
|
+ temp.put("add_num",0);
|
|
|
+ dataById.put(o.getRoom_id(),temp);
|
|
|
+ }else{
|
|
|
+ tempSetLeft = dataById.get(o.getRoom_id());
|
|
|
+ tempSetLeft.put("left_num",o.getNum());
|
|
|
+ dataById.put(o.getRoom_id(),tempSetLeft);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<String, Integer> tempSetAdd = new HashMap<String, Integer>();
|
|
|
+ for (WorkContactRoomGroupDataVo o : todayAdds) {
|
|
|
+ if(dataById.get(o.getRoom_id())==null){//不存在
|
|
|
+ temp.put("total",0);
|
|
|
+ temp.put("add_num",o.getNum());
|
|
|
+ temp.put("left_num",0);
|
|
|
+ dataById.put(o.getRoom_id(),temp);
|
|
|
+ }else{
|
|
|
+ tempSetAdd = dataById.get(o.getRoom_id());
|
|
|
+ tempSetAdd.put("add_num",o.getNum());
|
|
|
+ dataById.put(o.getRoom_id(),tempSetAdd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return dataById;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|