中扬CRM客户关系管理系统
#
whycq
2023-08-21 a3a2772ac1091c933b8c7c07c96ea5ecdae3f3d1
src/main/java/com/zy/crm/manager/controller/PriOnlineController.java
@@ -5,21 +5,23 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.crm.manager.entity.Item;
import com.zy.crm.manager.entity.Pri;
import com.zy.crm.manager.entity.PriOnline;
import com.zy.crm.manager.service.ItemService;
import com.zy.crm.manager.service.PriOnlineService;
import com.zy.crm.manager.entity.*;
import com.zy.crm.manager.service.*;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.domain.KeyValueVo;
import com.zy.crm.common.web.BaseController;
import com.zy.crm.manager.service.PriService;
import com.zy.crm.system.entity.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -33,7 +35,7 @@
    private PriService priService;
    @Autowired
    private ItemService itemService;
    private PlanService planService;
    @RequestMapping(value = "/priOnline/{id}/auth")
    @ManagerAuth
@@ -60,7 +62,7 @@
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<PriOnline> wrapper = new EntityWrapper<>();
        wrapper.setSqlSelect("id,title,create_time as createTime,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,status,update_time as updateTime,check_data as checkData,update_user_id as updateUserId,member_id as memberId");
        wrapper.setSqlSelect("id,title,create_time as createTime,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,dept_id as deptId,status,update_time as updateTime,check_data as checkData,update_user_id as updateUserId,member_id as memberId");
        wrapper.in("member_id", getUserRoleBelongsToUserId("allopen"));
        excludeTrash(param);
        convert(param, wrapper);
@@ -70,15 +72,33 @@
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        Long deptId = getDeptId();
        boolean signUserId = false;
        boolean signDeptId = false;
        for (Map.Entry<String, Object> entry : map.entrySet()){
            if (entry.getKey().equals("dept_id")){
                signDeptId = true;
            }
        }
        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 if (entry.getKey().equals("dept_id")){
                if (!val.equals("19")){
                    wrapper.eq(entry.getKey(), val);
                }
            } else if (entry.getKey().equals("user_id") && !signDeptId){
                signUserId = true;
                wrapper.eq(entry.getKey(), val);
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
        if (!signUserId && !signDeptId){
            wrapper.eq("user_id", getUserId());
        }
    }
@@ -101,6 +121,8 @@
        priOnline.setOrderNum(format.format(new Date()));
        //创建人员
        priOnline.setUserId(getUserId());
        //创建人员部门
        priOnline.setDeptId(getDeptId());
        //更新时间
        priOnline.setUpdateTime(new Date());
        //更新人员
@@ -108,12 +130,14 @@
        //状态,未完成
        priOnline.setStatus(0);
        //业务员
        Item item = itemService.selectById(priOnline.getItemId());
        priOnline.setMemberId(item.getMember());
//        Item item = itemService.selectById(priOnline.getItemId());
        Plan plan = planService.selectById(priOnline.getItemId());
        priOnline.setMemberId(plan.getUserId());
        //设置项目流程
        item.setStep(2);
        itemService.updateById(item);
        plan.setStep(2);
        planService.updateById(plan);
        priOnlineService.insert(priOnline);
        return R.ok();
@@ -141,9 +165,11 @@
        priOnline.setUpdateUserId(getUserId());
        //状态,未完成
        priOnline.setStatus(0);
        priOnline.setDeptId(getDeptId());
        //业务员
        Item item = itemService.selectById(priOnline.getItemId());
        priOnline.setMemberId(item.getMember());
//        Item item = itemService.selectById(priOnline.getItemId());
        Plan plan = planService.selectById(priOnline.getItemId());
        priOnline.setMemberId(plan.getUserId());
        priOnlineService.insert(priOnline);
        return R.ok();
@@ -181,14 +207,71 @@
    @RequestMapping(value = "/priOnline/uploadCheck/auth")
    @ManagerAuth
    public R uploadCheck(@RequestBody Map<String,Object> map){
        PriOnline priOnline = priOnlineService.selectById(Long.parseLong(map.get("id").toString()));
    public R uploadCheck(@RequestParam("id") Integer id,
                         @RequestParam("checkData") String checkData,
                         @RequestParam("file") MultipartFile[] files){
        PriOnline priOnline = priOnlineService.selectById(id);
        if (priOnline.getStatus() == 1) {
            return R.error("核价已完成,禁止上传");
        }
        priOnline.setCheckData(map.get("checkData").toString());
        priOnline.setCheckData(checkData);
        MultipartFile file = files[0];
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String path =  ClassUtils.getDefaultClassLoader().getResource("excel/uploadCheckData").getPath();
        //文件后缀名
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        //上传文件名
        String filename = format.format(new Date()) + suffix;
        //最终文件路径
        String filepath = path + "/" + filename;
        //服务器端保存的文件对象
        File serverFile = new File(filepath);
        if(!serverFile.exists()) {
            try {
                //创建文件
                serverFile.createNewFile();
                //将上传的文件写入到服务器端文件内
                file.transferTo(serverFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //保存文件名
        priOnline.setCheckDataFile(filename);
        priOnlineService.updateById(priOnline);
        return R.ok();
    }
    @GetMapping("/priOnline/checkDataDownload/{filename}")
    public void download(@PathVariable String filename, HttpServletResponse response) {
        try {
            ClassPathResource pathResource = new ClassPathResource("excel/uploadCheckData/" + filename);
            File file = pathResource.getFile();
            InputStream inputStream = pathResource.getInputStream();
            //输出文件
            InputStream fis = new BufferedInputStream(inputStream);
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            response.reset();
            //获取文件的名字再浏览器下载页面
            String name = file.getName();
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(name.getBytes(), "iso-8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream out = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            out.write(buffer);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @RequestMapping(value = "/priOnline/delete/auth")
@@ -223,7 +306,7 @@
        for (PriOnline priOnline : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", priOnline.getId());
            map.put("value", priOnline.getOrderNum() + "/" + priOnline.getItemId$() + "/" + priOnline.getMemberId$());
            map.put("value", priOnline.getOrderNum() + "/" + priOnline.getPlanId$() + "/" + priOnline.getMemberId$());
            result.add(map);
        }
        return R.ok(result);