From cf2ecee7db5c74582fbe059308fc1df35ecf1b54 Mon Sep 17 00:00:00 2001 From: Hai Liang Wang Date: Fri, 7 Sep 2018 19:07:52 +0800 Subject: [PATCH] =?UTF-8?q?#61=20=E4=BC=98=E5=8C=96=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E6=A0=B9=E6=8D=AE=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/webim/web/handler/Handler.java | 32 + .../apps/contacts/ContactsController.java | 638 +++++++++--------- 2 files changed, 353 insertions(+), 317 deletions(-) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java b/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java index 7b821e5f..28c862ea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java @@ -17,6 +17,7 @@ package com.chatopera.cc.webim.web.handler; import static org.elasticsearch.index.query.QueryBuilders.termQuery; +import static org.elasticsearch.index.query.QueryBuilders.termsQuery; import java.text.ParseException; @@ -25,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import com.chatopera.cc.core.UKDataContext; import com.chatopera.cc.util.UKView; +import com.chatopera.cc.util.exception.CSKefuException; import com.chatopera.cc.webim.service.cache.CacheHelper; import com.chatopera.cc.webim.service.repository.TenantRepository; import com.chatopera.cc.webim.web.handler.api.rest.QueryParams; @@ -36,6 +38,8 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryStringQueryBuilder; import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator; import org.elasticsearch.index.query.RangeQueryBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -49,6 +53,8 @@ import com.chatopera.cc.webim.web.model.SystemConfig; @Controller @SessionAttributes public class Handler { + private static final Logger logger = LoggerFactory.getLogger(Handler.class); + @Autowired private TenantRepository tenantRes; @@ -85,6 +91,32 @@ public class Handler { } return user ; } + + /** + * 构建ElasticSearch基于部门查询的Filter + * @param request + * @param boolQueryBuilder + * @return + * @throws CSKefuException + */ + public boolean esOrganFilter(final HttpServletRequest request, final BoolQueryBuilder boolQueryBuilder) throws CSKefuException { + // 组合部门条件 + User u = getUser(request); + if( u == null){ + throw new CSKefuException("[esOrganFilter] 未能获取到登录用户。"); + } else if(u.isSuperuser()){ + // 超级管理员, 查看任何数据 + return true; + } else if(u.getMyorgans().size() == 0){ + // 用户没有被分配到部门,返回空数据 + return false; + } else { + // 用户在部门中,通过部门过滤数据 + String[] values = u.getMyorgans().toArray(new String[u.getMyorgans().size()]); + boolQueryBuilder.filter(termsQuery("organ", values)); + return true; + } + } /** * diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/apps/contacts/ContactsController.java b/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/apps/contacts/ContactsController.java index 1b90970f..e0e12898 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/apps/contacts/ContactsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/apps/contacts/ContactsController.java @@ -17,29 +17,28 @@ package com.chatopera.cc.webim.web.handler.apps.contacts; -import static org.elasticsearch.index.query.QueryBuilders.termQuery; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; - import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.PinYinTools; +import com.chatopera.cc.util.UKTools; +import com.chatopera.cc.util.exception.CSKefuException; +import com.chatopera.cc.util.task.DSData; +import com.chatopera.cc.util.task.DSDataEvent; +import com.chatopera.cc.util.task.ExcelImportProecess; +import com.chatopera.cc.util.task.export.ExcelExporterProcess; +import com.chatopera.cc.util.task.process.ContactsProcess; +import com.chatopera.cc.webim.service.es.ContactsRepository; +import com.chatopera.cc.webim.service.repository.MetadataRepository; import com.chatopera.cc.webim.service.repository.PropertiesEventRepository; +import com.chatopera.cc.webim.service.repository.ReporterRepository; import com.chatopera.cc.webim.util.PropertiesEventUtils; +import com.chatopera.cc.webim.web.handler.Handler; +import com.chatopera.cc.webim.web.model.*; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.PageRequest; @@ -50,361 +49,366 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.util.task.export.ExcelExporterProcess; -import com.chatopera.cc.util.task.process.ContactsProcess; -import com.chatopera.cc.webim.service.es.ContactsRepository; -import com.chatopera.cc.webim.service.repository.MetadataRepository; -import com.chatopera.cc.webim.service.repository.ReporterRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Contacts; -import com.chatopera.cc.webim.web.model.MetadataTable; -import com.chatopera.cc.webim.web.model.PropertiesEvent; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +import static org.elasticsearch.index.query.QueryBuilders.termQuery; +import static org.elasticsearch.index.query.QueryBuilders.termsQuery; @Controller @RequestMapping("/apps/contacts") -public class ContactsController extends Handler{ - - @Autowired - private ContactsRepository contactsRes ; - - @Autowired - private PropertiesEventRepository propertiesEventRes ; - - @Autowired - private ReporterRepository reporterRes ; - - @Autowired - private MetadataRepository metadataRes ; - - @Value("${web.upload-path}") +public class ContactsController extends Handler { + private final static Logger logger = LoggerFactory.getLogger(ContactsController.class); + + @Autowired + private ContactsRepository contactsRes; + + @Autowired + private PropertiesEventRepository propertiesEventRes; + + @Autowired + private ReporterRepository reporterRes; + + @Autowired + private MetadataRepository metadataRes; + + @Value("${web.upload-path}") private String path; - + @RequestMapping("/index") - @Menu(type = "customer" , subtype = "index") - public ModelAndView index(ModelMap map , HttpServletRequest request , @Valid String q , @Valid String ckind) { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; + @Menu(type = "customer", subtype = "index") + public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ckind) throws CSKefuException { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + + if(!super.esOrganFilter(request, boolQueryBuilder)){ + return request(super.createAppsTempletResponse("/apps/business/contacts/index")); } - if(!StringUtils.isBlank(ckind)){ - boolQueryBuilder.must(termQuery("ckind" , ckind)) ; - map.put("ckind", ckind) ; + + if (!StringUtils.isBlank(q)) { + map.put("q", q); } - map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(),super.getOrgi(request), null , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request)))) ; - - return request(super.createAppsTempletResponse("/apps/business/contacts/index")); - } - - @RequestMapping("/today") - @Menu(type = "customer" , subtype = "today") - public ModelAndView today(ModelMap map , HttpServletRequest request , @Valid String q , @Valid String ckind) { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; + + if (!StringUtils.isBlank(ckind)) { + boolQueryBuilder.must(termQuery("ckind", ckind)); + map.put("ckind", ckind); } - if(!StringUtils.isBlank(ckind)){ - boolQueryBuilder.must(termQuery("ckind" , ckind)) ; - map.put("ckind", ckind) ; - } - map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request),UKTools.getStartTime() , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request)))) ; - - return request(super.createAppsTempletResponse("/apps/business/contacts/index")); - } - - @RequestMapping("/week") - @Menu(type = "customer" , subtype = "week") - public ModelAndView week(ModelMap map , HttpServletRequest request , @Valid String q , @Valid String ckind) { - - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; - } - if(!StringUtils.isBlank(ckind)){ - boolQueryBuilder.must(termQuery("ckind" , ckind)) ; - map.put("ckind", ckind) ; - } - map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(),super.getOrgi(request), UKTools.getWeekStartTime() , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request)))) ; - - return request(super.createAppsTempletResponse("/apps/business/contacts/index")); - } - - @RequestMapping("/creater") - @Menu(type = "customer" , subtype = "creater") - public ModelAndView creater(ModelMap map , HttpServletRequest request , @Valid String q , @Valid String ckind) { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - boolQueryBuilder.must(termQuery("creater" , super.getUser(request).getId())) ; - - if(!StringUtils.isBlank(ckind)){ - boolQueryBuilder.must(termQuery("ckind" , ckind)) ; - map.put("ckind", ckind) ; - } - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; - } - - map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(),super.getOrgi(request), null , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request)))) ; + + map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), null, null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request)))); + return request(super.createAppsTempletResponse("/apps/business/contacts/index")); } - - @RequestMapping("/delete") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView delete(HttpServletRequest request ,@Valid Contacts contacts ,@Valid String p) { - if(contacts!=null){ - contacts = contactsRes.findOne(contacts.getId()) ; - contacts.setDatastatus(true); //客户和联系人都是 逻辑删除 - contactsRes.save(contacts) ; - } - return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?p="+p+"&ckind="+contacts.getCkind())); + + @RequestMapping("/today") + @Menu(type = "customer", subtype = "today") + public ModelAndView today(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ckind) { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + if (!StringUtils.isBlank(q)) { + map.put("q", q); + } + if (!StringUtils.isBlank(ckind)) { + boolQueryBuilder.must(termQuery("ckind", ckind)); + map.put("ckind", ckind); + } + map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), UKTools.getStartTime(), null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request)))); + + return request(super.createAppsTempletResponse("/apps/business/contacts/index")); } - + + @RequestMapping("/week") + @Menu(type = "customer", subtype = "week") + public ModelAndView week(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ckind) { + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + if (!StringUtils.isBlank(q)) { + map.put("q", q); + } + if (!StringUtils.isBlank(ckind)) { + boolQueryBuilder.must(termQuery("ckind", ckind)); + map.put("ckind", ckind); + } + map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), UKTools.getWeekStartTime(), null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request)))); + + return request(super.createAppsTempletResponse("/apps/business/contacts/index")); + } + + @RequestMapping("/creater") + @Menu(type = "customer", subtype = "creater") + public ModelAndView creater(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ckind) { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must(termQuery("creater", super.getUser(request).getId())); + + if (!StringUtils.isBlank(ckind)) { + boolQueryBuilder.must(termQuery("ckind", ckind)); + map.put("ckind", ckind); + } + if (!StringUtils.isBlank(q)) { + map.put("q", q); + } + + map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), null, null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request)))); + return request(super.createAppsTempletResponse("/apps/business/contacts/index")); + } + + @RequestMapping("/delete") + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView delete(HttpServletRequest request, @Valid Contacts contacts, @Valid String p) { + if (contacts != null) { + contacts = contactsRes.findOne(contacts.getId()); + contacts.setDatastatus(true); //客户和联系人都是 逻辑删除 + contactsRes.save(contacts); + } + return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?p=" + p + "&ckind=" + contacts.getCkind())); + } + @RequestMapping("/add") - @Menu(type = "contacts" , subtype = "add") - public ModelAndView add(ModelMap map , HttpServletRequest request,@Valid String ckind) { - map.addAttribute("ckind",ckind); + @Menu(type = "contacts", subtype = "add") + public ModelAndView add(ModelMap map, HttpServletRequest request, @Valid String ckind) { + map.addAttribute("ckind", ckind); return request(super.createRequestPageTempletResponse("/apps/business/contacts/add")); } - + @RequestMapping("/save") - @Menu(type = "contacts" , subtype = "save") - public ModelAndView save(HttpServletRequest request , @Valid Contacts contacts) { - contacts.setCreater(super.getUser(request).getId()); - contacts.setOrgi(super.getOrgi(request)); - contacts.setOrgan(super.getUser(request).getOrgan()); - contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); - if(StringUtils.isBlank(contacts.getCusbirthday())) { - contacts.setCusbirthday(null); - } - contactsRes.save(contacts) ; - return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?ckind="+contacts.getCkind())); + @Menu(type = "contacts", subtype = "save") + public ModelAndView save(HttpServletRequest request, @Valid Contacts contacts) { + contacts.setCreater(super.getUser(request).getId()); + contacts.setOrgi(super.getOrgi(request)); + contacts.setOrgan(super.getUser(request).getOrgan()); + contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); + if (StringUtils.isBlank(contacts.getCusbirthday())) { + contacts.setCusbirthday(null); + } + contactsRes.save(contacts); + return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?ckind=" + contacts.getCkind())); } - + @RequestMapping("/edit") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView edit(ModelMap map , HttpServletRequest request , @Valid String id) { - map.addAttribute("contacts", contactsRes.findOne(id)); + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) { + map.addAttribute("contacts", contactsRes.findOne(id)); return request(super.createRequestPageTempletResponse("/apps/business/contacts/edit")); } - + @RequestMapping("/detail") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView detail(ModelMap map , HttpServletRequest request , @Valid String id) { - map.addAttribute("contacts", contactsRes.findOne(id)) ; + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView detail(ModelMap map, HttpServletRequest request, @Valid String id) { + map.addAttribute("contacts", contactsRes.findOne(id)); return request(super.createRequestPageTempletResponse("/apps/business/contacts/detail")); } - - - @RequestMapping( "/update") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView update(HttpServletRequest request , @Valid Contacts contacts) { - Contacts data = contactsRes.findOne(contacts.getId()) ; - if(data!=null){ - List events = PropertiesEventUtils.processPropertiesModify(request, contacts , data , "id" , "orgi" , "creater" ,"createtime" , "updatetime") ; //记录 数据变更 历史 - if(events.size()>0){ - String modifyid = UKTools.getUUID() ; - Date modifytime = new Date(); - for(PropertiesEvent event : events){ - event.setDataid(contacts.getId()); - event.setCreater(super.getUser(request).getId()); - event.setOrgi(super.getOrgi(request)); - event.setModifyid(modifyid); - event.setCreatetime(modifytime); - propertiesEventRes.save(event) ; - } - } - - contacts.setCreater(data.getCreater()); - contacts.setCreatetime(data.getCreatetime()); - contacts.setOrgi(super.getOrgi(request)); - contacts.setOrgan(super.getUser(request).getOrgan()); - contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); - if(StringUtils.isBlank(contacts.getCusbirthday())) { - contacts.setCusbirthday(null); - } - contactsRes.save(contacts); - } - - return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?ckind="+contacts.getCkind())); + + + @RequestMapping("/update") + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView update(HttpServletRequest request, @Valid Contacts contacts) { + Contacts data = contactsRes.findOne(contacts.getId()); + if (data != null) { + List events = PropertiesEventUtils.processPropertiesModify(request, contacts, data, "id", "orgi", "creater", "createtime", "updatetime"); //记录 数据变更 历史 + if (events.size() > 0) { + String modifyid = UKTools.getUUID(); + Date modifytime = new Date(); + for (PropertiesEvent event : events) { + event.setDataid(contacts.getId()); + event.setCreater(super.getUser(request).getId()); + event.setOrgi(super.getOrgi(request)); + event.setModifyid(modifyid); + event.setCreatetime(modifytime); + propertiesEventRes.save(event); + } + } + + contacts.setCreater(data.getCreater()); + contacts.setCreatetime(data.getCreatetime()); + contacts.setOrgi(super.getOrgi(request)); + contacts.setOrgan(super.getUser(request).getOrgan()); + contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); + if (StringUtils.isBlank(contacts.getCusbirthday())) { + contacts.setCusbirthday(null); + } + contactsRes.save(contacts); + } + + return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html?ckind=" + contacts.getCkind())); } - + @RequestMapping("/imp") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView imp(ModelMap map , HttpServletRequest request,@Valid String ckind) { - map.addAttribute("ckind",ckind); + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView imp(ModelMap map, HttpServletRequest request, @Valid String ckind) { + map.addAttribute("ckind", ckind); return request(super.createRequestPageTempletResponse("/apps/business/contacts/imp")); } - + @RequestMapping("/impsave") - @Menu(type = "contacts" , subtype = "contacts") - public ModelAndView impsave(ModelMap map , HttpServletRequest request , @RequestParam(value = "cusfile", required = false) MultipartFile cusfile,@Valid String ckind) throws IOException { - DSDataEvent event = new DSDataEvent(); - String fileName = "contacts/"+UKTools.getUUID()+cusfile.getOriginalFilename().substring(cusfile.getOriginalFilename().lastIndexOf(".")) ; - File excelFile = new File(path , fileName) ; - if(!excelFile.getParentFile().exists()){ - excelFile.getParentFile().mkdirs() ; - } - MetadataTable table = metadataRes.findByTablename("uk_contacts") ; - if(table!=null){ - FileUtils.writeByteArrayToFile(new File(path , fileName), cusfile.getBytes()); - event.setDSData(new DSData(table,excelFile , cusfile.getContentType(), super.getUser(request))); - event.getDSData().setClazz(Contacts.class); - event.getDSData().setProcess(new ContactsProcess(contactsRes)); - event.setOrgi(super.getOrgi(request)); + @Menu(type = "contacts", subtype = "contacts") + public ModelAndView impsave(ModelMap map, HttpServletRequest request, @RequestParam(value = "cusfile", required = false) MultipartFile cusfile, @Valid String ckind) throws IOException { + DSDataEvent event = new DSDataEvent(); + String fileName = "contacts/" + UKTools.getUUID() + cusfile.getOriginalFilename().substring(cusfile.getOriginalFilename().lastIndexOf(".")); + File excelFile = new File(path, fileName); + if (!excelFile.getParentFile().exists()) { + excelFile.getParentFile().mkdirs(); + } + MetadataTable table = metadataRes.findByTablename("uk_contacts"); + if (table != null) { + FileUtils.writeByteArrayToFile(new File(path, fileName), cusfile.getBytes()); + event.setDSData(new DSData(table, excelFile, cusfile.getContentType(), super.getUser(request))); + event.getDSData().setClazz(Contacts.class); + event.getDSData().setProcess(new ContactsProcess(contactsRes)); + event.setOrgi(super.getOrgi(request)); /*if(!StringUtils.isBlank(ckind)){ event.getValues().put("ckind", ckind) ; }*/ - event.getValues().put("creater", super.getUser(request).getId()) ; - reporterRes.save(event.getDSData().getReport()) ; - new ExcelImportProecess(event).process() ; //启动导入任务 - } - - return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html")); + event.getValues().put("creater", super.getUser(request).getId()); + reporterRes.save(event.getDSData().getReport()); + new ExcelImportProecess(event).process(); //启动导入任务 + } + + return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/index.html")); } - + @RequestMapping("/expids") - @Menu(type = "contacts" , subtype = "contacts") - public void expids(ModelMap map , HttpServletRequest request , HttpServletResponse response , @Valid String[] ids) throws IOException { - if(ids!=null && ids.length > 0){ - Iterable contactsList = contactsRes.findAll(Arrays.asList(ids)) ; - MetadataTable table = metadataRes.findByTablename("uk_contacts") ; - List> values = new ArrayList>(); - for(Contacts contacts : contactsList){ - values.add(UKTools.transBean2Map(contacts)) ; - } - - response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-"+new SimpleDateFormat("yyyy-MM-dd").format(new Date())+".xls"); - - ExcelExporterProcess excelProcess = new ExcelExporterProcess( values, table, response.getOutputStream()) ; - excelProcess.process(); - } - - return ; + @Menu(type = "contacts", subtype = "contacts") + public void expids(ModelMap map, HttpServletRequest request, HttpServletResponse response, @Valid String[] ids) throws IOException { + if (ids != null && ids.length > 0) { + Iterable contactsList = contactsRes.findAll(Arrays.asList(ids)); + MetadataTable table = metadataRes.findByTablename("uk_contacts"); + List> values = new ArrayList>(); + for (Contacts contacts : contactsList) { + values.add(UKTools.transBean2Map(contacts)); + } + + response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls"); + + ExcelExporterProcess excelProcess = new ExcelExporterProcess(values, table, response.getOutputStream()); + excelProcess.process(); + } + + return; } - + @RequestMapping("/expall") - @Menu(type = "contacts" , subtype = "contacts") - public void expall(ModelMap map , HttpServletRequest request , HttpServletResponse response) throws IOException { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - boolQueryBuilder.must(termQuery("datastatus" , false)) ; //只导出 数据删除状态 为 未删除的 数据 - Iterable contactsList = contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request),null , null , false, boolQueryBuilder , null , new PageRequest(super.getP(request) , super.getPs(request))); - - MetadataTable table = metadataRes.findByTablename("uk_contacts") ; - List> values = new ArrayList>(); - for(Contacts contacts : contactsList){ - values.add(UKTools.transBean2Map(contacts)) ; - } - - response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-"+new SimpleDateFormat("yyyy-MM-dd").format(new Date())+".xls"); - - ExcelExporterProcess excelProcess = new ExcelExporterProcess( values, table, response.getOutputStream()) ; - excelProcess.process(); - return ; + @Menu(type = "contacts", subtype = "contacts") + public void expall(ModelMap map, HttpServletRequest request, HttpServletResponse response) throws IOException { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must(termQuery("datastatus", false)); //只导出 数据删除状态 为 未删除的 数据 + Iterable contactsList = contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), null, null, false, boolQueryBuilder, null, new PageRequest(super.getP(request), super.getPs(request))); + + MetadataTable table = metadataRes.findByTablename("uk_contacts"); + List> values = new ArrayList>(); + for (Contacts contacts : contactsList) { + values.add(UKTools.transBean2Map(contacts)); + } + + response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls"); + + ExcelExporterProcess excelProcess = new ExcelExporterProcess(values, table, response.getOutputStream()); + excelProcess.process(); + return; } - + @RequestMapping("/expsearch") - @Menu(type = "contacts" , subtype = "contacts") - public void expall(ModelMap map , HttpServletRequest request , HttpServletResponse response , @Valid String q , @Valid String ekind) throws IOException { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; + @Menu(type = "contacts", subtype = "contacts") + public void expall(ModelMap map, HttpServletRequest request, HttpServletResponse response, @Valid String q, @Valid String ekind) throws IOException { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + if (!StringUtils.isBlank(q)) { + map.put("q", q); } - if(!StringUtils.isBlank(ekind)){ - boolQueryBuilder.must(termQuery("ekind" , ekind)) ; - map.put("ekind", ekind) ; + if (!StringUtils.isBlank(ekind)) { + boolQueryBuilder.must(termQuery("ekind", ekind)); + map.put("ekind", ekind); } - - Iterable contactsList = contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(),super.getOrgi(request), null , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request))); - MetadataTable table = metadataRes.findByTablename("uk_contacts") ; - List> values = new ArrayList>(); - for(Contacts contacts : contactsList){ - values.add(UKTools.transBean2Map(contacts)) ; - } - response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-"+new SimpleDateFormat("yyyy-MM-dd").format(new Date())+".xls"); + Iterable contactsList = contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), null, null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request))); + MetadataTable table = metadataRes.findByTablename("uk_contacts"); + List> values = new ArrayList>(); + for (Contacts contacts : contactsList) { + values.add(UKTools.transBean2Map(contacts)); + } - ExcelExporterProcess excelProcess = new ExcelExporterProcess( values, table, response.getOutputStream()) ; - excelProcess.process(); - - return ; + response.setHeader("content-disposition", "attachment;filename=UCKeFu-Contacts-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls"); + + ExcelExporterProcess excelProcess = new ExcelExporterProcess(values, table, response.getOutputStream()); + excelProcess.process(); + + return; } - - + + @RequestMapping("/embed/index") - @Menu(type = "customer" , subtype = "embed") - public ModelAndView embed(ModelMap map , HttpServletRequest request , @Valid String q , @Valid String ckind) { - BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - if(!StringUtils.isBlank(q)){ - map.put("q", q) ; + @Menu(type = "customer", subtype = "embed") + public ModelAndView embed(ModelMap map, HttpServletRequest request, @Valid String q, @Valid String ckind) { + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + if (!StringUtils.isBlank(q)) { + map.put("q", q); } - if(!StringUtils.isBlank(ckind)){ - boolQueryBuilder.must(termQuery("ckind" , ckind)) ; - map.put("ckind", ckind) ; + if (!StringUtils.isBlank(ckind)) { + boolQueryBuilder.must(termQuery("ckind", ckind)); + map.put("ckind", ckind); } - map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request),null , null , false, boolQueryBuilder ,q , new PageRequest(super.getP(request) , super.getPs(request)))) ; - - return request(super.createRequestPageTempletResponse("/apps/business/contacts/embed/index")); + map.addAttribute("contactsList", contactsRes.findByCreaterAndSharesAndOrgi(super.getUser(request).getId(), super.getUser(request).getId(), super.getOrgi(request), null, null, false, boolQueryBuilder, q, new PageRequest(super.getP(request), super.getPs(request)))); + + return request(super.createRequestPageTempletResponse("/apps/business/contacts/embed/index")); } - + @RequestMapping("/embed/add") - @Menu(type = "contacts" , subtype = "embedadd") - public ModelAndView embedadd(ModelMap map , HttpServletRequest request) { + @Menu(type = "contacts", subtype = "embedadd") + public ModelAndView embedadd(ModelMap map, HttpServletRequest request) { return request(super.createRequestPageTempletResponse("/apps/business/contacts/embed/add")); } - - @RequestMapping( "/embed/save") - @Menu(type = "contacts" , subtype = "embedsave") - public ModelAndView embedsave(HttpServletRequest request , @Valid Contacts contacts) { - contacts.setCreater(super.getUser(request).getId()); - contacts.setOrgi(super.getOrgi(request)); - contacts.setOrgan(super.getUser(request).getOrgan()); - contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); - if(StringUtils.isBlank(contacts.getCusbirthday())) { - contacts.setCusbirthday(null); - } - contactsRes.save(contacts) ; + + @RequestMapping("/embed/save") + @Menu(type = "contacts", subtype = "embedsave") + public ModelAndView embedsave(HttpServletRequest request, @Valid Contacts contacts) { + contacts.setCreater(super.getUser(request).getId()); + contacts.setOrgi(super.getOrgi(request)); + contacts.setOrgan(super.getUser(request).getOrgan()); + contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); + if (StringUtils.isBlank(contacts.getCusbirthday())) { + contacts.setCusbirthday(null); + } + contactsRes.save(contacts); return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/embed/index.html")); } - + @RequestMapping("/embed/edit") - @Menu(type = "contacts" , subtype = "embededit") - public ModelAndView embededit(ModelMap map , HttpServletRequest request , @Valid String id) { - map.addAttribute("contacts", contactsRes.findOne(id)) ; + @Menu(type = "contacts", subtype = "embededit") + public ModelAndView embededit(ModelMap map, HttpServletRequest request, @Valid String id) { + map.addAttribute("contacts", contactsRes.findOne(id)); return request(super.createRequestPageTempletResponse("/apps/business/contacts/embed/edit")); } - - @RequestMapping( "/embed/update") - @Menu(type = "contacts" , subtype = "embedupdate") - public ModelAndView embedupdate(HttpServletRequest request , @Valid Contacts contacts) { - Contacts data = contactsRes.findOne(contacts.getId()) ; - if(data!=null){ - List events = PropertiesEventUtils.processPropertiesModify(request, contacts , data , "id" , "orgi" , "creater" ,"createtime" , "updatetime") ; //记录 数据变更 历史 - if(events.size()>0){ - String modifyid = UKTools.getUUID() ; - Date modifytime = new Date(); - for(PropertiesEvent event : events){ - event.setDataid(contacts.getId()); - event.setCreater(super.getUser(request).getId()); - event.setOrgi(super.getOrgi(request)); - event.setModifyid(modifyid); - event.setCreatetime(modifytime); - propertiesEventRes.save(event) ; - } - } - - contacts.setCreater(data.getCreater()); - contacts.setCreatetime(data.getCreatetime()); - contacts.setOrgi(super.getOrgi(request)); - contacts.setOrgan(super.getUser(request).getOrgan()); - contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); - if(StringUtils.isBlank(contacts.getCusbirthday())) { - contacts.setCusbirthday(null); - } - contactsRes.save(contacts); - } - + + @RequestMapping("/embed/update") + @Menu(type = "contacts", subtype = "embedupdate") + public ModelAndView embedupdate(HttpServletRequest request, @Valid Contacts contacts) { + Contacts data = contactsRes.findOne(contacts.getId()); + if (data != null) { + List events = PropertiesEventUtils.processPropertiesModify(request, contacts, data, "id", "orgi", "creater", "createtime", "updatetime"); //记录 数据变更 历史 + if (events.size() > 0) { + String modifyid = UKTools.getUUID(); + Date modifytime = new Date(); + for (PropertiesEvent event : events) { + event.setDataid(contacts.getId()); + event.setCreater(super.getUser(request).getId()); + event.setOrgi(super.getOrgi(request)); + event.setModifyid(modifyid); + event.setCreatetime(modifytime); + propertiesEventRes.save(event); + } + } + + contacts.setCreater(data.getCreater()); + contacts.setCreatetime(data.getCreatetime()); + contacts.setOrgi(super.getOrgi(request)); + contacts.setOrgan(super.getUser(request).getOrgan()); + contacts.setPinyin(PinYinTools.getInstance().getFirstPinYin(contacts.getName())); + if (StringUtils.isBlank(contacts.getCusbirthday())) { + contacts.setCusbirthday(null); + } + contactsRes.save(contacts); + } + return request(super.createRequestPageTempletResponse("redirect:/apps/contacts/embed/index.html")); } } \ No newline at end of file