xinyb
2024-09-19 18ffbca9acaccd5099a7a63652f52210f59a7e40
Merge remote-tracking branch 'origin/dev' into dev
1个文件已添加
11个文件已修改
317 ■■■■■ 已修改文件
WebRoot/js/index/funcLink.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/api/schedule/AppVersion.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/base/action/CrmController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/base/entity/T482104Entity.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/base/service/CrmServiceIfc.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/base/service/CrmServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/action/CluesController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/entity/AssignCluesEntity.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/entity/ContactEntity.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/entity/T481101Entity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/service/CluesServiceIfc.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/crm/clues/service/CluesServiceImpl.java 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/js/index/funcLink.js
@@ -1585,16 +1585,16 @@
    var wp = $.trim(strPam).length > 0 ? ("wherePan=" + strPam) : "";
    let wp = $.trim(strPam).length > 0 ? (strPam) : "";
    if (ef != undefined && ef != null && ef != "")
        wp = (wp == "") ? "wherePan=" + encodeURI(encodeURI(ef)) : wp + " and "
        wp = (wp == "") ?  encodeURI(encodeURI(ef)) : wp + " and "
            + encodeURI(encodeURI(ef));
    try {
        closeLoading();
        parent.addTab("", f, t, wp);
        parent.addTab("", f, t, "wherePan=" +encodeURIComponent(wp));
    } catch (e) {
        closeLoading();
        showWindow("/app" + spellPath + f + "/" + t + "/index.jsp?" + wp, "");
        showWindow("/app" + spellPath + f + "/" + t + "/index.jsp?" + "wherePan=" +wp, "");
    }
}
src/com/yc/api/schedule/AppVersion.java
@@ -6,4 +6,5 @@
public class AppVersion {
    String android;
    String ios;
    String hmos;//dev
}
src/com/yc/crm/base/action/CrmController.java
@@ -45,7 +45,7 @@
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            callBackMessage.setInfo(crmServiceIfc.getBaseInfo(request.getSession().getAttribute(SessionKey.USERCODE) + ""));
            callBackMessage.setInfo(crmServiceIfc.getBaseInfo(request.getSession()));
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        } catch (Exception e) {
@@ -55,7 +55,27 @@
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 获取系统的邮箱及姓名(用户,客户,线索)
     *
     * @param request
     * @return
     */
    @RequestMapping("/emailList.do")
    public @ResponseBody Object mailUserInfo(@RequestBody @Nullable Page page, HttpServletRequest request) {
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            callBackMessage.setInfo(crmServiceIfc.getMailUserInfo(page.getKey()));
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        } catch (Exception e) {
            callBackMessage.sendErrorMessage(this.getErrorMsg(e));
            return callBackMessage.toJSONObject();
        } finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 获取用户,以部门分组树形结构显示
     *
src/com/yc/crm/base/entity/T482104Entity.java
@@ -12,6 +12,7 @@
    private Integer id;
    private String comment;
    private String attachList;
    private String imageList;
    private String createTime;
    private String senders;//通知人员
    private String updateTime;
@@ -19,4 +20,5 @@
    private Integer pageCount;
    private Integer enableFlag;//是否可编辑和删除
    private List<FileEntity> files;
    private List<FileEntity> imageFiles;
}
src/com/yc/crm/base/service/CrmServiceIfc.java
@@ -8,7 +8,7 @@
public interface CrmServiceIfc {
    Map getBaseInfo(String userCode);
    Map getBaseInfo(HttpSession session);
    Object getUserInfo(HttpSession session, Page page);
@@ -41,4 +41,6 @@
    void commentDel(Integer id);
    List<T482112Entity> listByMonth(String date,String dbi,String formid);
    Object getMailUserInfo(String key);
}
src/com/yc/crm/base/service/CrmServiceImpl.java
@@ -8,6 +8,7 @@
import com.yc.exception.ApplicationException;
import com.yc.service.BaseService;
import com.yc.utils.DateUtil;
import com.yc.utils.SessionKey;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -27,8 +28,10 @@
@Service
public class CrmServiceImpl extends BaseService implements CrmServiceIfc {
    @Override
    public Map getBaseInfo(String userCode) {
    public Map getBaseInfo(HttpSession session) {
        String userCode=session.getAttribute(SessionKey.USERCODE).toString();
        HashMap map = new HashMap();
        map.put("isAdmin", ("SuperUser".equalsIgnoreCase(session.getAttribute(SessionKey.USERTYPE) + "") || "DeveloperUser".equalsIgnoreCase(session.getAttribute(SessionKey.USERTYPE) + "")) ? 1 : 0);
        //----系统参数
        List<SysdictEntity> list = this.jdbcTemplate.query("select dictid,interValue as id,dictvalue as name from _sysdict where dictid in(-48013000,-48013001,-48013002,-48013003,-48013004,-48013005,-48013006,-48013007,-48013008,-48013009,-48013010,-48013011,-48013012,-48013013,-48013014,-48013015)\n" +
                "order by dictid desc,sequence\n ", new BeanPropertyRowMapper<>(SysdictEntity.class));
@@ -101,12 +104,24 @@
    }
    @Override
    public Object getMailUserInfo(String key) {
            //--取用户
          String  sql = " select ccCode,ccName,userCode,userName,email from _sysuser  where email like '%" + key + "%' or userName like '%" + key + "%' \n" +
                    "union all\n" +
                    //--取联系人(线索,客户)
                    " select '' as ccCode,'' as ccName,'' as userCode,name as userName,email from t482103 where email like '%" + key + "%' or name like '%" + key + "%'\n";
        List<UserEntity> query = this.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(UserEntity.class));
        return query;
    }
    @Override
    public Object getUserInfo(HttpSession session, Page page) {
        // String ccCode = (String) session.getAttribute(SessionKey.CCCODE);
        String where = "";
        if (page != null && StringUtils.isNotBlank(page.getKey())) {
            where = " where email like '%" + page.getKey() + "%' or userName like '%" + page.getKey() + "%'";
            where = " where ccCode='"+page.getKey()+"' or email like '%" + page.getKey() + "%' or userName like '%" + page.getKey() + "%'";
        }
        String sql = " select ccCode,ccName,userCode,userName,email from _sysuser " + where + "order by ccCode asc";
        List<UserEntity> query = this.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(UserEntity.class));
@@ -426,6 +441,7 @@
                ",@id int     \n" +
                ",@comment varchar(3000)  \n" +
                ",@attachList varchar(300)  \n" +
                ",@imageList varchar(300)  \n" +
                ",@senders varchar(300)  \n" +
                ",@createTime datetime\n" +
                ",@updateTime datetime\n" +
@@ -436,6 +452,7 @@
                "@id=" + entity.getId() + ",   \n" +
                "@comment=" + GridUtils.prossSqlParm(entity.getComment()) + "      ,\n" +
                "@attachList=" + GridUtils.prossSqlParm(entity.getAttachList()) + "      ,\n" +
                "@imageList=" + GridUtils.prossSqlParm(entity.getImageList()) + "      ,\n" +
                "@senders=" + GridUtils.prossSqlParm(entity.getSenders()) + "      ,\n" +
                "@createTime=getdate(),\n" +
                "@updateTime=getdate()\n" +
@@ -447,6 +464,7 @@
                ",refId  \n" +
                ",comment \n" +
                ",attachList\n" +
                ",imageList\n" +
                ",senders\n" +
                ",createTime\n" +
                ",updateTime)values(" +
@@ -455,6 +473,7 @@
                ",@refId  \n" +
                ",@comment\n" +
                ",@attachList\n" +
                ",@imageList\n" +
                ",@senders\n" +
                ",@createTime\n" +
                ",@updateTime)" +
@@ -467,6 +486,7 @@
                ",refId=@refId  \n" +
                ",comment=@comment \n" +
                ",attachList=@attachList\n" +
                ",imageList=@imageList\n" +
                ",senders=@senders\n" +
                ",updateTime=@updateTime where id=@id\n" +
                "end\n";
@@ -936,6 +956,8 @@
                ",id,refCode,refName       \n" +
                ",title         \n" +
                ",color         \n" +
                ",userCode         \n" +
                ",userName         \n" +
                ",participant_id\n" +
                ",start_time    \n" +
                ",end_time      \n" +
@@ -950,6 +972,8 @@
                ",num        " +
                ",create_time   \n" +
                ",update_time   \n" +
                ",pinFlag   \n" +
                ",completeFlag   \n" +
                ",@TotalRowCount as totalRowCount ,@pageCount as pageCount       ";
        String sql = "set nocount on ; \n" +
@@ -1000,6 +1024,7 @@
                " id,       \n" +
                "comment,   \n" +
                "attachList,\n" +
                "imageList,\n" +
                "convert(varchar(19), createTime,120) as createTime,senders,\n" +
                "convert(varchar(19), updateTime,120)  as updateTime" +
                ",case when usercode=@usercode then 1 else 0 end as enableFlag,@TotalRowCount as totalRowCount ,@pageCount as pageCount       ";
@@ -1026,6 +1051,13 @@
                fileStructEntity.setFileStr(x.getAttachList());
                x.setFiles(Utils.getFileEntities(fileStructEntity));
            }
            if (StringUtils.isNotBlank(x.getImageList())) {
                FileStructEntity fileStructEntity = new FileStructEntity();
                fileStructEntity.setDbid(request.getDbid());
                fileStructEntity.setFormid(request.getFormId() + "");
                fileStructEntity.setFileStr(x.getImageList());
                x.setImageFiles(Utils.getFileEntities(fileStructEntity));
            }
        });
        Response response = new Response();
        response.setTotalCount((list != null && list.size() > 0) ? list.get(0).getTotalRowCount() : 0);
src/com/yc/crm/clues/action/CluesController.java
@@ -32,7 +32,27 @@
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
           cluesServiceIfc.assign(assignClues);
           cluesServiceIfc.assign(assignClues,request.getSession().getAttribute(SessionKey.USERNAME)+"");
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        }catch (Exception e){
            callBackMessage.sendErrorMessage(this.getErrorMsg(e));
            return callBackMessage.toJSONObject();
        }finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 新分配线索
     * @param request
     * @return
     */
    @RequestMapping("/newAssign.do")
    public @ResponseBody Object newAssign(@RequestBody AssignCluesEntity assignClues, HttpServletRequest request){
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            cluesServiceIfc.newAssign(assignClues);
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        }catch (Exception e){
@@ -128,6 +148,74 @@
        }
    }
    /**
     * 删除线索
     *
     * @param request
     * @return
     */
    @RequestMapping("/del.do")
    public @ResponseBody Object cluesDel(String docCode, HttpServletRequest request) {
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            cluesServiceIfc.cluesDel(docCode);
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        } catch (Exception e) {
            callBackMessage.sendErrorMessage(this.getErrorMsg(e));
            return callBackMessage.toJSONObject();
        } finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 无效线索
     *
     * @param request
     * @return
     */
    @RequestMapping("/fail.do")
    public @ResponseBody Object cluesFail(@RequestBody T481104Entity entity, HttpServletRequest request) {
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            cluesServiceIfc.cluesFail(entity);
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        } catch (Exception e) {
            callBackMessage.sendErrorMessage(this.getErrorMsg(e));
            return callBackMessage.toJSONObject();
        } finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 线索联系人列表
     * @param request
     * @return
     */
    @RequestMapping("/contactList.do")
    public @ResponseBody Object contactList(@RequestBody CluesRequestEntity cluesRequest, HttpServletRequest request){
        CallBackMessage callBackMessage = new CallBackMessage();
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            cluesRequest.setDbid(request.getSession().getAttribute(SessionKey.DATA_BASE_ID)+"");
            //当前用户
            cluesRequest.setCreateUsercode(request.getSession().getAttribute(SessionKey.USERCODE)+"");
            //所属部门
            cluesRequest.setCccode(request.getSession().getAttribute(SessionKey.CCCODE)+"");
            cluesRequest.setFormId(481101);
            callBackMessage.setInfo(cluesServiceIfc.contactList(cluesRequest));
            callBackMessage.sendSuccessMessageByDefault();
            return callBackMessage.toJSONObject();
        }catch (Exception e){
            callBackMessage.sendErrorMessage(this.getErrorMsg(e));
            return callBackMessage.toJSONObject();
        }finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * 线索列表
     * @param request
     * @return
