中扬CRM客户关系管理系统
LSH
2023-08-03 d699794bb024ae7d5bb66fa24070745eb92c9b05
#核价管理功能完善
8个文件已修改
108 ■■■■ 已修改文件
src/main/java/com/zy/crm/manager/controller/OrderController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/PriOnlineController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/entity/Order.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/entity/PriOnline.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/PriOnlineMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/plan/plan.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/priOnline/priOnline.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/priOnline/priOnline.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -120,6 +120,23 @@
        return R.ok(result);
    }
    @RequestMapping(value = "/orderQueryName/auth")
    @ManagerAuth
    public R queryName(String condition) {
        EntityWrapper<Order> wrapper = new EntityWrapper<>();
        wrapper.like("name", condition);
        wrapper.eq("user_id",getUserId());
        Page<Order> page = orderService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (Order order : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", order.getId());
            map.put("value", order.getName());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/order/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
src/main/java/com/zy/crm/manager/controller/PriOnlineController.java
@@ -6,9 +6,11 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.crm.manager.entity.Item;
import com.zy.crm.manager.entity.Order;
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.OrderService;
import com.zy.crm.manager.service.PriOnlineService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
@@ -17,6 +19,7 @@
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;
@@ -38,7 +41,7 @@
    private PriService priService;
    @Autowired
    private ItemService itemService;
    private OrderService orderService;
    @RequestMapping(value = "/priOnline/{id}/auth")
    @ManagerAuth
@@ -65,7 +68,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);
@@ -75,15 +78,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());
        }
    }
@@ -106,6 +127,8 @@
        priOnline.setOrderNum(format.format(new Date()));
        //创建人员
        priOnline.setUserId(getUserId());
        //创建人员部门
        priOnline.setDeptId(getDeptId());
        //更新时间
        priOnline.setUpdateTime(new Date());
        //更新人员
@@ -113,12 +136,14 @@
        //状态,未完成
        priOnline.setStatus(0);
        //业务员
        Item item = itemService.selectById(priOnline.getItemId());
        priOnline.setMemberId(item.getMember());
//        Item item = itemService.selectById(priOnline.getItemId());
        Order order = orderService.selectById(priOnline.getItemId());
        priOnline.setMemberId(order.getUserId());
        //设置项目流程
        item.setStep(2);
        itemService.updateById(item);
        order.setStep(2);
        orderService.updateById(order);
        priOnlineService.insert(priOnline);
        return R.ok();
@@ -147,8 +172,9 @@
        //状态,未完成
        priOnline.setStatus(0);
        //业务员
        Item item = itemService.selectById(priOnline.getItemId());
        priOnline.setMemberId(item.getMember());
//        Item item = itemService.selectById(priOnline.getItemId());
        Order order = orderService.selectById(priOnline.getItemId());
        priOnline.setMemberId(order.getUserId());
        priOnlineService.insert(priOnline);
        return R.ok();
@@ -285,7 +311,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.getOrderId$() + "/" + priOnline.getMemberId$());
            result.add(map);
        }
        return R.ok(result);
src/main/java/com/zy/crm/manager/entity/Order.java
@@ -173,6 +173,12 @@
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    @ApiModelProperty(value= "项目进度流程{1:项目创建,2:核价处理,3:产品费用明细,4:报价预算单,5:报价单}")
    @TableField("step")
    private int step;
    /**
     * 注释
     */
