|  |  | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.DateUtils; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.core.domain.KeyValueVo; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.crm.common.web.BaseController; | 
 |  |  | import com.zy.crm.manager.controller.result.FollowerTableVo; | 
 |  |  | import com.zy.crm.manager.entity.Cstmr; | 
 |  |  | import com.zy.crm.manager.entity.CstmrFoll; | 
 |  |  | import com.zy.crm.manager.entity.CstmrType; | 
 |  |  | import com.zy.crm.manager.entity.Order; | 
 |  |  | import com.zy.crm.manager.service.CstmrFollService; | 
 |  |  | import com.zy.crm.manager.service.CstmrService; | 
 |  |  | import com.zy.crm.manager.service.CstmrTypeService; | 
 |  |  | import com.zy.crm.manager.service.OrderService; | 
 |  |  | import com.zy.crm.manager.utils.CompanySearchUtils; | 
 |  |  | import com.zy.crm.system.entity.Dept; | 
 |  |  | import com.zy.crm.system.entity.Dic; | 
 |  |  | import com.zy.crm.system.entity.Role; | 
 |  |  | import com.zy.crm.system.entity.User; | 
 |  |  | import com.zy.crm.system.service.DeptService; | 
 |  |  | import com.zy.crm.system.service.DicService; | 
 |  |  | import com.zy.crm.system.service.UserService; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import lombok.val; | 
 |  |  | import org.apache.poi.hssf.usermodel.HSSFWorkbook; | 
 |  |  | import org.apache.poi.ss.usermodel.DataFormatter; | 
 |  |  | import org.apache.poi.ss.usermodel.Row; | 
 |  |  | import org.apache.poi.ss.usermodel.Sheet; | 
 |  |  | import org.apache.poi.ss.usermodel.Workbook; | 
 |  |  | import org.apache.poi.xssf.usermodel.XSSFWorkbook; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  | import org.springframework.web.multipart.MultipartFile; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.io.*; | 
 |  |  | import java.lang.reflect.Array; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | @Slf4j | 
 |  |  | @RestController | 
 |  |  | public class CstmrController extends BaseController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CstmrService cstmrService; | 
 |  |  |     @Autowired | 
 |  |  |     private CstmrTypeService cstmrTypeService; | 
 |  |  |     @Autowired | 
 |  |  |     private DicService dicService; | 
 |  |  |     @Autowired | 
 |  |  |     private DeptService deptService; | 
 |  |  |     @Autowired | 
 |  |  |     private OrderService orderService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/{id}/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  | 
 |  |  |         return R.ok(cstmrService.selectById(String.valueOf(id))); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/list/auth") | 
 |  |  |     @RequestMapping(value = "/cstmr/name/check/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R list(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam(required = false)String condition, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |         EntityWrapper<Cstmr> wrapper = new EntityWrapper<>(); | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         hostEq(wrapper); | 
 |  |  |         allLike(Cstmr.class, param.keySet(), wrapper, condition); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { | 
 |  |  |             wrapper.orderBy("create_time", false); | 
 |  |  |         } | 
 |  |  |         if (!Cools.isEmpty(param.get("dept_id"))) { | 
 |  |  |             return R.ok(cstmrService.getPage(new Page<>(curr, limit) | 
 |  |  |                     , getHostId() | 
 |  |  |                     , String.valueOf(param.get("dept_id")) | 
 |  |  |                     , condition) | 
 |  |  |             ); | 
 |  |  |         } else { | 
 |  |  |             if (Cools.isEmpty(param.get("user_id"))) { | 
 |  |  |                 wrapper.andNew(); | 
 |  |  |                 wrapper.eq("user_id", getUserId()); | 
 |  |  |             } | 
 |  |  |             return R.ok(cstmrService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     public R getName(String name) { | 
 |  |  |         Cstmr cstmr = cstmrService.selectByName(getHostId(), name); | 
 |  |  |         if (Cools.isEmpty(cstmr) || cstmr==null){ | 
 |  |  |             return R.ok(); | 
 |  |  |         }else { | 
 |  |  |             return R.error(name+"已存在"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()){ | 
 |  |  |             String val = String.valueOf(entry.getValue()); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)){ | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  |                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
 |  |  |                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
 |  |  |             } else { | 
 |  |  |                 wrapper.like(entry.getKey(), val); | 
 |  |  |     @RequestMapping(value = "/cstmr/page/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R page(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                   @RequestParam(required = false) String followerName, | 
 |  |  |                   @RequestParam(required = false) String conditionName, | 
 |  |  |                   @RequestParam(required = false) String condition, | 
 |  |  |                   @RequestParam(required = false, value = "dept_id") Long deptId, | 
 |  |  |                   @RequestParam(required = false, value = "user_id") Long userId){ | 
 |  |  |         List<Integer> ids = new ArrayList<>(); | 
 |  |  |         if (!Cools.isEmpty(followerName)){ | 
 |  |  |             User username = userService.selectOne(new EntityWrapper<User>().eq("username", followerName)); | 
 |  |  |             if (!Cools.isEmpty(username)){ | 
 |  |  |                 List<CstmrFoll> cstmrIds = cstmrFollService.selectCstmrIdUserId(username.getId().intValue()); | 
 |  |  |                 for (CstmrFoll id : cstmrIds){ | 
 |  |  |                     ids.add(id.getCstmrId().intValue()); | 
 |  |  |                 } | 
 |  |  |             }else { | 
 |  |  |                 return R.error("未查询到跟进人信息!"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (!Cools.isEmpty(conditionName)){ | 
 |  |  |             switch (conditionName){ | 
 |  |  |                 case "director": | 
 |  |  |                     try { | 
 |  |  |                         condition=userService.selectOne(new EntityWrapper<User>().eq("username", condition)).getId().toString(); | 
 |  |  |                     }catch (Exception e){ | 
 |  |  |                         conditionName = null; | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok(cstmrService.getPage3(new Page<>(curr, limit) | 
 |  |  |                 , getHostId() | 
 |  |  |                 , deptId == null ? null : String.valueOf(deptId) | 
 |  |  |                 , userId == null ? getUserId() : userId | 
 |  |  |                 , Cools.isEmpty(followerName) ? null : ids | 
 |  |  |                 , conditionName | 
 |  |  |                 , condition) | 
 |  |  |         ); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/add/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     @ManagerAuth(memo = "添加甲方单位") | 
 |  |  |     public R add(Cstmr cstmr) { | 
 |  |  |         Long hostId = getHostId(); | 
 |  |  |         if (cstmrService.selectByUuid(hostId, cstmr.getUuid()) != null) { | 
 |  |  |             throw new CoolException("客户已存在"); | 
 |  |  |         } | 
 |  |  |         if (cstmrService.selectByName(hostId, cstmr.getName()) != null) { | 
 |  |  |             throw new CoolException("客户已存在"); | 
 |  |  |         } | 
 |  |  |         Cstmr cstmr1 = cstmrService.selectByName(hostId, cstmr.getName()); | 
 |  |  |         if (cstmr1!=null){ | 
 |  |  |             throw new CoolException("该客户信息已存在,业务员是:"+cstmr1.getDirector$()); | 
 |  |  |         } | 
 |  |  |         cstmr.setHostId(hostId); | 
 |  |  |         cstmr.setUuid(cstmrService.getNextUuid(hostId));  // 客户代号 | 
 |  |  |         cstmr.setUuid(cstmrService.getUuid(hostId));  // 客户代号 | 
 |  |  |         cstmr.setDeptId(getDeptId());               // 所属部门 | 
 |  |  |         cstmr.setUserId(getUserId());               // 所属人员 | 
 |  |  |  | 
 |  |  | 
 |  |  |         cstmr.setCreateTime(new Date()); | 
 |  |  |         cstmr.setUpdateBy(getUserId()); | 
 |  |  |         cstmr.setUpdateTime(new Date()); | 
 |  |  |         cstmr.setDirector(getUserId()); | 
 |  |  |         cstmr.setStatus(1); | 
 |  |  |         cstmrService.insert(cstmr); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |    @RequestMapping(value = "/cstmr/update/auth") | 
 |  |  |    @ManagerAuth | 
 |  |  |    @ManagerAuth(memo = "更新甲方单位") | 
 |  |  |     public R update(Cstmr cstmr){ | 
 |  |  |         if (Cools.isEmpty(cstmr) || null==cstmr.getId()){ | 
 |  |  |             return R.error(); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/delete/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     @ManagerAuth(memo = "删除甲方单位") | 
 |  |  |     public R delete(@RequestParam(value="ids[]") Long[] ids){ | 
 |  |  |          for (Long id : ids){ | 
 |  |  |         for (Long id : ids){ | 
 |  |  |             int order = orderService.selectCount(new EntityWrapper<Order>().eq("cstmr_id", id)); | 
 |  |  |             if (order!=0){ | 
 |  |  |                 return R.error("存在关联的跟踪项目,禁止删除!!!"); | 
 |  |  |             } | 
 |  |  |             cstmrService.deleteById(id); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/export/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R export(@RequestBody JSONObject param){ | 
 |  |  |         EntityWrapper<Cstmr> wrapper = new EntityWrapper<>(); | 
 |  |  |         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
 |  |  |         Map<String, Object> map = excludeTrash(param.getJSONObject("cstmr")); | 
 |  |  |         convert(map, wrapper); | 
 |  |  |         List<Cstmr> list = cstmrService.selectList(wrapper); | 
 |  |  |         return R.ok(exportSupport(list, fields)); | 
 |  |  |     @RequestMapping(value = "/cstmr/delete/one/{id}") | 
 |  |  |     @ManagerAuth(memo = "删除甲方单位") | 
 |  |  |     public R deleteOne(@PathVariable Long id) { | 
 |  |  |         int cstmr_id = orderService.selectCount(new EntityWrapper<Order>().eq("cstmr_id", id)); | 
 |  |  |         if (cstmr_id!=0){ | 
 |  |  |             return R.error("存在关联跟踪项目,禁止删除!!!"); | 
 |  |  |         } | 
 |  |  |         cstmrService.deleteById(id); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmrQuery/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  | 
 |  |  |             result.add(map); | 
 |  |  |         } | 
 |  |  |         return R.ok(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmrSearch/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R cstmrSearch(String condition) { | 
 |  |  |         List<Map<String, Object>> search = CompanySearchUtils.search(condition, 1); | 
 |  |  |         return R.ok(search); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/check/column/auth") | 
 |  |  | 
 |  |  |      * excel导入 | 
 |  |  |      */ | 
 |  |  |     @PostMapping(value = "/cstmr/excel/import/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     @ManagerAuth(memo = "甲方单位Excel导入") | 
 |  |  | //    @Transactional | 
 |  |  |     public R cstmrExcelImport(MultipartFile file) throws IOException { | 
 |  |  |  | 
 |  |  |         InputStream inStream = file.getInputStream(); | 
 |  |  |         String fileMime = file.getContentType(); | 
 |  |  |         int excelVersion = 2007; | 
 |  |  |         if ("application/vnd.ms-excel".equals(fileMime)) { | 
 |  |  |             excelVersion = 2003; | 
 |  |  |         } | 
 |  |  |         Workbook book = null; | 
 |  |  |         if (excelVersion == 2003) { | 
 |  |  |             book = new HSSFWorkbook(inStream); | 
 |  |  |         } | 
 |  |  |         else {  // 当 excel 是 2007 时 | 
 |  |  |             book = new XSSFWorkbook(inStream); | 
 |  |  |         } | 
 |  |  |         Sheet sheet = book.getSheetAt(0); | 
 |  |  |         int totalRows = sheet.getLastRowNum() + 1;    // 总 | 
 |  |  |         Long userId = getUserId(); | 
 |  |  |         Long hostId = getHostId(); | 
 |  |  |         Long deptId = getDeptId(); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         DataFormatter dataFormatter = new DataFormatter(); | 
 |  |  |         for (int i = 2; i < totalRows; i++) { | 
 |  |  |             Cstmr cstmr = new Cstmr(); | 
 |  |  |             Row row = sheet.getRow(i); | 
 |  |  |             // 客户代号 | 
 |  |  |             String uuid = dataFormatter.formatCellValue(row.getCell(0)); | 
 |  |  |             if (!Cools.isEmpty(uuid)) { | 
 |  |  |                 if (cstmrService.selectByUuid(hostId, uuid) != null) { | 
 |  |  | //                    throw new CoolException(uuid + "客户代号已存在,请重新导入"); | 
 |  |  |                     continue; | 
 |  |  |                 } else { | 
 |  |  |                     cstmr.setUuid(uuid); | 
 |  |  |                 } | 
 |  |  |             } else { | 
 |  |  |                 cstmr.setUuid(cstmrService.getUuid(hostId)); | 
 |  |  |             } | 
 |  |  |             // 客户代号 | 
 |  |  |             String name = dataFormatter.formatCellValue(row.getCell(1)); | 
 |  |  |             if (Cools.isEmpty(name)) { | 
 |  |  |                 throw new CoolException("第" + i + "行客户名称不能为空,请重新导入"); | 
 |  |  |             } | 
 |  |  |             cstmr.setName(name); | 
 |  |  |             // 客户类别 | 
 |  |  |             String type = dataFormatter.formatCellValue(row.getCell(2)); | 
 |  |  |             if (Cools.isEmpty(type)) { | 
 |  |  |                 throw new CoolException("第" + i + "行客户类别不能为空,请重新导入"); | 
 |  |  |             } | 
 |  |  |             CstmrType cstmrType = cstmrTypeService.selectByName(hostId, type); | 
 |  |  |             if (null == cstmrType) { | 
 |  |  |                 throw new CoolException("第" + i + "行客户类别不合法,请重新导入"); | 
 |  |  |             } | 
 |  |  |             cstmr.setCstmrType(cstmrType.getId()); | 
 |  |  |             // 客户关系 | 
 |  |  |             cstmr.setRela(dataFormatter.formatCellValue(row.getCell(3))); | 
 |  |  |             // 电话 | 
 |  |  |             cstmr.setTel(dataFormatter.formatCellValue(row.getCell(4))); | 
 |  |  |             // 客户联系人 | 
 |  |  |             cstmr.setContacts(dataFormatter.formatCellValue(row.getCell(5))); | 
 |  |  |             // 备注 | 
 |  |  |             cstmr.setRemarks(dataFormatter.formatCellValue(row.getCell(6))); | 
 |  |  |             // 省 | 
 |  |  |             String province = dataFormatter.formatCellValue(row.getCell(7)); | 
 |  |  |             Dic dicProvince = dicService.selectByName(province); | 
 |  |  |             if (Cools.isEmpty(dicProvince)) { | 
 |  |  |                 throw new CoolException("第" + i + "行省名不合法,请重新导入"); | 
 |  |  |             } | 
 |  |  |             cstmr.setProvince(dicProvince.getCode()); | 
 |  |  |             // 市 | 
 |  |  |             String city = dataFormatter.formatCellValue(row.getCell(8)); | 
 |  |  |             Dic dicCity = dicService.selectByName(city); | 
 |  |  |             if (Cools.isEmpty(dicCity)) { | 
 |  |  |                 throw new CoolException("第" + i + "行市名不合法,请重新导入"); | 
 |  |  |             } | 
 |  |  |             cstmr.setCity(dicCity.getCode()); | 
 |  |  |             // 区 | 
 |  |  |             String district = dataFormatter.formatCellValue(row.getCell(9)); | 
 |  |  |             Dic dicDistrict = dicService.selectByName(district); | 
 |  |  |             if (Cools.isEmpty(dicDistrict)) { | 
 |  |  |                 throw new CoolException("第" + i + "行县名不合法,请重新导入"); | 
 |  |  |             } | 
 |  |  |             cstmr.setDistrict(dicDistrict.getCode()); | 
 |  |  |             // 详细地址 | 
 |  |  |             cstmr.setAddr(dataFormatter.formatCellValue(row.getCell(10))); | 
 |  |  |             // 区分 | 
 |  |  |             cstmr.setType0(dataFormatter.formatCellValue(row.getCell(11))); | 
 |  |  |             cstmr.setHostId(hostId); | 
 |  |  |             cstmr.setDeptId(deptId); | 
 |  |  |             cstmr.setUserId(userId); | 
 |  |  |             cstmr.setStatus(1); | 
 |  |  |             cstmr.setCreateBy(userId); | 
 |  |  |             cstmr.setCreateTime(now); | 
 |  |  |             cstmr.setUpdateBy(userId); | 
 |  |  |             cstmr.setUpdateTime(now); | 
 |  |  |             if (!cstmrService.insert(cstmr)) { | 
 |  |  |                 throw new CoolException("保存失败,请重新导入"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /******************************** 跟进人 ***************************************/ | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private CstmrFollService cstmrFollService; | 
 |  |  |     @Autowired | 
 |  |  |     private UserService userService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/followers/table/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R cstmrFollowersTable(@RequestParam("cstmrId") Long cstmrId) { | 
 |  |  |         List<CstmrFoll> cstmrFolls = cstmrFollService.selectList(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).orderBy("id", false)); | 
 |  |  |         List<FollowerTableVo> result = new ArrayList<>(); | 
 |  |  |         for (CstmrFoll cstmrFoll : cstmrFolls) { | 
 |  |  |             User user = userService.selectById(cstmrFoll.getUserId()); | 
 |  |  |             FollowerTableVo vo = new FollowerTableVo(); | 
 |  |  |             vo.setUserId(user.getId()); | 
 |  |  |             vo.setUserName(user.getNickname()); | 
 |  |  |             result.add(vo); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(result); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/followers/add/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     @Transactional | 
 |  |  |     public R cstmrFollowersAdd(@RequestParam("cstmrId") Long cstmrId, | 
 |  |  |                                @RequestParam("followerIds[]") Long[] followerIds) { | 
 |  |  |         if (Cools.isEmpty(cstmrId, followerIds)) { | 
 |  |  |             return R.parse(BaseRes.PARAM); | 
 |  |  |         } | 
 |  |  |         for (Long userId : followerIds) { | 
 |  |  |             if (cstmrFollService.selectCount(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).eq("user_id", userId)) == 0) { | 
 |  |  |                 CstmrFoll cstmrFoll = new CstmrFoll(); | 
 |  |  |                 cstmrFoll.setCstmrId(cstmrId); | 
 |  |  |                 cstmrFoll.setUserId(userId); | 
 |  |  |                 if (!cstmrFollService.insert(cstmrFoll)) { | 
 |  |  |                     throw new CoolException("添加失败,请联系管理员"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok("添加成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/followers/add/json") | 
 |  |  |     @ManagerAuth | 
 |  |  |     @Transactional | 
 |  |  |     public R cstmrFollowersAddJson(@RequestBody() Map map) { | 
 |  |  |         long cstmrId = Long.valueOf(String.valueOf(map.get("cstmrId"))); | 
 |  |  |         long followerIds = Long.valueOf(String.valueOf(map.get("followerIds"))); | 
 |  |  |         if (Cools.isEmpty(cstmrId, followerIds)) { | 
 |  |  |             return R.parse(BaseRes.PARAM); | 
 |  |  |         } | 
 |  |  |         CstmrFoll cstmrFoll = new CstmrFoll(); | 
 |  |  |         cstmrFoll.setCstmrId(cstmrId); | 
 |  |  |         cstmrFoll.setUserId(followerIds); | 
 |  |  |         if (!cstmrFollService.insert(cstmrFoll)) { | 
 |  |  |             throw new CoolException("添加失败,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         return R.ok("添加成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/cstmr/followers/remove/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R cstmrFollowersRemove(@RequestParam("cstmrId") Long cstmrId, | 
 |  |  |                                   @RequestParam("userId") Long userId) { | 
 |  |  |         if (Cools.isEmpty(cstmrId, userId)) { | 
 |  |  |             return R.parse(BaseRes.PARAM); | 
 |  |  |         } | 
 |  |  |         if (!cstmrFollService.delete(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).eq("user_id", userId))) { | 
 |  |  |             throw new CoolException("删除失败,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         return R.ok("删除成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/cstmr/all/get/kv") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R getDataKV(@RequestParam(required = false) String condition) { | 
 |  |  |         User user = getUser(); assert user != null; | 
 |  |  |         Role role = getRole(); assert role != null; | 
 |  |  |         Page<Cstmr> page = cstmrService.getPage(new Page<>(1, 30) | 
 |  |  |                 , getHostId() | 
 |  |  |                 , role.judgeLeader() ? String.valueOf(user.getDeptId()) : null | 
 |  |  |                 , user.getId() | 
 |  |  |                 , condition); | 
 |  |  |         List<KeyValueVo> vos = new ArrayList<>(); | 
 |  |  |         page.getRecords().forEach(item -> vos.add(new KeyValueVo(item.getName(), item.getId()))); | 
 |  |  |         return R.ok().add(vos); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/cstmr/file/import") | 
 |  |  |     @Transactional | 
 |  |  |     public R fileImport() throws IOException { | 
 |  |  |         File file = new File("D:\\tmp\\跟进人.xls"); | 
 |  |  |         InputStream inStream = new FileInputStream(file); | 
 |  |  |         int excelVersion = 2007; | 
 |  |  |         Workbook book = null; | 
 |  |  |         book = new HSSFWorkbook(inStream); | 
 |  |  |         Sheet sheet = book.getSheetAt(0); | 
 |  |  |         int totalRows = sheet.getLastRowNum() + 1;    // 总 | 
 |  |  |         DataFormatter dataFormatter = new DataFormatter(); | 
 |  |  |         for (int i = 1; i < totalRows; i++) { | 
 |  |  |             System.out.println(i); | 
 |  |  |             Row row = sheet.getRow(i); | 
 |  |  |             // 客户代号 | 
 |  |  |             String username = dataFormatter.formatCellValue(row.getCell(0)); | 
 |  |  |             System.out.println(username); | 
 |  |  |             if (username.equals("甘全") || username.equals("陆晓东") | 
 |  |  |                     || username.equals("张天林") || username.equals("陈鹏") || username.equals("赵雪生") | 
 |  |  |                     || username.equals("张俊良(离职)") | 
 |  |  |             ) { continue;} | 
 |  |  |             String cstmrUuid = dataFormatter.formatCellValue(row.getCell(2)); | 
 |  |  |             System.out.println(cstmrUuid); | 
 |  |  |  | 
 |  |  |             User user = userService.selectOne(new EntityWrapper<User>().eq("nickname", username)); | 
 |  |  |             if (null == user) { | 
 |  |  |                 throw new CoolException(username + "错误"); | 
 |  |  |             } | 
 |  |  |             Cstmr cstmr = cstmrService.selectByUuid(null, cstmrUuid); | 
 |  |  |             if (null == cstmr) { | 
 |  |  |                 throw new CoolException(cstmrUuid + "错误"); | 
 |  |  |             } | 
 |  |  |             CstmrFoll cstmrFoll = new CstmrFoll(); | 
 |  |  |             cstmrFoll.setCstmrId(cstmr.getId()); | 
 |  |  |             cstmrFoll.setUserId(user.getId()); | 
 |  |  |             if (!cstmrFollService.insert(cstmrFoll)) { | 
 |  |  |                 throw new CoolException("添加失败,请联系管理员"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |