提交 8cc4b0a0 编写于 作者: O o2sword

修改bug

上级 dc051665
# Default ignored files
/workspace.xml
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
.idea/**/encodings.xml
.idea/encodings.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
.idea
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
*.iml
# eclipse
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
.project
.classpath
.log
# vscode
.vscode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
**/pmd.xml
**/cpd.xml
**/pmd.html
**/cpd.html
# custom
app/**/*.iml
app/**/.project
app/**/.settings/
app/**/.classpath
app/*.iml
app/.project
app/**/*.log
app/log/dsdh/*.log
*/src/main/webapp/describe/
assembly/.settings
assembly/.project
assembly/*.iml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>o2oa</groupId>
<artifactId>o2server</artifactId>
<version>7.0</version>
</parent>
<artifactId>o2oa-crm</artifactId>
<packaging>pom</packaging>
<modules>
<module>x_wcrm_core_entity</module>
<module>x_wcrm_assemble_control</module>
</modules>
<repositories>
<repository>
<id>nexus-o2oa</id>
<name>nexus-o2oa</name>
<url>http://maven.o2oa.net/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
......@@ -6,8 +6,8 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>o2oa</groupId>
<artifactId>o2server</artifactId>
<version>5</version>
<artifactId>o2oa-crm</artifactId>
<version>7.0</version>
</parent>
<artifactId>x_wcrm_assemble_control</artifactId>
<packaging>war</packaging>
......@@ -27,9 +27,9 @@
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_wcrm_core_entity</artifactId>
<version>5</version>
<version>7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
......@@ -37,6 +37,24 @@
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>DescribeWoBuilder</id>
<phase>prepare-package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<addOutputToClasspath>true</addOutputToClasspath>
<includePluginDependencies>true</includePluginDependencies>
<includeProjectDependencies>true</includeProjectDependencies>
<mainClass>com.x.base.core.project.annotation.DescribeWoBuilder</mainClass>
<arguments>
<argument>${basedir}</argument>
<argument>${project.build.sourceDirectory}</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>describeBuilder</id>
<phase>prepare-package</phase>
......@@ -47,8 +65,25 @@
<addOutputToClasspath>true</addOutputToClasspath>
<includePluginDependencies>true</includePluginDependencies>
<includeProjectDependencies>true</includeProjectDependencies>
<mainClass>com.x.base.core.project.annotation.DescribeBuilder
</mainClass>
<mainClass>com.x.base.core.project.annotation.DescribeBuilder</mainClass>
<arguments>
<argument>${basedir}</argument>
<argument>${project.build.sourceDirectory}</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>apiBuilder</id>
<phase>prepare-package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<addOutputToClasspath>true</addOutputToClasspath>
<includePluginDependencies>true</includePluginDependencies>
<includeProjectDependencies>true</includeProjectDependencies>
<mainClass>com.x.base.core.project.annotation.ApiBuilder</mainClass>
<arguments>
<argument>${basedir}</argument>
<argument>${project.build.sourceDirectory}</argument>
......@@ -65,8 +100,7 @@
<addOutputToClasspath>true</addOutputToClasspath>
<includePluginDependencies>true</includePluginDependencies>
<includeProjectDependencies>true</includeProjectDependencies>
<mainClass>com.x.base.core.project.build.CheckAssemble
</mainClass>
<mainClass>com.x.base.core.project.build.CheckAssemble</mainClass>
</configuration>
</execution>
<execution>
......@@ -98,7 +132,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>../../o2server/custom</outputDirectory>
<outputDirectory>../store</outputDirectory>
<resources>
<resource>
<directory>target</directory>
......@@ -111,6 +145,34 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<packagingExcludes>persistence.xml,WEB-INF/lib/**,META-INF
</packagingExcludes>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>ext</directory>
<includes>
<include>**/*.jar</include>
</includes>
<targetPath>WEB-INF/ext</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
......@@ -192,26 +192,20 @@ public class Business {
/**
* TODO 判断用户是否管理员权限 1、person.isManager() 2、xadmin 3、CRMManager
*
*
* @param request
* @return
* @throws Exception
*/
public boolean isManager(HttpServletRequest request, EffectivePerson person) throws Exception {
// 如果用户的身份是平台的超级管理员,那么就是超级管理员权限
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
if (person.isManager()) {
return true;
}
if (organization().person().hasRole(person, OrganizationDefinition.Manager,
OrganizationDefinition.CRMManager_discription)) {
return true;
}
/*if (person.isManager()) {
OrganizationDefinition.CMSManager)) {
return true;
}
if (isHasPlatformRole(person.getDistinguishedName(), ThisApplication.ROLE_CRMManager)) {
return true;
}*/
return false;
}
......@@ -223,21 +217,11 @@ public class Business {
*/
public boolean isManager(EffectivePerson person) throws Exception {
// 如果用户的身份是平台的超级管理员,那么就是超级管理员权限
/*if (person.isManager()) {
return true;
}
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
return true;
}
if (isHasPlatformRole(person.getDistinguishedName(), ThisApplication.ROLE_CRMManager)) {
return true;
}*/
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
if (person.isManager()) {
return true;
}
if (organization().person().hasRole(person, OrganizationDefinition.Manager,
OrganizationDefinition.CRMManager_discription)) {
OrganizationDefinition.CMSManager)) {
return true;
}
return false;
......
package com.x.wcrm.assemble.control.factory;
import com.x.base.core.project.exception.ExceptionWhen;
import com.x.base.core.project.tools.ListTools;
import com.x.wcrm.assemble.control.AbstractFactory;
import com.x.wcrm.assemble.control.Business;
import com.x.wcrm.core.entity.WCrmConfig;
......@@ -12,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;
......@@ -31,15 +29,7 @@ public class ConfigFactory extends AbstractFactory {
public WCrmConfig get(String id ) throws Exception {
return this.entityManagerContainer().find( id, WCrmConfig.class, ExceptionWhen.none );
}
/*public ProjectDetail getDetail(String id) throws Exception {
return this.entityManagerContainer().find( id, ProjectDetail.class, ExceptionWhen.none );
}*/
/**
* 根据条件查询符合条件的项目信息ID,根据上一条的sequnce查询指定数量的信息
* @param maxCount
......@@ -57,17 +47,9 @@ public class ConfigFactory extends AbstractFactory {
CriteriaQuery<WCrmConfig> cq = cb.createQuery(WCrmConfig.class);
Root<WCrmConfig> root = cq.from(WCrmConfig.class);
Predicate p_permission = null;
/*if( StringUtils.isNotEmpty( personName )) {
//可以管理的栏目,肯定可以发布信息
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
}*/
Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( WCrmConfig_.class, cb, p_permission, root, queryFilter );
if( sequenceFieldValue != null && StringUtils.isNotEmpty( sequenceFieldValue.toString() )) {
Predicate p_seq = cb.isNotNull( root.get( WCrmConfig_.sequence ) );
if( "desc".equalsIgnoreCase( orderType )){
......@@ -76,16 +58,15 @@ public class ConfigFactory extends AbstractFactory {
p_seq = cb.and( p_seq, cb.greaterThan( root.get( WCrmConfig_.sequence ), sequenceFieldValue.toString() ));
}
p = cb.and( p, p_seq);
}
}
Order orderWithField = CriteriaBuilderTools.getOrder( cb, root, WCrmConfig_.class, orderField, orderType );
if( orderWithField != null ){
cq.orderBy( orderWithField );
}
System.out.println(">>>SQL:" + em.createQuery(cq.where(p)).setMaxResults( maxCount).toString() );
return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
}
/**
* 根据条件查询所有符合条件的项目模板信息ID,项目信息不会很多 ,所以直接查询出来
* @param maxCount
......@@ -100,16 +81,7 @@ public class ConfigFactory extends AbstractFactory {
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<WCrmConfig> root = cq.from(WCrmConfig.class);
Predicate p_permission = null;
/*if( StringUtils.isNotEmpty( personName )) {
//可以管理的栏目,肯定可以发布信息
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( ProjectTemplate_.participantPersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( ProjectTemplate_.creatorPerson ), personName ) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( ProjectTemplate_.executor ), personName ) );
}*/
Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( WCrmConfig_.class, cb, p_permission, root, queryFilter );
cq.distinct(true).select( root.get(WCrmConfig_.id) );
return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
......@@ -130,5 +102,5 @@ public class ConfigFactory extends AbstractFactory {
Predicate p = cb.equal(root.get(WCrmConfig_.configModule), configModule);
return em.createQuery(cq.where(p)).getResultList();
}
}
......@@ -129,7 +129,6 @@ public class ContactsFactory extends AbstractFactory {
_order = CriteriaQueryTools.setOrder(cb, root, Contacts_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
System.out.println("cq="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}
......
......@@ -299,7 +299,6 @@ public class CustomerFactory extends AbstractFactory {
// cq.select(root).where(p).orderBy(cb.desc(root.get(Customer_.createTime)));
// return em.createQuery(cq).getResultList();
cq.select(root).where(p).orderBy(_order);
System.out.println("List_OwnerEqual_Or_ReadersMember_Or_WritesMember==="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}
......@@ -401,7 +400,7 @@ public class CustomerFactory extends AbstractFactory {
//SELECT op.XCRMID,MAX(op.XLONGCREATETIME) FROM PUBLIC.WCRM_OPERATIONRECORD AS op WHERE op.XMODULE='customer' GROUP BY op.XCRMID;
/**
* 列出,指定module类型的操作记录,按照crmid分组展示每组的最大值
*
*
* @param {_module}
* @return SimpleKV
*/
......@@ -426,7 +425,7 @@ public class CustomerFactory extends AbstractFactory {
CustomerAndLastRecord e = new CustomerAndLastRecord();
e.setLastRecord_Id(o.get(_path_oprecord_crmid));
e.setLastRecord_LongTime(o.get(_path_oprecord_createtime));
Date date = new Date();
date.setTime(o.get(_path_oprecord_createtime));
//o.get(_path_oprecord_createtime);
......@@ -463,7 +462,7 @@ public class CustomerFactory extends AbstractFactory {
/**
* 根据计算每个省份的客户数量
*
*
* @throws Exception
*/
public List<SimpleKV> count_by_province(List<String> _distinguishNameList,Date begintime, Date endtime) throws Exception {
......@@ -546,7 +545,7 @@ public class CustomerFactory extends AbstractFactory {
CriteriaQuery<Customer> cq = cb.createQuery(Customer.class);
Root<Customer> root = cq.from(Customer.class);
Predicate p = root.get(Customer_.owneruser).in(_distinguishNameList);
//跟进状态
if (isflow) {
Predicate p_follow_followed = cb.equal(root.get(Customer_.follow), "已跟进");
......@@ -557,11 +556,11 @@ public class CustomerFactory extends AbstractFactory {
Predicate p_follow = cb.or(p_follow_isnull, p_follow_unfollow);
p = cb.and(p, p_follow);
}
//时间范围
Predicate p_between = cb.between(root.get(Customer_.nexttime), beginTime, endTime);
p = cb.and(p, p_between);
//搜索关键字判断
if (!StringWCRMUtils.isEmptyKeyString(keyString)) {
String key = StringUtils.trim(StringUtils.replaceEach(keyString, new String[] { "\u3000", "?", "%" }, new String[] { " ", "", "" }));
......@@ -570,7 +569,7 @@ public class CustomerFactory extends AbstractFactory {
cb.like(root.get(Customer_.pinyinInitial), "%" + key + "%"), cb.like(root.get(Customer_.telephone), "%" + key + "%"));
p = cb.and(p, p_like);
}
//排序值字段,升降序判断
Order _order;
if (StringUtils.isEmpty(orderType) || StringUtils.isEmpty(orderFieldName) || null == orderType || null == orderFieldName) {
......@@ -578,7 +577,7 @@ public class CustomerFactory extends AbstractFactory {
} else {
_order = CriteriaQueryTools.setOrder(cb, root, Customer_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}*/
......
......@@ -217,7 +217,6 @@ public class OpportunityFactory extends AbstractFactory {
_order = CriteriaQueryTools.setOrder(cb, root, Opportunity_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
System.out.println("cq="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
......
package com.x.wcrm.assemble.control.jaxrs.inputleads;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoFile;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import java.util.Optional;
import net.sf.ehcache.Element;
/**
* @author sword
*/
public class ActionGetResult extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionGetResult.class);
protected ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
logger.debug(effectivePerson, "flag:{}.", flag);
logger.debug(effectivePerson.getDistinguishedName());
ActionResult<Wo> result = new ActionResult<>();
Element element = cache.get(flag);
if (null == element || (null == element.getObjectValue())) {
Cache.CacheKey cacheKey = new Cache.CacheKey(flag);
Optional<?> optional = CacheManager.get(cache, cacheKey);
if (!optional.isPresent()) {
throw new ExceptionResultNotFound(flag);
}
CacheInputResult o = (CacheInputResult) element.getObjectValue();
CacheInputResult o = (CacheInputResult) optional.get();
Wo wo = new Wo(o.getBytes(), this.contentType(true, o.getName()), this.contentDisposition(true, o.getName()));
result.setData(wo);
return result;
......@@ -33,4 +38,4 @@ public class ActionGetResult extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -3,10 +3,10 @@ package com.x.wcrm.assemble.control.jaxrs.inputleads;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormatter;
......@@ -30,11 +30,10 @@ import com.x.base.core.project.tools.StringTools;
import com.x.wcrm.assemble.control.Business;
import com.x.wcrm.core.entity.Leads;
import net.sf.ehcache.Element;
public class ActionInput extends BaseAction {
//这个功能还没有写完,暂时放下,写其他服务。
Logger logger = LoggerFactory.getLogger(ActionInput.class);
private static Logger logger = LoggerFactory.getLogger(ActionInput.class);
private static int SHEET_NUMBER = 0; //读取的数据sheet
private static int BEGINROW_NUMBER = 1; //起始行
......@@ -47,7 +46,6 @@ public class ActionInput extends BaseAction {
Business business = new Business(emc);
ActionResult<Wo> result = new ActionResult<>();
String name = "leads_result_" + DateTools.formatDate(new Date()) + ".xlsx";
//this.scanAndComment(business, workbook);
this.persist(business, workbook, effectivePerson);
workbook.write(os);
......@@ -55,7 +53,8 @@ public class ActionInput extends BaseAction {
cacheInputResult.setName(name);
cacheInputResult.setBytes(os.toByteArray());
String flag = StringTools.uniqueToken();
cache.put(new Element(flag, cacheInputResult));
Cache.CacheKey cacheKey = new Cache.CacheKey(flag);
CacheManager.put(cache, cacheKey, cacheInputResult);
Wo wo = new Wo();
wo.setFlag(flag);
......
package com.x.wcrm.assemble.control.jaxrs.inputleads;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.wcrm.assemble.control.service.LeadsService;
import net.sf.ehcache.Ehcache;
public class BaseAction extends StandardJaxrsAction {
protected Ehcache cache = ApplicationCache.instance().getCache(CacheInputResult.class);
protected Cache.CacheCategory cache = new Cache.CacheCategory(CacheInputResult.class);
protected LeadsService leadsService = new LeadsService();
public static class CacheInputResult {
private String name;
......
<?xml version="1.0" encoding="UTF-8"?><web-app id="x_wcrm_assemble_control" metadata-complete="false" version="3.0"><display-name>x_wcrm_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.wcrm.assemble.control.x_wcrm_assemble_control</param-value></context-param></web-app>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?><web-app id="x_wcrm_assemble_control" metadata-complete="false" version="3.0"><display-name>x_wcrm_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.wcrm.assemble.control.x_wcrm_assemble_control</param-value></context-param><welcome-file-list><welcome-file>/index.html</welcome-file></welcome-file-list></web-app>
\ No newline at end of file
......@@ -120,6 +120,18 @@
"type": "byte[]",
"isCollection": false,
"description": "字节内容."
},
{
"name": "streamingOutput",
"type": "StreamingOutput",
"isCollection": false,
"description": "附件流."
},
{
"name": "contentLength",
"type": "Long",
"isCollection": false,
"description": "附件大小."
}
]
},
......@@ -161,6 +173,18 @@
"type": "byte[]",
"isCollection": false,
"description": "字节内容."
},
{
"name": "streamingOutput",
"type": "StreamingOutput",
"isCollection": false,
"description": "附件流."
},
{
"name": "contentLength",
"type": "Long",
"isCollection": false,
"description": "附件大小."
}
]
},
......@@ -411,6 +435,29 @@
}
]
},
{
"name": "detail",
"className": "com.x.base.core.project.jaxrs.cache.ActionDetail",
"description": "显示缓存状态.",
"type": "GET",
"path": "jaxrs/cache/detail",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "String",
"isCollection": false,
"description": "字符串值"
}
]
},
{
"name": "receive",
"className": "com.x.base.core.project.jaxrs.cache.ActionReceive",
......@@ -8867,6 +8914,18 @@
"type": "byte[]",
"isCollection": false,
"description": "字节内容."
},
{
"name": "streamingOutput",
"type": "StreamingOutput",
"isCollection": false,
"description": "附件流."
},
{
"name": "contentLength",
"type": "Long",
"isCollection": false,
"description": "附件大小."
}
]
},
......@@ -11485,128 +11544,6 @@
}
]
},
{
"name": "LoggerAction",
"className": "com.x.base.core.project.jaxrs.logger.LoggerAction",
"description": "日志操作",
"methods": [
{
"name": "debug",
"className": "com.x.base.core.project.jaxrs.logger.ActionDebug",
"description": "设置日志级别为DEBUG.",
"type": "GET",
"path": "jaxrs/logger/debug",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "Boolean",
"isCollection": false,
"description": "布尔值."
}
]
},
{
"name": "get",
"className": "com.x.base.core.project.jaxrs.logger.ActionGet",
"description": "获取当前日志级别.",
"type": "GET",
"path": "jaxrs/logger",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "String",
"isCollection": false,
"description": "字符串值"
}
]
},
{
"name": "info",
"className": "com.x.base.core.project.jaxrs.logger.ActionInfo",
"description": "设置日志级别为INFO",
"type": "GET",
"path": "jaxrs/logger/info",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "Boolean",
"isCollection": false,
"description": "布尔值."
}
]
},
{
"name": "trace",
"className": "com.x.base.core.project.jaxrs.logger.ActionTrace",
"description": "设置日志级别为TRACE.",
"type": "GET",
"path": "jaxrs/logger/trace",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "Boolean",
"isCollection": false,
"description": "布尔值."
}
]
},
{
"name": "warn",
"className": "com.x.base.core.project.jaxrs.logger.ActionWarn",
"description": "设置日志级别为WARN",
"type": "GET",
"path": "jaxrs/logger/warn",
"contentType": "application/json",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": false,
"pathParameters": [],
"formParameters": [],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "Boolean",
"isCollection": false,
"description": "布尔值."
}
]
}
]
},
{
"name": "OperationRecordAction",
"className": "com.x.wcrm.assemble.control.jaxrs.operationrecord.OperationRecordAction",
......@@ -17615,51 +17552,6 @@
"queryParameters": [],
"ins": [],
"outs": []
},
{
"name": "uploadResource",
"className": "com.x.base.core.project.jaxrs.sysresource.ActionUploadResource",
"description": "上传静态资源(仅上传到当前服务器)",
"type": "POST",
"path": "jaxrs/sysresource/upload/resource/as/new/{asNew}",
"contentType": "multipart/form-data",
"resultContentType": "application/json; charset\u003dUTF-8",
"useJsonElementParameter": false,
"useStringParameter": true,
"pathParameters": [
{
"name": "asNew",
"type": "Boolean",
"description": "覆盖类型:true删除原文件然后上传,false覆盖原文件"
}
],
"formParameters": [
{
"name": "file",
"type": "File",
"description": "上传文件"
},
{
"name": "fileName",
"type": "String",
"description": "附件名称"
},
{
"name": "filePath",
"type": "String",
"description": "附件存放目录(可以为空)"
}
],
"queryParameters": [],
"ins": [],
"outs": [
{
"name": "value",
"type": "Boolean",
"isCollection": false,
"description": "布尔值."
}
]
}
]
}
......
......@@ -192,26 +192,20 @@ public class Business {
/**
* TODO 判断用户是否管理员权限 1、person.isManager() 2、xadmin 3、CRMManager
*
*
* @param request
* @return
* @throws Exception
*/
public boolean isManager(HttpServletRequest request, EffectivePerson person) throws Exception {
// 如果用户的身份是平台的超级管理员,那么就是超级管理员权限
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
if (person.isManager()) {
return true;
}
if (organization().person().hasRole(person, OrganizationDefinition.Manager,
OrganizationDefinition.CRMManager_discription)) {
return true;
}
/*if (person.isManager()) {
OrganizationDefinition.CMSManager)) {
return true;
}
if (isHasPlatformRole(person.getDistinguishedName(), ThisApplication.ROLE_CRMManager)) {
return true;
}*/
return false;
}
......@@ -223,21 +217,11 @@ public class Business {
*/
public boolean isManager(EffectivePerson person) throws Exception {
// 如果用户的身份是平台的超级管理员,那么就是超级管理员权限
/*if (person.isManager()) {
return true;
}
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
return true;
}
if (isHasPlatformRole(person.getDistinguishedName(), ThisApplication.ROLE_CRMManager)) {
return true;
}*/
if ("xadmin".equalsIgnoreCase(person.getDistinguishedName())) {
if (person.isManager()) {
return true;
}
if (organization().person().hasRole(person, OrganizationDefinition.Manager,
OrganizationDefinition.CRMManager_discription)) {
OrganizationDefinition.CMSManager)) {
return true;
}
return false;
......
package com.x.wcrm.assemble.control.factory;
import com.x.base.core.project.exception.ExceptionWhen;
import com.x.base.core.project.tools.ListTools;
import com.x.wcrm.assemble.control.AbstractFactory;
import com.x.wcrm.assemble.control.Business;
import com.x.wcrm.core.entity.WCrmConfig;
......@@ -12,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;
......@@ -31,15 +29,7 @@ public class ConfigFactory extends AbstractFactory {
public WCrmConfig get(String id ) throws Exception {
return this.entityManagerContainer().find( id, WCrmConfig.class, ExceptionWhen.none );
}
/*public ProjectDetail getDetail(String id) throws Exception {
return this.entityManagerContainer().find( id, ProjectDetail.class, ExceptionWhen.none );
}*/
/**
* 根据条件查询符合条件的项目信息ID,根据上一条的sequnce查询指定数量的信息
* @param maxCount
......@@ -57,17 +47,9 @@ public class ConfigFactory extends AbstractFactory {
CriteriaQuery<WCrmConfig> cq = cb.createQuery(WCrmConfig.class);
Root<WCrmConfig> root = cq.from(WCrmConfig.class);
Predicate p_permission = null;
/*if( StringUtils.isNotEmpty( personName )) {
//可以管理的栏目,肯定可以发布信息
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.participantPersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.creatorPerson ), personName ) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( Project_.executor ), personName ) );
}*/
Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( WCrmConfig_.class, cb, p_permission, root, queryFilter );
if( sequenceFieldValue != null && StringUtils.isNotEmpty( sequenceFieldValue.toString() )) {
Predicate p_seq = cb.isNotNull( root.get( WCrmConfig_.sequence ) );
if( "desc".equalsIgnoreCase( orderType )){
......@@ -76,16 +58,15 @@ public class ConfigFactory extends AbstractFactory {
p_seq = cb.and( p_seq, cb.greaterThan( root.get( WCrmConfig_.sequence ), sequenceFieldValue.toString() ));
}
p = cb.and( p, p_seq);
}
}
Order orderWithField = CriteriaBuilderTools.getOrder( cb, root, WCrmConfig_.class, orderField, orderType );
if( orderWithField != null ){
cq.orderBy( orderWithField );
}
System.out.println(">>>SQL:" + em.createQuery(cq.where(p)).setMaxResults( maxCount).toString() );
return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
}
/**
* 根据条件查询所有符合条件的项目模板信息ID,项目信息不会很多 ,所以直接查询出来
* @param maxCount
......@@ -100,16 +81,7 @@ public class ConfigFactory extends AbstractFactory {
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<WCrmConfig> root = cq.from(WCrmConfig.class);
Predicate p_permission = null;
/*if( StringUtils.isNotEmpty( personName )) {
//可以管理的栏目,肯定可以发布信息
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( ProjectTemplate_.participantPersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.isMember( personName, root.get( Project_.manageablePersonList )) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( ProjectTemplate_.creatorPerson ), personName ) );
p_permission = CriteriaBuilderTools.predicate_or( cb, p_permission, cb.equal( root.get( ProjectTemplate_.executor ), personName ) );
}*/
Predicate p = CriteriaBuilderTools.composePredicateWithQueryFilter( WCrmConfig_.class, cb, p_permission, root, queryFilter );
cq.distinct(true).select( root.get(WCrmConfig_.id) );
return em.createQuery(cq.where(p)).setMaxResults( maxCount).getResultList();
......@@ -130,5 +102,5 @@ public class ConfigFactory extends AbstractFactory {
Predicate p = cb.equal(root.get(WCrmConfig_.configModule), configModule);
return em.createQuery(cq.where(p)).getResultList();
}
}
......@@ -129,7 +129,6 @@ public class ContactsFactory extends AbstractFactory {
_order = CriteriaQueryTools.setOrder(cb, root, Contacts_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
System.out.println("cq="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}
......
......@@ -299,7 +299,6 @@ public class CustomerFactory extends AbstractFactory {
// cq.select(root).where(p).orderBy(cb.desc(root.get(Customer_.createTime)));
// return em.createQuery(cq).getResultList();
cq.select(root).where(p).orderBy(_order);
System.out.println("List_OwnerEqual_Or_ReadersMember_Or_WritesMember==="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}
......@@ -401,7 +400,7 @@ public class CustomerFactory extends AbstractFactory {
//SELECT op.XCRMID,MAX(op.XLONGCREATETIME) FROM PUBLIC.WCRM_OPERATIONRECORD AS op WHERE op.XMODULE='customer' GROUP BY op.XCRMID;
/**
* 列出,指定module类型的操作记录,按照crmid分组展示每组的最大值
*
*
* @param {_module}
* @return SimpleKV
*/
......@@ -426,7 +425,7 @@ public class CustomerFactory extends AbstractFactory {
CustomerAndLastRecord e = new CustomerAndLastRecord();
e.setLastRecord_Id(o.get(_path_oprecord_crmid));
e.setLastRecord_LongTime(o.get(_path_oprecord_createtime));
Date date = new Date();
date.setTime(o.get(_path_oprecord_createtime));
//o.get(_path_oprecord_createtime);
......@@ -463,7 +462,7 @@ public class CustomerFactory extends AbstractFactory {
/**
* 根据计算每个省份的客户数量
*
*
* @throws Exception
*/
public List<SimpleKV> count_by_province(List<String> _distinguishNameList,Date begintime, Date endtime) throws Exception {
......@@ -546,7 +545,7 @@ public class CustomerFactory extends AbstractFactory {
CriteriaQuery<Customer> cq = cb.createQuery(Customer.class);
Root<Customer> root = cq.from(Customer.class);
Predicate p = root.get(Customer_.owneruser).in(_distinguishNameList);
//跟进状态
if (isflow) {
Predicate p_follow_followed = cb.equal(root.get(Customer_.follow), "已跟进");
......@@ -557,11 +556,11 @@ public class CustomerFactory extends AbstractFactory {
Predicate p_follow = cb.or(p_follow_isnull, p_follow_unfollow);
p = cb.and(p, p_follow);
}
//时间范围
Predicate p_between = cb.between(root.get(Customer_.nexttime), beginTime, endTime);
p = cb.and(p, p_between);
//搜索关键字判断
if (!StringWCRMUtils.isEmptyKeyString(keyString)) {
String key = StringUtils.trim(StringUtils.replaceEach(keyString, new String[] { "\u3000", "?", "%" }, new String[] { " ", "", "" }));
......@@ -570,7 +569,7 @@ public class CustomerFactory extends AbstractFactory {
cb.like(root.get(Customer_.pinyinInitial), "%" + key + "%"), cb.like(root.get(Customer_.telephone), "%" + key + "%"));
p = cb.and(p, p_like);
}
//排序值字段,升降序判断
Order _order;
if (StringUtils.isEmpty(orderType) || StringUtils.isEmpty(orderFieldName) || null == orderType || null == orderFieldName) {
......@@ -578,7 +577,7 @@ public class CustomerFactory extends AbstractFactory {
} else {
_order = CriteriaQueryTools.setOrder(cb, root, Customer_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize).getResultList();
}*/
......
......@@ -217,7 +217,6 @@ public class OpportunityFactory extends AbstractFactory {
_order = CriteriaQueryTools.setOrder(cb, root, Opportunity_.class, orderFieldName, orderType);
}
cq.select(root).where(p).orderBy(_order);
System.out.println("cq="+cq.toString());
return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
.getResultList();
}
......
package com.x.wcrm.assemble.control.jaxrs.inputleads;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoFile;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import java.util.Optional;
import net.sf.ehcache.Element;
/**
* @author sword
*/
public class ActionGetResult extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionGetResult.class);
protected ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
logger.debug(effectivePerson, "flag:{}.", flag);
logger.debug(effectivePerson.getDistinguishedName());
ActionResult<Wo> result = new ActionResult<>();
Element element = cache.get(flag);
if (null == element || (null == element.getObjectValue())) {
Cache.CacheKey cacheKey = new Cache.CacheKey(flag);
Optional<?> optional = CacheManager.get(cache, cacheKey);
if (!optional.isPresent()) {
throw new ExceptionResultNotFound(flag);
}
CacheInputResult o = (CacheInputResult) element.getObjectValue();
CacheInputResult o = (CacheInputResult) optional.get();
Wo wo = new Wo(o.getBytes(), this.contentType(true, o.getName()), this.contentDisposition(true, o.getName()));
result.setData(wo);
return result;
......@@ -33,4 +38,4 @@ public class ActionGetResult extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -3,10 +3,10 @@ package com.x.wcrm.assemble.control.jaxrs.inputleads;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormatter;
......@@ -30,11 +30,10 @@ import com.x.base.core.project.tools.StringTools;
import com.x.wcrm.assemble.control.Business;
import com.x.wcrm.core.entity.Leads;
import net.sf.ehcache.Element;
public class ActionInput extends BaseAction {
//这个功能还没有写完,暂时放下,写其他服务。
Logger logger = LoggerFactory.getLogger(ActionInput.class);
private static Logger logger = LoggerFactory.getLogger(ActionInput.class);
private static int SHEET_NUMBER = 0; //读取的数据sheet
private static int BEGINROW_NUMBER = 1; //起始行
......@@ -47,7 +46,6 @@ public class ActionInput extends BaseAction {
Business business = new Business(emc);
ActionResult<Wo> result = new ActionResult<>();
String name = "leads_result_" + DateTools.formatDate(new Date()) + ".xlsx";
//this.scanAndComment(business, workbook);
this.persist(business, workbook, effectivePerson);
workbook.write(os);
......@@ -55,7 +53,8 @@ public class ActionInput extends BaseAction {
cacheInputResult.setName(name);
cacheInputResult.setBytes(os.toByteArray());
String flag = StringTools.uniqueToken();
cache.put(new Element(flag, cacheInputResult));
Cache.CacheKey cacheKey = new Cache.CacheKey(flag);
CacheManager.put(cache, cacheKey, cacheInputResult);
Wo wo = new Wo();
wo.setFlag(flag);
......
package com.x.wcrm.assemble.control.jaxrs.inputleads;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.wcrm.assemble.control.service.LeadsService;
import net.sf.ehcache.Ehcache;
public class BaseAction extends StandardJaxrsAction {
protected Ehcache cache = ApplicationCache.instance().getCache(CacheInputResult.class);
protected Cache.CacheCategory cache = new Cache.CacheCategory(CacheInputResult.class);
protected LeadsService leadsService = new LeadsService();
public static class CacheInputResult {
private String name;
......
此差异已折叠。
......@@ -6,8 +6,8 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>o2oa</groupId>
<artifactId>o2server</artifactId>
<version>5</version>
<artifactId>o2oa-crm</artifactId>
<version>7.0</version>
</parent>
<artifactId>x_wcrm_core_entity</artifactId>
......@@ -18,30 +18,6 @@
<groupId>o2oa</groupId>
<artifactId>x_base_core_project</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_component_core_entity</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_file_core_entity</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_general_core_entity</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_message_core_entity</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_organization_core_entity</artifactId>
</dependency>
<dependency>
<groupId>o2oa</groupId>
<artifactId>x_organization_core_express</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
......@@ -49,6 +25,23 @@
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>TableBuilder</id>
<phase>prepare-package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<addOutputToClasspath>true</addOutputToClasspath>
<includePluginDependencies>true</includePluginDependencies>
<includeProjectDependencies>true</includeProjectDependencies>
<mainClass>com.x.base.core.project.annotation.TableBuilder</mainClass>
<arguments>
<argument>${basedir}</argument>
<argument>${project.build.sourceDirectory}</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>metaModelBuilder</id>
<phase>generate-sources</phase>
......@@ -109,7 +102,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>../../o2server/custom/jars</outputDirectory>
<outputDirectory>../store/jars</outputDirectory>
<resources>
<resource>
<directory>target</directory>
......@@ -135,4 +128,4 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
</project>
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册