@@ -138,6 +226,10 @@
        try {
            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
            cluesRequest.setDbid(request.getSession().getAttribute(SessionKey.DATA_BASE_ID)+"");
            //当前用户
            cluesRequest.setCreateUsercode(request.getSession().getAttribute(SessionKey.USERCODE)+"");
            //所属部门
            cluesRequest.setCccode(request.getSession().getAttribute(SessionKey.CCCODE)+"");
            cluesRequest.setFormId(481101);
            callBackMessage.setInfo(cluesServiceIfc.getAllClues(cluesRequest));
            callBackMessage.sendSuccessMessageByDefault();
@@ -165,6 +257,8 @@
            clues.setCompanyname(request.getSession().getAttribute(SessionKey.COMPANY_NAME)+"");
            clues.setCreateUsercode(request.getSession().getAttribute(SessionKey.USERCODE)+"");
            clues.setCreateUserName(request.getSession().getAttribute(SessionKey.USERNAME)+"");
            clues.setCcCode(request.getSession().getAttribute(SessionKey.CCCODE)+"");
            clues.setCcName(request.getSession().getAttribute(SessionKey.CCNAME)+"");
            clues.setFormId(481101);
                cluesServiceIfc.save(clues);
            callBackMessage.sendSuccessMessageByDefault();
src/com/yc/crm/clues/entity/AssignCluesEntity.java
@@ -10,4 +10,6 @@
    private String docCode;//线索编号
    private String ownerCode;//分配给谁
    private String ownerName;//分配给谁
    private String ownerCcCode;//分配给谁
    private String ownerCcName;//分配给谁
}
src/com/yc/crm/clues/entity/ContactEntity.java
New file
@@ -0,0 +1,9 @@
package com.yc.crm.clues.entity;
import lombok.Data;
@Data
public class ContactEntity {
    private String docCode,cluesName,name,email;
    private  int totalRowCount,pageCount;
}
src/com/yc/crm/clues/entity/T481101Entity.java
@@ -34,7 +34,6 @@
    private Integer lastprintnum;
    private Integer lastprintformid;
    private Integer lastprintdocstatus;
    private String cccode;
    private String cltCode;
    private String cltName;
    private String honorific;
