|  |  |  | 
|---|
|  |  |  | 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.CstmrFollowerTableVo; | 
|---|
|  |  |  | 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.service.CstmrFollService; | 
|---|
|  |  |  | import com.zy.crm.manager.service.CstmrService; | 
|---|
|  |  |  | import com.zy.crm.manager.service.CstmrTypeService; | 
|---|
|  |  |  | 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.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.InputStream; | 
|---|
|  |  |  | import java.io.*; | 
|---|
|  |  |  | import java.lang.reflect.Array; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | 
|---|
|  |  |  | private CstmrTypeService cstmrTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DicService dicService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DeptService deptService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(cstmrService.selectById(String.valueOf(id))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/list/auth") | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/page/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()); | 
|---|
|  |  |  | 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("未查询到跟进人信息!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(cstmrService.selectPage(new Page<>(curr, limit), wrapper)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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: | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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") | 
|---|
|  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/delete/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R delete(@RequestParam(value="ids[]") Long[] ids){ | 
|---|
|  |  |  | for (Long id : ids){ | 
|---|
|  |  |  | for (Long id : ids){ | 
|---|
|  |  |  | cstmrService.deleteById(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/export/auth") | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/delete/one/{id}") | 
|---|
|  |  |  | @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)); | 
|---|
|  |  |  | public R deleteOne(@PathVariable Long id) { | 
|---|
|  |  |  | cstmrService.deleteById(id); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmrQuery/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/cstmr/followers/table/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R get(@RequestParam("cstmrId") Long cstmrId) { | 
|---|
|  |  |  | List<CstmrFoll> cstmrFolls = cstmrFollService.selectList(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId)); | 
|---|
|  |  |  | List<CstmrFollowerTableVo> result = new ArrayList<>(); | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | CstmrFollowerTableVo vo = new CstmrFollowerTableVo(); | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|