package com.sitech.crmpd.service;
import com.google.common.collect.Lists;
import com.sitech.crmpd.annotation.SystemHttpLog;
import com.sitech.crmpd.domain.CustViewDataDTO;
import com.sitech.crmpd.exception.HoException;
import com.sitech.crmpd.exception.HoStatus;
import com.sitech.crmpd.mapper.ContactTaskInfoMapper;
import com.sitech.crmpd.mapper.HuaxiaoOrderMapper;
import com.sitech.crmtpd.mapper.ContactOrderMapper;
import com.sitech.crmtpd.market.domain.ContactOrder;
import com.sitech.crmtpd.market.domain.ContactOrderExample;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Stream;
/**
* @oauth: qiangSW
* @date: 2019/11/20 13:48
* @description: com.sitech.crmpd.service
* @doc:
*/
@Slf4j
@Service
public class ViewTaskService {
@Autowired
private HuaxiaoOrderMapper huaxiaoOrderMapper;
@Autowired
private ContactOrderMapper orderMapper;
@Autowired
private ContactTaskInfoMapper contactTaskInfoMapper;
/**
*
*
* @param custId
* @param viewItemCat
* @return
*/
public CustViewDataDTO custViewData(String custId, String viewItemCat) {
List<Map> user = huaxiaoOrderMapper.selectHoldByCustId(custId);
CustViewDataDTO custViewDataDTO = new CustViewDataDTO();
List<CustViewDataDTO.ContactTaskList> contactTaskLists = Lists.newArrayList();
custViewDataDTO.setViewItemCat(viewItemCat);
custViewDataDTO.setProCode("8140000");
return Optional.ofNullable(user)
.filter(a -> CollectionUtils.isNotEmpty(a) && !a.get(0).isEmpty())
.map(b -> {
String idNo = b.get(0).get("ID_NO").toString();
ContactOrderExample orderExample = new ContactOrderExample();
orderExample.createCriteria().andTargetObjNbrEqualTo(idNo);
List<ContactOrder> contactOrderList = orderMapper.selectByExample(orderExample);
return Optional.ofNullable(contactOrderList)
.filter(list -> CollectionUtils.isNotEmpty(list))
.map(c -> {
return cust(c.get(0), val -> {
List<Map<String, Object>> list = Lists.newArrayList();
list.addAll(contactTaskInfoMapper.taskDetail(val.getTargetObjNbr()));
list.stream()
.filter(map -> null != map && !map.isEmpty())
.forEach(taskList -> {
CustViewDataDTO.ContactTaskList createTask = custViewDataDTO.new ContactTaskList();
createTask.setPushType(String.valueOf(taskList.get("PUSHTYPE")));
createTask.setContactDate(String.valueOf(taskList.get("CONTACTDATE")));
createTask.setContactTaskTitle(String.valueOf(taskList.get("CONTACTTASKTITLE")));
createTask.setContactScript(String.valueOf(taskList.get("CONTACTSCRIPT")));
createTask.setContactChlId(String.valueOf(taskList.get("CONTACTCHLID")));
createTask.setCustId(custId);
createTask.setCustName(String.valueOf(user.get(0).get("USER_NAME")));
contactTaskLists.add(createTask);
});
custViewDataDTO.setContactTaskList(contactTaskLists);
return custViewDataDTO;
});
}).orElseGet(() -> {
CustViewDataDTO.ContactTaskList createTask = custViewDataDTO.new ContactTaskList();
contactTaskLists.add(createTask);
custViewDataDTO.setContactTaskList(contactTaskLists);
return custViewDataDTO;
});
}).orElseGet(() -> {
CustViewDataDTO.ContactTaskList createTask = custViewDataDTO.new ContactTaskList();
contactTaskLists.add(createTask);
custViewDataDTO.setContactTaskList(contactTaskLists);
return custViewDataDTO;
});
}
public CustViewDataDTO cust(ContactOrder order, Function<ContactOrder, CustViewDataDTO> function) {
CustViewDataDTO apply = function.apply(order);
return apply;
}
}