src/com/yc/crm/clues/service/CluesServiceIfc.java
@@ -11,7 +11,7 @@
    Response getAllClues(CluesRequestEntity request);
    void assign(AssignCluesEntity assignClues);
    void assign(AssignCluesEntity assignClues,String userName);
    void attention(CluesRequestEntity cluesRequest);
@@ -20,4 +20,12 @@
    void contactDel(Integer id);
    T481101Entity get(CluesRequestEntity cluesRequest);
    void cluesDel(String docCode);
    void cluesFail(T481104Entity entity);
    Response contactList(CluesRequestEntity cluesRequest);
    void newAssign(AssignCluesEntity assignClues);
}
src/com/yc/crm/clues/service/CluesServiceImpl.java
@@ -36,6 +36,8 @@
                "    @DocStatusName            varchar(50),\n" +
                "    @companyid                nvarchar(20),\n" +
                "    @companyname              varchar(50),\n" +
                "    @ccCode                varchar(20),\n" +
                "    @ccName                varchar(50),\n" +
                "    @EnterCode                varchar(20),\n" +
                "    @EnterName                varchar(50),\n" +
                "    @EnterDate                datetime,\n" +
@@ -117,6 +119,8 @@
                "@DocCode=" + GridUtils.prossSqlParm(t481101Entity.getDocCode()) + ",         \n" +
                "@companyid=" + GridUtils.prossSqlParm(t481101Entity.getCompanyid()) + ",         \n" +
                "@companyname= " + GridUtils.prossSqlParm(t481101Entity.getCompanyname()) + ",         \n" +
                "@ccCode=" + GridUtils.prossSqlParm(t481101Entity.getCcCode()) + ",         \n" +
                "@ccName= " + GridUtils.prossSqlParm(t481101Entity.getCcName()) + ",         \n" +
                "@periodid= dbo.GetPeriodID(@FormID,@CompanyID,getdate()),          \n" +
                "@EnterCode=" + GridUtils.prossSqlParm(t481101Entity.getCreateUsercode()) + ",         \n" +
                "@EnterName=" + GridUtils.prossSqlParm(t481101Entity.getCreateUserName()) + " ,        \n" +
@@ -168,6 +172,8 @@
                ",DocCode" +
                ",companyid" +
                ",companyname" +
                ",ccCode" +
                ",ccName" +
                ",periodid" +
                ",EnterCode" +
                ",EnterName" +
