package com.goafanti.customer.service; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Set; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.goafanti.common.bo.userDaysBo; import com.goafanti.common.error.BusinessException; import com.goafanti.common.model.Admin; import com.goafanti.common.model.OrganizationContactBook; import com.goafanti.common.model.User; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.customer.bo.BusinessListBo; import com.goafanti.customer.bo.BussinessFollowBo; import com.goafanti.customer.bo.CustomerExcelBo; import com.goafanti.customer.bo.CustomerListIn; import com.goafanti.customer.bo.CustomerListOut; import com.goafanti.customer.bo.CustomerOrganizationDetailBo; import com.goafanti.customer.bo.CustomerPersonalDetailBo; import com.goafanti.customer.bo.CustomerSimpleBo; import com.goafanti.customer.bo.FollowBusinessBo; import com.goafanti.customer.bo.FollowListBo; import com.goafanti.customer.bo.InputListChannel; import com.goafanti.customer.bo.LockingReleaseBo; import com.goafanti.customer.bo.StatisticBo; import com.goafanti.customer.bo.transferListBo; import com.goafanti.user.bo.OutUserChannel; public interface CustomerService { /** * 私有个人客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listPrivatePersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 公共个人客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listPublicPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 所有个人客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listAllPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 管理个人客户查询(所属人同部门客户管理) * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listAllManagePersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 私有单位客户列表查询 * @param cin * @param type 0私有列表 1指导列表 * @return */ Pagination listPrivateOrganizationCustomer(CustomerListIn cli,Integer sort,Integer sortType,Integer power, Integer pageNo, Integer pageSize); /** * 公共单位客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listPublicOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 所有单位客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listAllOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 管理单位客户列表查询 * @param cin * @param pageSize * @param pageNumber * @return */ Pagination listAllManageOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 使用客户名检索客户 * @param name 客户名称 * @return */ List findCustomerByName(String name); /** * 使用客户名检索私有客户 * @param name * @return */ List getPrivateCustomerByName(String name); /** * 使用客户名称检索已签单客户 * @param name * @return */ List getSignedCustomerByName(String name); /** * 判断是否存在某个单位客户 * @param name * @return */ int judgeCustomerByName(String name); /** * * @param name 客户名 * @param contacts 联系人 * @param contactMobile 联系电话 * @param type 客户类型 * @param societyTag 社会属性 * @param area * @param city * @param province * @return */ int addCustomer(String name,String contacts,String contactMobile,Integer type,Integer source,String societyTag, Integer province, Integer city, Integer area) throws BusinessException; /** * 查询单位客户详情 * @param uid 用户ID * @return */ CustomerPersonalDetailBo findPersonalCustomerDetail(String uid); /** * 查询单位客户详情 * @param uid 用户ID * @return */ CustomerOrganizationDetailBo findOrganizationCustomerDetail(String uid); /** * 修改单位客户信息 * @param bo * @return */ int updateOrganizationCustomer(CustomerOrganizationDetailBo bo); /** * 修改个人客户信息 * @param bo * @return */ int updatePersonalCustomer(CustomerPersonalDetailBo bo); /** * 查看客户账户信息 * @param uid 客户ID * @return */ User findUserAccountDetail(String uid); /** * 更新用户基本信息 * @param user */ int updateUserAccount(User user); /** * 客户联系人列表 * @param uid * @return */ List findCustomerContacts(String uid); /** * 添加拜访记录 * @param fbb */ int addFollow(FollowBusinessBo fbb) throws BusinessException; /** * 查询拜访记录详情 * @param followId * @return */ FollowBusinessBo findFollowById(String followId); /** * 查询单词拜访推进的客户意向 * @param followId * @return */ List findBusinessByFollowId(String followId); /** * 修改拜访记录 * @param fbb */ int updateFollow(FollowBusinessBo fbb) throws BusinessException; /** * 查询客户的所有联系人 * @param uid * @return */ Set findAllContacts(String uid); /** * 更新客户联系人 * @param ocbList * @return */ int updateCustomerContacts(List ocbList,String uid); /** * 删除拜访记录 * @param followId * @return */ int deleteFollow(String followId); /** * 检查客户业务 * @param boSet * @param existRows */ void checkCustomer(Set boSet,Set existRows, Set filterRows); /** * 保存上传数据 * @param boSet */ int saveUploadData(Set boSet); /** * 通过操作类型更新客户 * @param uid * @param operatorType * @return */ int updateByOperatorType(String uid,String aid,Integer operatorType,Object... params); /** * 客户统计 * @param sDate * @param eDate * @param depId * @return */ Pagination customerStatistics(Date sDate, Date eDate, String depNo, String businessGlossoryId, Integer pageNo, Integer pageSize); /** * 业务进度统计 * @param sDate * @param eDate * @return */ Pagination businessStatistic(Date sDate, Date eDate, String depNo, String businessGlossoryId,Integer pageNo, Integer pageSize); /** * 拜访统计 * @param sDate * @param eDate * @return */ Pagination followStatistic(Date sDate, Date eDate, String depNo, Integer pageNo, Integer pageSize); /** * 查询我的业务列表 * @param blo * @return */ Pagination listBusiness(BusinessListBo blo,Integer pageNo,Integer pageSize); /** * 查询所有的业务列表 * @param bfb * @return */ Pagination listAllBusiness(BusinessListBo blo, Integer pageNo, Integer pageSize); /** * 业务管理列表 * @param blo * @return */ Pagination listManageBusiness(BusinessListBo blo,Integer pageNo,Integer pageSize); /** * 意向字典 * @return */ List findBusinessGlossory(); /** * * @param uid 客户ID * @param businessProjectId 业务项目的ID * @return */ int judgeBusiness(String uid,String businessProjectId); /** * 添加意向服务和跟进记录 * @param bfb */ void addBusinessAndFollow(BussinessFollowBo bfb) throws ParseException ; /** * 查询业务列表 * @param uid 客户ID * @param aid 营销员ID * @return */ List findBusinessByUAid(String uid,String aid); /** * 查询锁定的业务列表 * @param uid * @param aid * @return */ List findLockedBusinessByUAid(String uid,String aid); /** * 查看业务意向详情 * @param businessId * @return */ BussinessFollowBo findBusinessDetail(String businessId); /** * 修改业务意向 * @param bfb * @return */ int updateBusiness(BussinessFollowBo bfb); /** * 跟进单个业务意向 * @param bfb * @return */ int addFollowOneBusiness(BussinessFollowBo bfb) throws ParseException; /** * 查询某个客户的一个意向的当次拜访 * @param ufbId * @return */ BussinessFollowBo findFollowOneBusiness(String ufbId); /** * 修改某个客户的一个意向的当次拜访 * @param bfb * @return */ int updateFollowOneBusiness(BussinessFollowBo bfb); /** * 添加单个联系人 * @param ocb * @return */ int addOneContact(OrganizationContactBook ocb); /** * 删除业务 * @param businessId * @return */ int deleteBusiness(String businessId); /** * 停止业务 * @param businessId * @return */ int updateBusinessToStop(String businessId); /** * 删除跟进记录中间表记录 * @param ufbId * @return */ int deleteFollowOneBusiness(String ufbId); /** * 删除单个联系人 * @param ocbId * @return */ int deleteOneContact(String ocbId); List findAdminName(); int updatePersonalCustomerz(CustomerPersonalDetailBo bo); Pagination findEnteringAudit(CustomerListOut clo, Integer pageNo, Integer pageSize); Pagination findEnteringAuditIsNo(CustomerListOut clo, Integer pageNo, Integer pageSize); int updateEnteringAudit(User bo); /** * 修改为主要联系人 * @param ocbId * @return */ int updateMainContact(String ocbId,String uid); /** 修改拒绝客户信息 **/ int updateRefusedCustomer(String id,String nickname, String mobile, String societyTag); /** * 签单的单位客户 * @param cli * @param pageNo * @param pageSize * @return */ Pagination listSignOrganizationCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 签单的个人客户 * @param cli * @param pageNo * @param pageSize * @return */ Pagination listSignPersonalCustomer(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 查询需要释放的客户 * @param uid 客户Id * @param type 0 未跟进 1未签单 * @return */ List selectWaitReleaseCustomer(String uid, Integer type); List selectWaitReleaseBusiness(String uid); void updateReleaseLock(Date releaseTime); /** * 查询客户的锁定业务 * @param uid * @return */ List selectLockedProject(String uid); /** * 再次签订项目任务 * @param aid * @param id * @return */ int updateAgainProjectTask(String uid, String projectId, String aid); /** * 客户资料转交 * @param id * @param aid * @return */ int updateInformationMaintainerr(String id, String aid); /** * 个人客户资料列表 * @param cli * @param pageNo * @param pageSize * @return */ Pagination listCustomerInformation(CustomerListIn cli, Integer pageNo, Integer pageSize); /** * 部门客户资料列表 * @param cli * @param pageNo * @param pageSize * @return */ Pagination listDepCustomerInformation(CustomerListIn cli, Integer pageNo, Integer pageSize); void updatePendingReleaseLock(List newList); List selectPendinglockUserList(); int updateUserLevel(User u); public Float countIntegrity(CustomerOrganizationDetailBo bo); XSSFWorkbook privateUnitCustomerOutXls(CustomerListIn cli ,Integer sort,Integer sortType,Integer pageNo, Integer pageSize); int customerHandOver(String userIds, String receiveId); List transferList(String uid); int updatePrivateBusinessTransfer(String inputId, String uid, String pid); int pushReleaseUser(String id); List selectUserDays(String id); /** * * @param type 0提前15天 1达到 * @return */ List selectChannelUserDays(Integer type); int addGuidance(String followId, String guidance); /** * 查看跟进记录列表 * @param pageNo * @param pageSize * @return */ Pagination listFollowHistory(Integer pageNo, Integer pageSize,String uid,String businessGlossoryId,Integer type); int pushGuidance(String uid); boolean checkMax(String aid); /** * * @param list 释放客户 * @param type 0 未跟进 1未签单 * @throws InterruptedException */ void pushReleaseLog(List list,Integer type) throws InterruptedException; Object listChannelCustomer(InputListChannel in); /** * * @param uids 用户集 * @param receiveId 接受者 * @param remarks 备注 * @param type 0总监分配 1经理分配 2回退 * @return */ Object pushChannelDeliver(List uids, String receiveId, String remarks, Integer type); Object getChannelCustomerByName(String name); boolean checkChannel(List uids); boolean checkBeforeChannel(String uid); boolean checkRecovery(List uids); }