@@ -181,7 +187,7 @@
    public Order() {}
    public Order(Long hostId,Long deptId,Long userId,Long cstmrId,String uuid,String name,Double money,Long company,String remarks,Long director,String province,String city,String district,String town,String addr,String files,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public Order(Long hostId,Long deptId,Long userId,Long cstmrId,String uuid,String name,Double money,Long company,String remarks,Long director,String province,String city,String district,String town,String addr,String files,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,Integer step,String memo) {
        this.hostId = hostId;
        this.deptId = deptId;
        this.userId = userId;
@@ -203,6 +209,7 @@
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.step = step;
        this.memo = memo;
    }
src/main/java/com/zy/crm/manager/entity/PriOnline.java
@@ -8,6 +8,7 @@
import com.core.common.SpringUtils;
import com.zy.crm.manager.service.ItemService;
import com.zy.crm.manager.service.OrderService;
import com.zy.crm.system.entity.User;
import com.zy.crm.system.service.UserService;
import org.springframework.format.annotation.DateTimeFormat;
@@ -70,6 +71,10 @@
    @TableField("user_id")
    private Long userId;
    @ApiModelProperty(value= "创建人员用户部门")
    @TableField("dept_id")
    private Long deptId;
    @ApiModelProperty(value= "状态{0:未完成,1:已完成}")
    @TableField("status")
    private Integer status;
@@ -124,11 +129,20 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public String getItemId$() {
        ItemService itemService = SpringUtils.getBean(ItemService.class);
        Item item = itemService.selectById(this.itemId);
        if (!Cools.isEmpty(item)){
            return String.valueOf(item.getName());
//    public String getItemId$() {
//        ItemService itemService = SpringUtils.getBean(ItemService.class);
//        Item item = itemService.selectById(this.itemId);
//        if (!Cools.isEmpty(item)){
//            return String.valueOf(item.getName());
//        }
//        return null;
//    }
    public String getOrderId$() {
        OrderService orderService = SpringUtils.getBean(OrderService.class);
        Order order = orderService.selectById(this.itemId);
        if (!Cools.isEmpty(order)){
            return String.valueOf(order.getName());
        }
        return null;
    }
src/main/resources/mapper/PriOnlineMapper.xml
@@ -13,6 +13,7 @@
        <result column="order_num" property="orderNum" />
        <result column="template_name" property="templateName" />
        <result column="user_id" property="userId" />
        <result column="dept_id" property="deptId" />
        <result column="status" property="status" />
        <result column="update_time" property="updateTime" />
        <result column="check_data" property="checkData" />
@@ -28,6 +29,7 @@
        <result column="order_num" property="orderNum" />
        <result column="template_name" property="templateName" />
        <result column="user_id" property="userId" />
        <result column="dept_id" property="deptId" />
        <result column="status" property="status" />
        <result column="update_time" property="updateTime" />
    </resultMap>
src/main/webapp/static/js/plan/plan.js
@@ -197,7 +197,7 @@
        }
    });
    //演示多文件列表
    //多文件列表
    var uploadListIns = upload.render({
        elem: '#data-btn-file2'
        ,elemList: $('#data-btn-file3') //列表元素对象
@@ -261,7 +261,7 @@
                ,tds = tr.children();
            tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
        }
        ,progress: function(n, elem, e, index){ //注意:index 参数为 layui 2.6.6 新增
        ,progress: function(n, elem, e, index){
            element.progress('progress-demo-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
        }
    });
src/main/webapp/static/js/priOnline/priOnline.js
@@ -86,7 +86,7 @@
            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
            ,{field: 'templateName', align: 'center',title: '模板名'}
            ,{field: 'orderNum', align: 'center',title: '订单号'}
            ,{field: 'itemId$', align: 'center',title: '项目名'}
            ,{field: 'orderId$', align: 'center',title: '项目名'}
            ,{field: 'createTime$', align: 'center',title: '创建时间'}
            ,{field: 'updateTime$', align: 'center',title: '更新时间'}
            ,{field: 'status$', align: 'center',title: '状态'}
src/main/webapp/views/priOnline/priOnline.html
@@ -98,10 +98,10 @@
          <label class="layui-form-label layui-form-required">项目名: </label>
          <div class="layui-input-block cool-auto-complete">
            <input class="layui-input" name="itemId" placeholder="请输入项目名" style="display: none" lay-verify="required">
            <input id="itemId$" name="itemId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目名" onfocus=this.blur()>
            <input id="orderId$" name="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入项目名" onfocus=this.blur()>
            <div class="cool-auto-complete-window">
              <input class="cool-auto-complete-window-input" data-key="itemQueryBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">
              <select class="cool-auto-complete-window-select" data-key="itemQueryBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
              <input class="cool-auto-complete-window-input" data-key="orderQueryNameBydirector" onkeyup="autoLoad(this.getAttribute('data-key'))">
              <select class="cool-auto-complete-window-select" data-key="orderQueryNameBydirectorSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
              </select>
            </div>
          </div>