sunyj 7 years ago
commit
3263a86da6

+ 50 - 0
.gitignore

@@ -0,0 +1,50 @@
+# --------------------
+# idea
+.idea/
+*.iml
+
+# --------------------
+# eclipse
+.settings/
+.classpath
+.project
+
+# --------------------
+# Java
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# --------------------
+# Maven
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+
+# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
+!/.mvn/wrapper/maven-wrapper.jar

+ 1 - 0
README.md

@@ -0,0 +1 @@
+## Inquiry Service

+ 75 - 0
pom.xml

@@ -0,0 +1,75 @@
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.uas.ps</groupId>
+        <artifactId>ps-parent</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <artifactId>ps-inquiry</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.uas.ps</groupId>
+            <artifactId>ps-core</artifactId>
+        </dependency>
+
+        <!-- spring boot -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-ehcache</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 42 - 0
src/main/java/com/uas/ps/inquiry/Application.java

@@ -0,0 +1,42 @@
+package com.uas.ps.inquiry;
+
+import com.uas.ps.inquiry.util.ContextUtils;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.event.ApplicationPreparedEvent;
+import org.springframework.context.ApplicationListener;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
+
+/**
+ * 应用入口
+ *
+ * @author sunyj
+ * @since 2017816日 下午4:00:03
+ */
+@EnableTransactionManagement
+@SpringBootApplication
+@EnableWebMvc
+public class Application {
+    public static void main(String[] args) throws FileNotFoundException {
+        File logFile = new File("logs/log.log");
+        if (!logFile.getParentFile().exists()) {
+            logFile.getParentFile().mkdir();
+        }
+        System.setErr(new PrintStream(new FileOutputStream(logFile, true)));
+        SpringApplication application = new SpringApplication(Application.class);
+        application.addListeners(new ApplicationListener<ApplicationPreparedEvent>() {
+            @Override
+            public void onApplicationEvent(ApplicationPreparedEvent event) {
+                ContextUtils.setApplicationContext(event.getApplicationContext());
+            }
+        });
+        application.run(args);
+    }
+}

+ 128 - 0
src/main/java/com/uas/ps/inquiry/DruidDBConfiguration.java

@@ -0,0 +1,128 @@
+package com.uas.ps.inquiry;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.support.http.StatViewServlet;
+import com.alibaba.druid.support.http.WebStatFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+
+@Configuration
+public class DruidDBConfiguration {
+
+    private Logger logger = LoggerFactory.getLogger(DruidDBConfiguration.class);
+
+    @Value("${datasource.url}")
+    private String url;
+
+    @Value("${datasource.username}")
+    private String username;
+
+    @Value("${datasource.password}")
+    private String password;
+
+    @Value("${datasource.driverClassName}")
+    private String driverClassName;
+
+    @Value("${datasource.initialSize}")
+    private int initialSize;
+
+    @Value("${datasource.minIdle}")
+    private int minIdle;
+
+    @Value("${datasource.maxActive}")
+    private int maxActive;
+
+    @Value("${datasource.maxWait}")
+    private int maxWait;
+
+    @Value("${datasource.timeBetweenEvictionRunsMillis}")
+    private int timeBetweenEvictionRunsMillis;
+
+    @Value("${datasource.minEvictableIdleTimeMillis}")
+    private int minEvictableIdleTimeMillis;
+
+    @Value("${datasource.validationQuery}")
+    private String validationQuery;
+
+    @Value("${datasource.testWhileIdle}")
+    private boolean testWhileIdle;
+
+    @Value("${datasource.testOnBorrow}")
+    private boolean testOnBorrow;
+
+    @Value("${datasource.testOnReturn}")
+    private boolean testOnReturn;
+
+    @Value("${datasource.timeBetweenLogStatsMillis}")
+    private int timeBetweenLogStatsMillis;
+
+    @Value("${datasource.poolPreparedStatements}")
+    private boolean poolPreparedStatements;
+
+    @Value("${datasource.maxPoolPreparedStatementPerConnectionSize}")
+    private int maxPoolPreparedStatementPerConnectionSize;
+
+    @Value("${datasource.filters}")
+    private String filters;
+
+    @Value("${datasource.connectionProperties}")
+    private String connectionProperties;
+
+    @Bean
+    @Primary
+    public DataSource dataSource() {
+        DruidDataSource dataSource = new DruidDataSource();
+
+        dataSource.setUrl(url);
+        dataSource.setUsername(username);
+        dataSource.setPassword(password);
+        dataSource.setDriverClassName(driverClassName);
+
+        // configuration
+        dataSource.setInitialSize(initialSize);
+        dataSource.setMinIdle(minIdle);
+        dataSource.setMaxActive(maxActive);
+        dataSource.setMaxWait(maxWait);
+        dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
+        dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
+        dataSource.setValidationQuery(validationQuery);
+        dataSource.setTestWhileIdle(testWhileIdle);
+        dataSource.setTestOnBorrow(testOnBorrow);
+        dataSource.setTestOnReturn(testOnReturn);
+        dataSource.setTimeBetweenLogStatsMillis(timeBetweenLogStatsMillis);
+        dataSource.setPoolPreparedStatements(poolPreparedStatements);
+        dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
+        try {
+            dataSource.setFilters(filters);
+        } catch (SQLException e) {
+            logger.error("数据源初始化失败: setFilters", e);
+        }
+        dataSource.setConnectionProperties(connectionProperties);
+        return dataSource;
+    }
+
+    @Bean
+    public ServletRegistrationBean servletRegistrationBean() {
+        return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
+    }
+
+    @Bean
+    public FilterRegistrationBean filterRegistrationBean() {
+        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
+        filterRegistrationBean.setFilter(new WebStatFilter());
+        filterRegistrationBean.addUrlPatterns("/*");
+        filterRegistrationBean.addInitParameter("exclusions",
+                "*.js,*.gif,*.jpg,*.png,*.bmp,*.css,*.ico,*.html,/druid/*");
+        return filterRegistrationBean;
+    }
+
+}

