ProjectsController.java 15.4 KB
package com.project.demo.web;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.project.demo.domain.*;
import com.project.demo.mapper.AjaxJson;
import com.project.demo.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;

/**
 * Created by xuwenhao on 2018/4/10.
 */
@Controller
@RequestMapping("projects")
public class ProjectsController {
    @Autowired
    private ProjectsService projectsService;
    @Autowired
    private SalesManService salesManService;
    @Autowired
    private UsersService usersService;
    @Autowired
    private DockingManService dockingManService;
    @Autowired
    private BelongsService belongsService;
    @Autowired
    private TrackingRecordService trackingRecordService;

    @RequestMapping(method = RequestMethod.GET)
    public String findAll() {
        return "/project/index";
    }

    @RequestMapping(value = "/projectsList",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String projectsList(final HttpSession session, final HttpServletRequest request){
        Users currentUser = (Users) session.getAttribute("users");
        final Map<String,Object> params = new HashMap<>();
        DataTablePageUtil<Projects> dataTable = new DataTablePageUtil<Projects>(request);
        PageHelper.startPage(dataTable.getPage_num(),dataTable.getPage_size());
        if(currentUser.getLevel()!=0){
            List<Integer> projectsIds = projectsService.usersProjects(currentUser.getId());
            params.put("projectsIds",projectsIds);
        }

        final List<Projects> projectsList = projectsService.search(params);
        PageInfo<Projects> pageInfo = new PageInfo<>(projectsList, 2);
        //封装数据给DataTables
        dataTable.setDraw(dataTable.getDraw());
        dataTable.setData(pageInfo.getList());
        dataTable.setRecordsTotal((int)pageInfo.getTotal());
        dataTable.setRecordsFiltered(dataTable.getRecordsTotal());
        //返回数据到页面
        String jsonObject = JSONObject.toJSONString(dataTable);
        return jsonObject;
    }

    @RequestMapping(value = "/{projectId}/details", method = RequestMethod.GET)
    public String edit(final HttpSession session, @PathVariable Integer projectId , Model model){
        Users currentUser = (Users) session.getAttribute("users");
        Projects thisproject = projectsService.findById(projectId);
        List<Integer> usersIdList = projectsService.salesMans(projectId);
        if(currentUser.getLevel()==0 || usersIdList.contains(currentUser.getId())){
            model.addAttribute("thisproject", thisproject);
            return "/project/details";
        }else{
            session.removeAttribute("users");
            return "redirect:/welcome/index";
        }
    }

    @RequestMapping(value = "/projectContent",method = RequestMethod.POST)
    @ResponseBody
    public Projects projectContent(HttpSession session , @RequestParam Integer projectId){
        Users currentUser = (Users) session.getAttribute("users");
        Projects projects = projectsService.findById(projectId);
        return projects;
    }

    @RequestMapping(value = "/personnel",method = RequestMethod.POST)
    @ResponseBody
    public Personnel personnel(HttpSession session , @RequestParam Integer projectId){
        Personnel personnel = new Personnel();
        Users currentUser = (Users) session.getAttribute("users");

        //找到创建人
        Projects projects = projectsService.findById(projectId);
        Users createMan = usersService.findById(projects.getUsersId());
        personnel.setName(createMan.getName());
        personnel.setMobile(createMan.getMobile());

        final Map<String,Object> params = new HashMap<>();
        params.put("projectsId",projectId);

        //找到关联业务
        List<PersonnelSales> personnelSalesList = new ArrayList<>();
        List<SalesMan> salesManList = salesManService.search(params);
        for(int i = 0;i<salesManList.size();i++){
            Users salesMan = usersService.findById(salesManList.get(i).getUsersId());
            PersonnelSales personnelSales = new PersonnelSales();
            personnelSales.setName(salesMan.getName());
            personnelSales.setMobile(salesMan.getMobile());
            personnelSalesList.add(personnelSales);
        }

        //找到客户对接人
        List<PersonnelDocking> personnelDockingList = new ArrayList<>();
        List<DockingMan> dockingManList = dockingManService.search(params);
        for(int j = 0;j<dockingManList.size();j++){
            PersonnelDocking personnelDocking = new PersonnelDocking();
            personnelDocking.setId(dockingManList.get(j).getId());
            personnelDocking.setName(dockingManList.get(j).getName());
            personnelDocking.setMobile(dockingManList.get(j).getMobile());
            personnelDocking.setGender(dockingManList.get(j).getGender());
            personnelDocking.setPosition(dockingManList.get(j).getPosition());
            personnelDockingList.add(personnelDocking);
        }
        if(personnelSalesList.size()>0) {
            personnel.setPersonnelSales(personnelSalesList);
        }
        if(personnelDockingList.size()>0) {
            personnel.setPersonnelDocking(personnelDockingList);
        }
        return personnel;
    }

    @RequestMapping(value = "/updateProjectsName",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson updateProjectsName(HttpSession session , @RequestParam Integer projectId, @RequestParam String projectName){
        AjaxJson ajaxJson = new AjaxJson();
        String result;
        if(projectName == null || projectName.equals("")){
            ajaxJson.setCode(1);
            ajaxJson.setMsg("项目名称不能为空");
        }else{
            final Map<String,Object> params = new HashMap<>();
            params.put("projectName",projectName);
            projectsService.updateProjects(projectId,params);
            ajaxJson.setCode(0);
            ajaxJson.setMsg("设置成功");
        }
        return ajaxJson;
    }

    @RequestMapping(value = "/updateProjectsRemark",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson updateProjectsRemark(HttpSession session , @RequestParam Integer projectId, @RequestParam String projectRemark){
        AjaxJson ajaxJson = new AjaxJson();
        if(projectRemark == null || projectRemark.equals("")){
            ajaxJson.setCode(1);
            ajaxJson.setMsg("项目描述不能为空");
        }else{
            final Map<String,Object> params = new HashMap<>();
            params.put("projectRemark",projectRemark);
            projectsService.updateProjects(projectId,params);
            ajaxJson.setCode(0);
            ajaxJson.setMsg("设置成功");
        }
        return ajaxJson;
    }

    @RequestMapping(value = "/salesList",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String salesList(final HttpSession session, final HttpServletRequest request,@RequestParam Integer projectId){
        Users currentUser = (Users) session.getAttribute("users");
        final Map<String,Object> params = new HashMap<>();

        DataTablePageUtil<PersonnelSales> dataTable = new DataTablePageUtil<PersonnelSales>(request);
        PageHelper.startPage(dataTable.getPage_num(),dataTable.getPage_size());

        Personnel personnel = personnel(session,projectId);
        List<PersonnelSales> personnelSales;
        if(personnel.getPersonnelSales() != null){
            personnelSales = personnel.getPersonnelSales();
        }else{
            personnelSales = new ArrayList<>();
        }
        PageInfo<PersonnelSales> pageInfo = new PageInfo<>(personnelSales, 2);
        dataTable.setDraw(dataTable.getDraw());
        dataTable.setData(pageInfo.getList());
        dataTable.setRecordsTotal((int)pageInfo.getTotal());
        dataTable.setRecordsFiltered(dataTable.getRecordsTotal());
        String jsonObject = JSONObject.toJSONString(dataTable);
        return jsonObject;
    }

    @RequestMapping(value = "/removeSales",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson removeSales(HttpSession session , @RequestParam Integer projectId, @RequestParam String mobiles){
        AjaxJson ajaxJson = new AjaxJson();
        String[] mobilesArray = mobiles.split(",");
        Users users = new Users();
        for (int i = 0; i<mobilesArray.length; i++) {
            users = usersService.findByMobile(mobilesArray[i]);
            salesManService.delete(users.getId(),projectId);
        }
        ajaxJson.setCode(0);
        ajaxJson.setMsg("删除成功");
        return ajaxJson;
    }

    @RequestMapping(value = "/usersList",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String usersList(final HttpSession session, final HttpServletRequest request,@RequestParam Integer projectId){
        Users currentUser = (Users) session.getAttribute("users");
        final Map<String,Object> params = new HashMap<>();
        DataTablePageUtil<Users> dataTable = new DataTablePageUtil<Users>(request);
        PageHelper.startPage(dataTable.getPage_num(),dataTable.getPage_size());
        List<Users> usersList = usersService.search(params);
        Integer createManId= projectsService.findById(projectId).getUsersId();
        Users createUsers = usersService.findById(createManId);
        Personnel personnel = personnel(session,projectId);
        List<PersonnelSales> personnelSales;
        if(personnel.getPersonnelSales()!=null){
            personnelSales = personnel.getPersonnelSales();
        }else{
            personnelSales =new ArrayList<>();
        }
        PersonnelSales createPersonnelSales = new PersonnelSales();
        createPersonnelSales.setName(createUsers.getName());
        createPersonnelSales.setMobile(createUsers.getMobile());
        personnelSales.add(createPersonnelSales);
        for(int i=0;i<personnelSales.size();i++) {
            String personnePobile = personnelSales.get(i).getMobile();
            for (int j = 0; j < usersList.size(); j++) {
                String usersMobile = usersList.get(j).getMobile();
                if(usersMobile.equals(personnePobile)){
                    usersList.remove(usersList.get(j));
                }
            }
        }
        PageInfo<Users> pageInfo = new PageInfo<>(usersList, 2);
        //封装数据给DataTables
        dataTable.setDraw(dataTable.getDraw());
        dataTable.setData(pageInfo.getList());
        dataTable.setRecordsTotal((int)pageInfo.getTotal());
        dataTable.setRecordsFiltered(dataTable.getRecordsTotal());
        //返回数据到页面
        String jsonObject = JSONObject.toJSONString(dataTable);
        return jsonObject;
    }

    @RequestMapping(value = "/addSales",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson addSales(HttpSession session , @RequestParam Integer projectId, @RequestParam String mobiles){
        AjaxJson ajaxJson = new AjaxJson();
        String[] mobilesArray = mobiles.split(",");
        Users users = new Users();
        SalesMan salesMan = new SalesMan();
        for (int i = 0; i<mobilesArray.length; i++) {
            users = usersService.findByMobile(mobilesArray[i]);
            salesMan.setUsersId(users.getId());
            salesMan.setProjectsId(projectId);
            salesMan.setState("1");
            salesManService.insert(salesMan);
        }
        ajaxJson.setCode(0);
        ajaxJson.setMsg("添加成功");
        return ajaxJson;
    }

    @RequestMapping(value = "/dockingList",method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public String dockingList(final HttpSession session, final HttpServletRequest request,@RequestParam Integer projectId){
        Users currentUser = (Users) session.getAttribute("users");
        final Map<String,Object> params = new HashMap<>();
        DataTablePageUtil<PersonnelDocking> dataTable = new DataTablePageUtil<PersonnelDocking>(request);
        PageHelper.startPage(dataTable.getPage_num(),dataTable.getPage_size());
        Personnel personnel = personnel(session,projectId);
        List<PersonnelDocking> personnelDockingList;
        if(personnel.getPersonnelDocking() != null){
            personnelDockingList = personnel.getPersonnelDocking();
        }else{
            personnelDockingList = new ArrayList<>();
        }
        PageInfo<PersonnelDocking> pageInfo = new PageInfo<>(personnelDockingList, 2);
        dataTable.setDraw(dataTable.getDraw());
        dataTable.setData(pageInfo.getList());
        dataTable.setRecordsTotal((int)pageInfo.getTotal());
        dataTable.setRecordsFiltered(dataTable.getRecordsTotal());
        String jsonObject = JSONObject.toJSONString(dataTable);
        return jsonObject;
    }

    @RequestMapping(value = "/removeDocking",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson removeDocking(HttpSession session , @RequestParam Integer projectId, @RequestParam String ids){
        AjaxJson ajaxJson = new AjaxJson();
        String[] idsArray = ids.split(",");
        Users users = new Users();
        for (int i = 0; i<idsArray.length; i++) {
            users = usersService.findByMobile(idsArray[i]);
           // salesManService.delete(users.getId(),projectId);
            dockingManService.delete(Integer.parseInt(idsArray[i]));
        }
        ajaxJson.setCode(0);
        ajaxJson.setMsg("删除成功");
        return ajaxJson;
    }

    @RequestMapping(value = "/addDocking",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson addSales(HttpSession session , @RequestParam Integer projectId, @RequestParam String name,@RequestParam String position,@RequestParam String gender,@RequestParam String mobile){
        AjaxJson ajaxJson = new AjaxJson();
        DockingMan dockingMan = new DockingMan();
        dockingMan.setName(name);
        dockingMan.setProjectsId(projectId);
        dockingMan.setMobile(mobile);
        dockingMan.setPosition(position);
        dockingMan.setGender(gender);
        dockingManService.insert(dockingMan);

        ajaxJson.setCode(0);
        ajaxJson.setMsg("添加成功");
        return ajaxJson;
    }

    @RequestMapping(value = "/addTracks",method = RequestMethod.POST)
    @ResponseBody
    public AjaxJson addTracks(HttpSession session , @RequestParam Integer projectId, @RequestParam String projectTracks,@RequestParam String projectTracksTime){
        AjaxJson ajaxJson = new AjaxJson();
        Users currentUser = (Users) session.getAttribute("users");
        String[] projectTracksTimeArray = projectTracksTime.split("-");
        Date tracksDate = new Date(Integer.parseInt(projectTracksTimeArray[0])-1900,Integer.parseInt(projectTracksTimeArray[1])-1,Integer.parseInt(projectTracksTimeArray[2]));
        TrackingRecord trackingRecord = new TrackingRecord();
        trackingRecord.setProjectsId(projectId);
        trackingRecord.setUsersId(currentUser.getId());
        trackingRecord.setExpectTime(tracksDate);
        trackingRecord.setState("进行中");
        trackingRecord.setContent(projectTracks);
        trackingRecordService.insert(trackingRecord);
        ajaxJson.setCode(0);
        ajaxJson.setMsg("添加成功");
        return ajaxJson;
    }







}