@@ -215,6 +221,8 @@
                ",@DocCode" +
                ",@companyid" +
                ",@companyname" +
                ",@ccCode" +
                ",@ccName" +
                ",@periodid" +
                ",@EnterCode" +
                ",@EnterName" +
@@ -258,7 +266,7 @@
                ",@pin_flag,'起草' " +
                ")\n" +
                //----处理联系人信息
                contactAddSql(t481101Entity.getContactsList()) +
                contactAddSql(t481101Entity.getContactsList(),"线索") +
                "end\n" +
                "else \n" +//-------修改
                "begin\n" +
@@ -292,7 +300,7 @@
                ",category_ids=@category_ids" +
                ",inquiry_country=@inquiry_country,pin_flag=@pin_flag from t481101H where doccode=@doccode\n" +
                //----处理联系人信息
                contactUpdateSql(t481101Entity.getContactsList()) +
                contactUpdateSql(t481101Entity.getContactsList(),"线索") +
                "end\n" +
                //--处理审计功能
                auditAddSql(t481101Entity);
@@ -312,6 +320,46 @@
        return sql;
    }
    @Override
    public Response contactList(CluesRequestEntity request) {
        String fileds = " " +
                "c.refCode,c.id,a.docCode,a.clues_name           \n" +
                ",c.name              \n" +
                ",c.email             \n" +
                ",@TotalRowCount as totalRowCount ,@pageCount as pageCount              \n";
        String where = " contactType='线索' ";
        if (request.getSearchTxt() != null && request.getSearchTxt().size() > 0) {
            //拼接查询条件
            where += getSearchInfo(request);
        }
        String sql = "set nocount on ; \n" +
//                "                 declare @key varchar(300)  \n" +
//                "                 select @key ="+1+" \n" +
                "                 declare @Limit int , @Page int ,@StartRowNo int ,@EndRowNo int ; \n" +
                "                 select @Limit  = " + request.getPageSize() + " , @Page  = " + request.getPageNo() + "  ; \n" +
                "                 declare @TotalRowCount int ,@pageCount int; \n" +
                " select @StartRowNo = (isnull(@Page,0) - 1) * isnull(@Limit,0) + 1 ; \n" +
                " select @EndRowNo = isnull(@Page,0) * isnull(@Limit,0) ; \n" +
                " select @TotalRowCount =count(1),@pageCount=CEILING((COUNT(1)+0.0)/" + request.getPageSize() + ")  from t482103 c \n" +
                " left join t481101h a on a.docCode=c.refCode\n" +
                " left join t481104h b on a.docCode=b.refCode" +
                " where " + where + " \n" +
                " SELECT * FROM ( \n" +
                " select top 100 percent ROW_NUMBER() OVER (ORDER BY  a.docCode) AS NO,\n" +
                fileds + "  from t482103 c \n" +
                " left join t481101h a on a.docCode=c.refCode\n" +
                " left join t481104h b on a.docCode=b.refCode" +
                " where " + where +
                " order by  a.docCode asc \n" +
                " ) t WHERE t.NO  BETWEEN @StartRowNo AND @EndRowNo";
        List<ContactEntity> list = this.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContactEntity.class));
        //增加联系人输出
        Response response = new Response();
        response.setTotalCount((list != null && list.size() > 0) ? list.get(0).getTotalRowCount() : 0);
        response.setPageCount((list != null && list.size() > 0) ? list.get(0).getPageCount() : 0);
        response.setData(list);
        return response;
    }
    @Override
    public Response getAllClues(CluesRequestEntity request) {
@@ -409,7 +457,7 @@
                " select @EndRowNo = isnull(@Page,0) * isnull(@Limit,0) ; \n" +
                " select @TotalRowCount =count(1),@pageCount=CEILING((COUNT(1)+0.0)/" + request.getPageSize() + ")  from t481101h a left join t481104h b on a.docCode=b.refCode where " + where + " \n" +
                " SELECT * FROM ( \n" +
                " select top 100 percent ROW_NUMBER() OVER (ORDER BY  docCode) AS NO,\n" +
                " select top 100 percent ROW_NUMBER() OVER (ORDER BY  a.docCode) AS NO,\n" +
                fileds + "  from t481101h a left join t481104h b on a.docCode=b.refCode\n" +
                " where " + where +
                " order by  a.docCode asc \n" +
@@ -463,6 +511,24 @@
        response.setPageCount((list != null && list.size() > 0) ? list.get(0).getPageCount() : 0);
        response.setData(list);
        return response;
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void cluesDel(String docCode) {
        //删除线索,需要把相关的联系人,跟进,日程,评论也删除
        String sql="declare @docCode varchar(50)="+ GridUtils.prossSqlParm(docCode)+"\n" +
                " exec p481101Del @docCode";
        this.doBaseExecute(sql);
    }
    @Override
    public void cluesFail(T481104Entity entity) {
        String sql="declare @docCode varchar(50)="+ GridUtils.prossSqlParm(entity.getDocCode())+",\n" +
                "@failStatus int=" +entity.getFailStatus()+",\n"+
                "@failStatusName varchar(50)="+ GridUtils.prossSqlParm(entity.getFailStatusName())+",\n" +
                "@failReason varchar(250)="+ GridUtils.prossSqlParm(entity.getFailReason())+"\n" +
                "update t481101h set fail_Status=@failStatus,fail_Status_Name=@failStatusName,fail_Reason=@failReason where docCode=@docCode\n";
        this.doBaseExecute(sql);
    }
    @Override
@@ -601,12 +667,35 @@
        String sql = "update a set a.pinFlag=" + cluesRequest.getPinFlag() + " from t481104h a where id=" + cluesRequest.getId();
        this.doBaseExecute(sql);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void newAssign(AssignCluesEntity assignClues) {
        if(StringUtils.isBlank(assignClues.getOwnerCode())&&StringUtils.isBlank(assignClues.getOwnerCcCode())){
            throw new ApplicationException("部门和用户不能都为空");
        }
        String sql = " declare @refCode varchar(20),@ownerCode varchar(20),@ownerName varchar(20)\n" +
                " ,@ownerCcCode varchar(20),@ownerCcName varchar(20),@ownerType int=0" +
                "select @refCode=" + GridUtils.prossSqlParm(assignClues.getDocCode()) + ",@ownerCode=" + GridUtils.prossSqlParm(assignClues.getOwnerCode()) + ",@ownerName=" + GridUtils.prossSqlParm(assignClues.getOwnerName()) + ",@ownerCcCode=" + GridUtils.prossSqlParm(assignClues.getOwnerCcCode()) + ",@ownerCcName=" + GridUtils.prossSqlParm(assignClues.getOwnerCcName()) + "\n";
        if(StringUtils.isNotBlank(assignClues.getOwnerCcCode())) {
            sql+=" select @ownerType=1 \n";//表示当前线索是分配到个人,而不是部门
        }
                sql+=" insert into t481104h(refCode          \n" +
                ",ownerCode        \n" +
                ",ownerName        \n" +
                ",ownerCcCode        \n" +
                ",ownerCcName        \n" +
                ",ownerType       \n" +
                ",enterTime       \n)values(@refCode,@ownerCode,@ownerName,@ownerType,getdate())";
        this.doBaseExecute(sql);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void assign(AssignCluesEntity assignClues) {
        String sql = " declare @refCode varchar(20),@ownerCode varchar(20),@ownerName varchar(20)\n" +
                "select @refCode=" + GridUtils.prossSqlParm(assignClues.getDocCode()) + ",@ownerCode=" + GridUtils.prossSqlParm(assignClues.getOwnerCode()) + ",@ownerName=" + GridUtils.prossSqlParm(assignClues.getOwnerName()) + "\n" +
    public void assign(AssignCluesEntity assignClues,String userName) {
        String sql = " declare @id int,@reasonForRollback nvarchar(300),@refCode varchar(20),@ownerCode varchar(20),@ownerName varchar(20)\n" +
                "select @refCode=" + GridUtils.prossSqlParm(assignClues.getDocCode()) + ",@ownerCode=" + GridUtils.prossSqlParm(assignClues.getOwnerCode()) + ",@ownerName=" + GridUtils.prossSqlParm(assignClues.getOwnerName()) + ",@reasonForRollback='线索已移出,原因:"+userName+"重新分配给"+assignClues.getOwnerName()+"'\n" +
                " select @id=id from t481104h where refCode=@refCode\n" +
                " update t481104h set exitTime=getDate(),reasonForRollback=@reasonForRollback where id=@id\n" +
                " insert into t481104h(refCode          \n" +
                ",ownerCode        \n" +
                ",ownerName        \n" +
@@ -627,7 +716,8 @@
     * @return
     */
    private String getSearchInfo(CluesRequestEntity request) {
        String where = " and(1=1  ";
        //自已创建或已发布给指定人员或属于当前部门
        String where = " and((((a.CreateUsercode="+GridUtils.prossSqlParm(request.getCreateUsercode())+" or (isnull(a.isPush,0)=1 and b.ownerCode="+GridUtils.prossSqlParm(request.getCreateUsercode())+")) and isnull(b.reasonForRollback,'')='') or b.ownerCcCode="+GridUtils.prossSqlParm(request.getCccode())+") \n";
        Set<Map.Entry<String, String>> entries = request.getSearchTxt().entrySet();
        for (Map.Entry<String, String> entry : entries) {
            if (entry.getKey().equalsIgnoreCase("cluesName")) {
@@ -640,7 +730,7 @@
                where += " and isnull(b.pinFlag,0)=" + entry.getValue();
            }
            if (entry.getKey().equalsIgnoreCase("ownerCode")) {
                where += " and b.ownerCode  like '%" + entry.getValue() + "%'";
                where += " and b.ownerCode  in (select list from getinstr( '" + entry.getValue() + "'))";
            }
            if (entry.getKey().equalsIgnoreCase("systemFlag")) {
                where += " and isnull(b.systemFlag,0) = " + entry.getValue() + "";
@@ -661,7 +751,7 @@
                where += " and a.originList like '%" + entry.getValue() + "%'";
            }
            if (entry.getKey().equalsIgnoreCase("createUsercode")) {
                where += " and a.createUsercode like '%" + entry.getValue() + "%'";
                where += " and a.createUsercode in (select list from getinstr( '" + entry.getValue() + "'))";
            }
            if (entry.getKey().equalsIgnoreCase("country")) {
                where += " and a.country = '" + entry.getValue() + "'";
@@ -669,13 +759,19 @@
            if (entry.getKey().equalsIgnoreCase("lastModifyTime")) {
                String[] value = entry.getValue().split(";");
                where += " and (b.lastModifyTime >= DATEADD(day, -" + value[0] + ", CAST(GETDATE() AS date))  )";//TODO 后期增加处理联系,未联系功能
                where += " and (b.lastModifyTime >= DATEADD(day, -" + value[0] + ", CAST(GETDATE() AS date))  )";
            }
            //TODO 后期增加处理联系,未联系功能
            //处理是查询我的线索还是所有线索
            //481101是公海线索,481104是私海线索
        }
        return where + " )";
    }
    private String contactUpdateSql(List<T482103Entity> contactsList) {
    public String contactUpdateSql(List<T482103Entity> contactsList,String contactType) {
        if (contactsList == null || contactsList.size() == 0) {
            return "";
        }
@@ -684,7 +780,7 @@
            if (StringUtils.isNotBlank(contact.getRefCode()) && contact.getId() == null) {
                List<T482103Entity> temp = new ArrayList<T482103Entity>();
                temp.add(contact);
                sql += contactAddSql(temp);
                sql += contactAddSql(temp,contactType);
                continue;
            }
            sql += "\nselect\n" +
@@ -740,7 +836,7 @@
     * @param contactsList
     * @return
     */
    private String contactAddSql(List<T482103Entity> contactsList) {
    public String contactAddSql(List<T482103Entity> contactsList,String contactType) {
        if (contactsList == null || contactsList.size() == 0) {
            return "";
        }
@@ -769,6 +865,7 @@
                    ",remark             \n" +
                    ",image_list \n" +
                    ",birth              \n" +
                    ",contactType        \n" +
                    ",post_grade         \n" +
                    ",create_time        \n" +
                    ",update_time        " +
@@ -782,6 +879,7 @@
                    ",@remark             \n" +
                    ",@contact_image_list \n" +
                    ",@birth              \n" +
                    ",'"+contactType+"'   \n" +
                    ",@post_grade         \n" +
                    ",@create_time        \n" +
                    ",@update_time        " +