+ 71 - 0
src/main/java/com/uas/ps/inquiry/WebAppConfiguration.java

@@ -0,0 +1,71 @@
+package com.uas.ps.inquiry;
+
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Web相关配置
+ *
+ * @author sunyj
+ * @since 2017217日 下午5:45:38
+ */
+@Configuration
+@ComponentScan
+public class WebAppConfiguration extends WebMvcConfigurerAdapter {
+
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        // Spring boot默认资源路径在src/main/resources下,而非/src/main/webapp
+        // 使用/src/main/webapp下资源均需在此添加
+        registry.addResourceHandler("/static/**").addResourceLocations("/resources/");
+        registry.addResourceHandler("/WEB-INF/**").addResourceLocations("/WEB-INF/");
+        super.addResourceHandlers(registry);
+    }
+
+    @Override
+    public void configureViewResolvers(ViewResolverRegistry registry) {
+        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/WEB-INF/views/", ".html");
+        viewResolver.setContentType("text/html;charset=UTF-8");
+        registry.viewResolver(viewResolver);
+        super.configureViewResolvers(registry);
+    }
+
+    @Override
+    public void addViewControllers(ViewControllerRegistry registry) {
+        registry.addViewController("/").setViewName("index");
+        registry.addViewController("/index").setViewName("index");
+        super.addViewControllers(registry);
+    }
+
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
+        fastJsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);
+        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
+        converters.add(fastJsonHttpMessageConverter);
+
+        StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
+                Charset.forName("UTF-8"));
+        stringHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_HTML));
+        converters.add(stringHttpMessageConverter);
+        super.configureMessageConverters(converters);
+    }
+
+}

+ 715 - 0
src/main/java/com/uas/ps/inquiry/model/Product.java

@@ -0,0 +1,715 @@
+package com.uas.ps.inquiry.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 商品信息
+ *
+ * @author sunyj
+ * @since 2018/1/6 16:52
+ */
+@Entity
+@Table(name = "products")
+public class Product implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pr_id")
+    private Long id;
+
+    /**
+     * 商品信息标题
+     */
+    @Column(name = "pr_title")
+    private String title;
+
+    /**
+     * 产品编号
+     */
+    @Column(name = "pr_code")
+    private String code;
+
+    /**
+     * 产品规格
+     */
+    @Column(name = "pr_spec")
+    private String spec;
+
+    /**
+     * 单位
+     */
+    @Column(name = "pr_unit")
+    private String unit;
+
+    /**
+     * 所属企业UU
+     */
+    @Column(name = "pr_enuu")
+    // TODO @EnterpriseUU
+    private Long enUU;
+
+    /**
+     * 个人UU
+     */
+    @Column(name = "pr_useruu")
+    // TODO @UserUU
+    private Long userUU;
+
+    /**
+     * 最小包装量
+     */
+    @Column(name = "pr_minpack")
+    private Double minPack;
+
+    /**
+     * 最小采购量
+     */
+    @Column(name = "pr_minorder")
+    private Double minOrder;
+
+    /**
+     * 采购提前期
+     */
+    @Column(name = "pr_leadtime")
+    private Double leadtime;
+
+    /**
+     * 备货提前期(天数)
+     */
+    @Column(name = "pr_ltinstock")
+    private Double ltinstock;
+
+    /**
+     * 状态
+     */
+    @Column(name = "pr_status")
+    // TODO @StatusColumn
+    private Integer status;
+
+    /**
+     * 库存数
+     */
+    @Column(name = "pr_stock")
+    private Double stock;
+
+    /**
+     * 价格
+     */
+    @Column(name = "pr_price")
+    private Double price;
+
+    /**
+     * 品牌(ERP)
+     */
+    @Column(name = "pr_brand")
+    private String brand;
+
+    /**
+     * 发货地址
+     */
+    @Column(name = "pr_shipaddr")
+    private String shipAddr;
+
+    /**
+     * 买方ERP物料ID
+     */
+    @Column(name = "pr_sourceid")
+    private Long sourceId;
+
+    /**
+     * 保存erp传入数据的时间
+     *
+     * @return
+     */
+    @Column(name = "pr_erpdate")
+    private Date erpDate;
+
+    /**
+     * 原厂型号(erp)
+     *
+     * @return
+     */
+    @Column(name = "pr_cmpcode")
+    private String cmpCode;
+
+    /**
+     * UUID 标准料号
+     *
+     * @return
+     */
+    @Column(name = "pr_cmpuuid")
+    private String cmpUuId;
+
+    /**
+     * 应用来源<br>
+     * 平台上传的为可以销售的
+     *
+     * @return
+     */
+    @Column(name = "pr_sourceapp")
+    private String sourceApp;
+
+    /**
+     * 是否可卖<br>
+     * 1. 可以卖 <br>
+     * 0. 不可
+     */
+    @Column(name = "pr_issale")
+    private Short isSale;
+
+    /**
+     * 是否可买<br>
+     * 1. 可以买<br>
+     * 0. 不可
+     */
+    @Column(name = "pr_ispurchase")
+    private Short isPurchase;
+
+    /**
+     * 公开展示<br>
+     * <p>
+     * 1. 是<br>
+     * 0. 否
+     */
+    @Column(name = "pr_isshow")
+    private Short isShow;
+
+    /**
+     * 公开销售 <br>
+     * 1. 是<br>
+     * 0. 否
+     */
+    @Column(name = "pr_ispubsale")
+    private Short isPubsale;
+
+    /**
+     * 附件
+     */
+    @OneToOne(cascade = {CascadeType.ALL})
+    @JoinColumn(name = "pr_attachment")
+    private Attach attach;
+
+    /**
+     * 类目(平台)(中文)
+     */
+    @Column(name = "pr_kind")
+    private String kind;
+
+    /**
+     * 品牌(平台)(中文)
+     */
+    @Column(name = "pr_pbrand")
+    private String pbrand;
+
+    /**
+     * 型号(平台)
+     */
+    @Column(name = "pr_pcmpcode")
+    private String pcmpcode;
+
+    /**
+     * 信息提示(导入物料时给出提示)
+     */
+    @Column(name = "pr_message")
+    private String message;
+
+    /**
+     * 是否是标准物料<br>
+     * 1.YES<br>
+     * 0.NO
+     */
+    @Column(name = "pr_standard")
+    private Short standard;
+
+    /**
+     * 类目(平台)(英文)
+     */
+    @Column(name = "pr_kinden")
+    private String kinden;
+
+    /**
+     * 品牌(平台)(英文)
+     */
+    @Column(name = "pr_pbranden")
+    private String pbranden;
+
+    /**
+     * 匹配状态(记录匹配状态,方便下次查看)
+     */
+    @Column(name = "pr_matchstatus")
+    private Integer matchstatus;
+
+    /**
+     * 匹配数量(用作排序)
+     */
+    @Column(name = "pr_matchsize")
+    private Integer matchsize;
+
+    /**
+     * 匹配结果
+     */
+    @OneToMany(mappedBy = "product", cascade = {CascadeType.REFRESH}, fetch = FetchType.EAGER)
+    private Set<ProductMatchResult> matchresults;
+
+    /**
+     * 下载状态,平台更新ERP的数据后,将数据回传回ERP更新
+     */
+    @Column(name = "pr_downloadstatus")
+    private Integer downloadstatus;
+
+    /**
+     * 是否有业务逻辑关系<br>
+     * 1. 是<br>
+     * 0. 否
+     */
+    @Column(name = "pr_isbusiness")
+    private Short isbusiness;
+
+    /**
+     * 图片
+     */
+    @Column(name = "pr_cmpimg")
+    private String img;
+
+    /**
+     * 包装
+     */
+    @Column(name = "pr_encapsulation")
+    private String encapsulation;
+
+    /**
+     * b2c可用状态;<br>
+     * 1 为不存在相同的记录。<br>
+     * 0 为已经存在相同的记录
+     */
+    @Column(name = "pr_b2cenabled")
+    private Short b2cenabled;
+
+    /**
+     * uas与b2b可用状态;<br>
+     * 1 已禁用 <br>
+     * 0 可用状态,未禁用
+     */
+    @Column(name = "pr_b2benabled")
+    private Short b2benabled;
+
+    /**
+     * 匹配成标准的日期
+     */
+    @Column(name = "pr_tostandard")
+    private Date tostandard;
+
+    /**
+     * 编码版本号
+     */
+    @Column(name = "pr_goodsnover")
+    private String goodsnover;
+
+    /**
+     * 税收分类编码
+     */
+    @Column(name = "pr_goodstaxno")
+    private String goodstaxno;
+
+    /**
+     * 是否享受优惠政策
+     */
+    @Column(name = "pr_taxpre")
+    private String taxpre;
+
+    /**
+     * 享受优惠政策内容
+     */
+    @Column(name = "pr_taxprecon")
+    private String taxprecon;
+
+
+    public Product() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public Double getMinPack() {
+        return minPack;
+    }
+
+    public void setMinPack(Double minPack) {
+        this.minPack = minPack;
+    }
+
+    public Double getMinOrder() {
+        return minOrder;
+    }
+
+    public void setMinOrder(Double minOrder) {
+        this.minOrder = minOrder;
+    }
+
+    public Double getLeadtime() {
+        return leadtime;
+    }
+
+    public void setLeadtime(Double leadtime) {
+        this.leadtime = leadtime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Double getStock() {
+        return stock;
+    }
+
+    public void setStock(Double stock) {
+        this.stock = stock;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public String getShipAddr() {
+        return shipAddr;
+    }
+
+    public void setShipAddr(String shipAddr) {
+        this.shipAddr = shipAddr;
+    }
+
+    public Double getLtinstock() {
+        return ltinstock;
+    }
+
+    public void setLtinstock(Double ltinstock) {
+        this.ltinstock = ltinstock;
+    }
+
+    public Long getSourceId() {
+        return sourceId;
+    }
+
+    public void setSourceId(Long sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    public Date getErpDate() {
+        return erpDate;
+    }
+
+    public void setErpDate(Date erpDate) {
+        this.erpDate = erpDate;
+    }
+
+    public String getCmpCode() {
+        return cmpCode;
+    }
+
+    public void setCmpCode(String cmpCode) {
+        this.cmpCode = cmpCode;
+    }
+
+    public String getCmpUuId() {
+        return cmpUuId;
+    }
+
+    public void setCmpUuId(String cmpUuId) {
+        this.cmpUuId = cmpUuId;
+    }
+
+    @Override
+    public String toString() {
+        return "编号:" + getCode() + ",标题:" + getTitle() + ",规格型号:" + getSpec();
+    }
+
+    public String getSourceApp() {
+        return sourceApp;
+    }
+
+    public void setSourceApp(String sourceApp) {
+        this.sourceApp = sourceApp;
+    }
+
+    public Attach getAttach() {
+        return attach;
+    }
+
+    public void setAttach(Attach attach) {
+        this.attach = attach;
+    }
+
+    public Short getIsSale() {
+        return isSale;
+    }
+
+    public void setIsSale(Short isSale) {
+        this.isSale = isSale;
+    }
+
+    public Short getIsPurchase() {
+        return isPurchase;
+    }
+
+    public void setIsPurchase(Short isPurchase) {
+        this.isPurchase = isPurchase;
+    }
+
+    public Short getIsShow() {
+        return isShow;
+    }
+
+    public void setIsShow(Short isShow) {
+        this.isShow = isShow;
+    }
+
+    public Short getIsPubsale() {
+        return isPubsale;
+    }
+
+    public void setIsPubsale(Short isPubsale) {
+        this.isPubsale = isPubsale;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public String getPbrand() {
+        return pbrand;
+    }
+
+    public void setPbrand(String pbrand) {
+        this.pbrand = pbrand;
+    }
+
+    public String getPcmpcode() {
+        return pcmpcode;
+    }
+
+    public void setPcmpcode(String pcmpcode) {
+        this.pcmpcode = pcmpcode;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public Short getStandard() {
+        return standard;
+    }
+
+    public void setStandard(Short standard) {
+        this.standard = standard;
+    }
+
+    public String getKinden() {
+        return kinden;
+    }
+
+    public void setKinden(String kinden) {
+        this.kinden = kinden;
+    }
+
+    public String getPbranden() {
+        return pbranden;
+    }
+
+    public void setPbranden(String pbranden) {
+        this.pbranden = pbranden;
+    }
+
+    public Integer getMatchstatus() {
+        return matchstatus;
+    }
+
+    public void setMatchstatus(Integer matchstatus) {
+        this.matchstatus = matchstatus;
+    }
+
+    public Integer getMatchsize() {
+        return matchsize;
+    }
+
+    public void setMatchsize(Integer matchsize) {
+        this.matchsize = matchsize;
+    }
+
+    public Set<ProductMatchResult> getMatchresults() {
+        return matchresults;
+    }
+
+    public void setMatchresults(Set<ProductMatchResult> matchresults) {
+        this.matchresults = matchresults;
+    }
+
+    public Integer getDownloadstatus() {
+        return downloadstatus;
+    }
+
+    public void setDownloadstatus(Integer downloadstatus) {
+        this.downloadstatus = downloadstatus;
+    }
+
+    public Short getIsbusiness() {
+        return isbusiness;
+    }
+
+    public void setIsbusiness(Short isbusiness) {
+        this.isbusiness = isbusiness;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public String getEncapsulation() {
+        return encapsulation;
+    }
+
+    public void setEncapsulation(String encapsulation) {
+        this.encapsulation = encapsulation;
+    }
+
+    public Short getB2cenabled() {
+        return b2cenabled;
+    }
+
+    public void setB2cenabled(Short b2cenabled) {
+        this.b2cenabled = b2cenabled;
+    }
+
+    public Short getB2benabled() {
+        return b2benabled;
+    }
+
+    public void setB2benabled(Short b2benabled) {
+        this.b2benabled = b2benabled;
+    }
+
+    public Date getTostandard() {
+        return tostandard;
+    }
+
+    public void setTostandard(Date tostandard) {
+        this.tostandard = tostandard;
+    }
+
+    public String getGoodsnover() {
+        return goodsnover;
+    }
+
+    public void setGoodsnover(String goodsnover) {
+        this.goodsnover = goodsnover;
+    }
+
+    public String getGoodstaxno() {
+        return goodstaxno;
+    }
+
+    public void setGoodstaxno(String goodstaxno) {
+        this.goodstaxno = goodstaxno;
+    }
+
+    public String getTaxpre() {
+        return taxpre;
+    }
+
+    public void setTaxpre(String taxpre) {
+        this.taxpre = taxpre;
+    }
+
+    public String getTaxprecon() {
+        return taxprecon;
+    }
+
+    public void setTaxprecon(String taxprecon) {
+        this.taxprecon = taxprecon;
+    }
+}

+ 72 - 0
src/main/java/com/uas/ps/inquiry/util/ContextUtils.java

@@ -0,0 +1,72 @@
+package com.uas.ps.inquiry.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * spring容器上下文对象
+ *
+ * @author yingp
+ */
+public class ContextUtils {
+    private static ApplicationContext applicationContext;
+
+    private static Logger logger = LoggerFactory.getLogger(ContextUtils.class);
+
+    public static ApplicationContext getApplicationContext() {
+        synchronized (ContextUtils.class) {
+            while (applicationContext == null) {
+                try {
+                    logger.debug("getApplicationContext, wait...");
+                    ContextUtils.class.wait(60000);
+                    if (applicationContext == null) {
+                        logger.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
+                    }
+                } catch (InterruptedException ex) {
+                    logger.debug("getApplicationContext, wait interrupted");
+                }
+            }
+            return applicationContext;
+        }
+    }
+
+    public static void setApplicationContext(ApplicationContext applicationContext) {
+        synchronized (ContextUtils.class) {
+            logger.debug("setApplicationContext, notifyAll");
+            ContextUtils.applicationContext = applicationContext;
+            ContextUtils.class.notifyAll();
+        }
+    }
+
+    /**
+     * 获取bean
+     *
+     * @param name
+     * @return
+     */
+    public static Object getBean(String name) {
+        return getApplicationContext().getBean(name);
+    }
+
+    /**
+     * 获取bean
+     *
+     * @param cls
+     * @return
+     */
+    public static <T> T getBean(Class<T> cls) {
+        return getApplicationContext().getBean(cls);
+    }
+
+    /**
+     * 触发事件
+     *
+     * @param event
+     */
+    public static void publishEvent(ApplicationEvent event) {
+        getApplicationContext().publishEvent(event);
+    }
+
+}

+ 19 - 0
src/main/resources/application.yml

@@ -0,0 +1,19 @@
+spring:
+ jpa:
+  database: MYSQL
+  show-sql: false
+  properties:
+   hibernate:
+    dialect: org.hibernate.dialect.MySQL5Dialect
+    hbm2ddl:
+     auto: update
+
+security:
+ basic:
+  enabled: true
+  path: /**
+ user:
+  name: inquiry-admin
+  password: select111***
+  role: ADMIN
+ ignored: false

+ 19 - 0
src/main/resources/config/application-dev.properties

@@ -0,0 +1,19 @@
+datasource.url=jdbc:mysql://192.168.253.12:3306/public_resources?characterEncoding=utf-8&useSSL=false
+datasource.username=root
+datasource.password=select111***
+datasource.driverClassName=com.mysql.jdbc.Driver
+datasource.initialSize=1
+datasource.minIdle=1
+datasource.maxActive=20
+datasource.maxWait=60000
+datasource.timeBetweenEvictionRunsMillis=60000
+datasource.minEvictableIdleTimeMillis=300000
+datasource.validationQuery=SELECT 1 FROM DUAL
+datasource.testWhileIdle=true
+datasource.testOnBorrow=true
+datasource.testOnReturn=false
+datasource.poolPreparedStatements=true
+datasource.timeBetweenLogStatsMillis=60000
+datasource.maxPoolPreparedStatementPerConnectionSize=20
+datasource.filters=stat,slf4j
+datasource.connectionProperties=druid.stat.mergeSql=false;druid.stat.slowSqlMillis=5000

+ 44 - 0
src/main/resources/logback.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>logs/log.log</File>
+		<encoder>
+			<pattern>
+				%date{yyyy-MM-dd HH:mm:ss:SSS} [%relative ms] %-5level [%50.50(%logger{36}.%method:%line)] ---- %msg%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily rollover -->
+			<FileNamePattern>logs/log.%d{yyyy-MM-dd}.log</FileNamePattern>
+			<!-- keep 10 days' worth of history -->
+			<maxHistory>10</maxHistory>
+		</rollingPolicy>
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>INFO</level>
+		</filter>
+	</appender>
+
+	<!-- Console output -->
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
+		<encoder>
+			<pattern>
+				%date{yyyy-MM-dd HH:mm:ss:SSS} [%relative ms] %-5level [%50.50(%logger{36}.%method:%line)] ---- %msg%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+		<!-- Only log level WARN and above -->
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>INFO</level>
+		</filter>
+	</appender>
+
+	<!-- Enable FILE and STDOUT appenders for all log messages. By default, 
+		only log at level INFO and above. -->
+	<root level="INFO">
+		<appender-ref ref="FILE" />
+		<appender-ref ref="STDOUT" />
+	</root>
+</configuration>