Browse Source

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@749 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 years ago
parent
commit
f34ef6321b
34 changed files with 979 additions and 71 deletions
  1. 4 0
      src/main/java/com/uas/platform/b2b/controller/EnterpriseController.java
  2. 102 0
      src/main/java/com/uas/platform/b2b/controller/SaleStatController.java
  3. 13 0
      src/main/java/com/uas/platform/b2b/dao/GrowthDao.java
  4. 24 0
      src/main/java/com/uas/platform/b2b/dao/GrowthProcessDao.java
  5. 1 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java
  6. 10 0
      src/main/java/com/uas/platform/b2b/dao/SaleSendDao.java
  7. 12 0
      src/main/java/com/uas/platform/b2b/dao/SaleStatDayDao.java
  8. 12 0
      src/main/java/com/uas/platform/b2b/dao/SaleStatMonthDao.java
  9. 12 0
      src/main/java/com/uas/platform/b2b/dao/SaleStatYearDao.java
  10. 1 1
      src/main/java/com/uas/platform/b2b/history/dao/PurchaseOrderDao.java
  11. 48 0
      src/main/java/com/uas/platform/b2b/model/Growth.java
  12. 124 0
      src/main/java/com/uas/platform/b2b/model/GrowthProcess.java
  13. 15 0
      src/main/java/com/uas/platform/b2b/model/SaleSend.java
  14. 91 0
      src/main/java/com/uas/platform/b2b/model/SaleStatDay.java
  15. 80 0
      src/main/java/com/uas/platform/b2b/model/SaleStatMonth.java
  16. 69 0
      src/main/java/com/uas/platform/b2b/model/SaleStatYear.java
  17. 16 0
      src/main/java/com/uas/platform/b2b/service/GrowthService.java
  18. 18 0
      src/main/java/com/uas/platform/b2b/service/SaleStatService.java
  19. 149 0
      src/main/java/com/uas/platform/b2b/service/impl/GrowthServiceImpl.java
  20. 2 0
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java
  21. 67 0
      src/main/java/com/uas/platform/b2b/service/impl/SaleStatServiceImpl.java
  22. 0 0
      src/main/webapp/WEB-INF/views/normal/public.html
  23. 15 4
      src/main/webapp/resources/css/index.css
  24. 68 46
      src/main/webapp/resources/js/index/app.js
  25. 1 1
      src/main/webapp/resources/js/index/main.js
  26. 15 0
      src/main/webapp/resources/js/index/services/Purc.js
  27. 0 0
      src/main/webapp/resources/js/public/app.js
  28. 0 0
      src/main/webapp/resources/js/public/main.js
  29. 2 2
      src/main/webapp/resources/lib/angular/angular-charts.js
  30. 0 0
      src/main/webapp/resources/lib/angular/angular-charts.min.js
  31. 7 13
      src/main/webapp/resources/tpl/index/account/index.html
  32. 1 4
      src/main/webapp/resources/tpl/index/home/right.html
  33. 0 0
      src/main/webapp/resources/tpl/public/info/notice.html
  34. 0 0
      src/main/webapp/resources/tpl/public/info/notice_detail.html

+ 4 - 0
src/main/java/com/uas/platform/b2b/controller/EnterpriseController.java

@@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.model.Enterprise;
 import com.uas.platform.b2b.service.EnterpriseService;
+import com.uas.platform.b2b.service.GrowthService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.support.SystemSession;
 
@@ -24,6 +25,9 @@ public class EnterpriseController {
 	@Autowired
 	private EnterpriseService enterpriseService;
 
+	@Autowired
+	private GrowthService growthService;
+
 	@Autowired
 	private UserService userService;
 

+ 102 - 0
src/main/java/com/uas/platform/b2b/controller/SaleStatController.java

@@ -0,0 +1,102 @@
+package com.uas.platform.b2b.controller;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.uas.platform.b2b.model.SaleStatDay;
+import com.uas.platform.b2b.model.SaleStatMonth;
+import com.uas.platform.b2b.model.SaleStatYear;
+import com.uas.platform.b2b.service.SaleStatService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.PageInfo;
+
+/**
+ * 平台销售数据统计
+ * 
+ * @author yingp
+ *
+ */
+@RestController
+@RequestMapping("/sale/stat")
+public class SaleStatController {
+
+	@Autowired
+	private SaleStatService saleStatService;
+
+	/**
+	 * 销售额
+	 * 
+	 * @param json
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getStat() {
+		ModelMap map = new ModelMap();
+		PageInfo info = new PageInfo(1, 15, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year", "month", "day");
+		map.put("day", saleStatService.findDayByPageInfo(info).getContent());
+		info = new PageInfo(1, 12, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year", "month");
+		map.put("month", saleStatService.findMonthByPageInfo(info).getContent());
+		info = new PageInfo(1, 10, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year");
+		map.put("year", saleStatService.findYearByPageInfo(info).getContent());
+		return map;
+	}
+
+	/**
+	 * 销售额(日线)
+	 * 
+	 * @param json
+	 * @return
+	 */
+	@RequestMapping(value = "/day", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleStatDay> getDayStat() {
+		PageInfo info = new PageInfo(1, 15, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year", "month", "day");
+		return saleStatService.findDayByPageInfo(info).getContent();
+	}
+
+	/**
+	 * 销售额(月线)
+	 * 
+	 * @param json
+	 * @return
+	 */
+	@RequestMapping(value = "/month", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleStatMonth> getMonthStat() {
+		PageInfo info = new PageInfo(1, 12, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year", "month");
+		return saleStatService.findMonthByPageInfo(info).getContent();
+	}
+
+	/**
+	 * 销售额(年线)
+	 * 
+	 * @param json
+	 * @return
+	 */
+	@RequestMapping(value = "/year", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleStatYear> getYearStat() {
+		PageInfo info = new PageInfo(1, 10, 0);
+		info.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		info.sorting(Direction.DESC, "year");
+		return saleStatService.findYearByPageInfo(info).getContent();
+	}
+
+}

+ 13 - 0
src/main/java/com/uas/platform/b2b/dao/GrowthDao.java

@@ -0,0 +1,13 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.Growth;
+
+@Repository
+public interface GrowthDao extends JpaRepository<Growth, Long> {
+
+	public Growth findByEnUU(long enUU);
+
+}

+ 24 - 0
src/main/java/com/uas/platform/b2b/dao/GrowthProcessDao.java

@@ -0,0 +1,24 @@
+package com.uas.platform.b2b.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.GrowthProcess;
+
+@Repository
+public interface GrowthProcessDao extends JpaRepository<GrowthProcess, Long> {
+
+	/**
+	 * 按企业ID查找
+	 * 
+	 * @param enUU
+	 * @return
+	 */
+	@Query("from GrowthProcess g where g.enUU = :enUU order by g.date desc")
+	public List<GrowthProcess> findByEnUU(@Param("enUU") long enUU);
+
+}

+ 1 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java

@@ -31,4 +31,5 @@ public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder
 	 */
 	@Query("select count(o) from PurchaseOrder o where o.vendUU = :vendUU and o.status = :status")
 	public int getCountByVendUUAndStatus(@Param("vendUU") long vendUU, @Param("status") short status);
+
 }

+ 10 - 0
src/main/java/com/uas/platform/b2b/dao/SaleSendDao.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import com.uas.platform.b2b.model.SaleSend;
@@ -29,4 +31,12 @@ public interface SaleSendDao extends JpaSpecificationExecutor<SaleSend>, JpaRepo
 	 */
 	List<SaleSend> findByCustUUAndSendStatus(long custUU, Short sendStatus);
 
+	/**
+	 * 计算出货总额
+	 * 
+	 * @return
+	 */
+	@Query("select sum(i.price*i.qty) from SaleSend s inner join s.sendItems as i where s.enUU = :enUU")
+	Double summaryByPriceAndQty(@Param("enUU") long enUU);
+
 }

+ 12 - 0
src/main/java/com/uas/platform/b2b/dao/SaleStatDayDao.java

@@ -0,0 +1,12 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.SaleStatDay;
+
+@Repository
+public interface SaleStatDayDao  extends JpaSpecificationExecutor<SaleStatDay>, JpaRepository<SaleStatDay, Long>{
+
+}

+ 12 - 0
src/main/java/com/uas/platform/b2b/dao/SaleStatMonthDao.java

@@ -0,0 +1,12 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.SaleStatMonth;
+
+@Repository
+public interface SaleStatMonthDao  extends JpaSpecificationExecutor<SaleStatMonth>, JpaRepository<SaleStatMonth, Long>{
+
+}

+ 12 - 0
src/main/java/com/uas/platform/b2b/dao/SaleStatYearDao.java

@@ -0,0 +1,12 @@
+package com.uas.platform.b2b.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.uas.platform.b2b.model.SaleStatYear;
+
+@Repository
+public interface SaleStatYearDao  extends JpaSpecificationExecutor<SaleStatYear>, JpaRepository<SaleStatYear, Long>{
+
+}

+ 1 - 1
src/main/java/com/uas/platform/b2b/history/dao/PurchaseOrderDao.java

@@ -8,5 +8,5 @@ import com.uas.platform.b2b.history.model.PurchaseOrder;
 
 @Repository("history.PurchaseOrderDao")
 public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder>, JpaRepository<PurchaseOrder, Long> {
-
+	
 }

+ 48 - 0
src/main/java/com/uas/platform/b2b/model/Growth.java

@@ -0,0 +1,48 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Index;
+
+/**
+ * 企业成长点
+ * 
+ * @author yingp
+ *
+ */
+@Entity
+@Table(name = "log$growth")
+public class Growth {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$growth_gen")
+	@SequenceGenerator(name = "log$growth_gen", sequenceName = "log$growth_seq", allocationSize = 1)
+	@Column(name = "grow_id")
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "grow_enuu")
+	@Index(name = "log$growth_enuu_idx")
+	private Long enUU;
+
+	/**
+	 * 是否收到了第一份客户采购订单
+	 */
+	@Column(name = "grow_order")
+	private Short hasOrder;
+
+	/**
+	 * 销售总额
+	 */
+	@Column(name = "grow_total")
+	private Double saleTotal;
+
+}

+ 124 - 0
src/main/java/com/uas/platform/b2b/model/GrowthProcess.java

@@ -0,0 +1,124 @@
+package com.uas.platform.b2b.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Index;
+
+/**
+ * 企业成长历程
+ * 
+ * @author yingp
+ *
+ */
+@Entity
+@Table(name = "log$growthprocess")
+public class GrowthProcess {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$growthprocess_gen")
+	@SequenceGenerator(name = "log$growthprocess_gen", sequenceName = "log$growthprocess_seq", allocationSize = 1)
+	@Column(name = "process_id")
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "process_enuu")
+	@Index(name = "log$growthprocess_enuu_idx")
+	private Long enUU;
+
+	/**
+	 * 日期
+	 */
+	@Column(name = "process_date")
+	private Date date;
+
+	/**
+	 * 类型
+	 */
+	@Column(name = "process_type")
+	private String type;
+
+	/**
+	 * 标题
+	 */
+	@Column(name = "process_title")
+	private String title;
+
+	/**
+	 * 描述
+	 */
+	@Column(name = "process_desc")
+	private String description;
+
+	/**
+	 * 详细
+	 */
+	@Column(name = "process_detail")
+	private String detail;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public String getDetail() {
+		return detail;
+	}
+
+	public void setDetail(String detail) {
+		this.detail = detail;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+}

+ 15 - 0
src/main/java/com/uas/platform/b2b/model/SaleSend.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.model;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.Set;
 
 import javax.persistence.CascadeType;
@@ -52,6 +53,12 @@ public class SaleSend implements Serializable {
 	@Column(name = "ss_enuu")
 	private Long enUU;
 
+	/**
+	 * 发货单日期
+	 */
+	@Column(name = "ss_date")
+	private Date date;
+
 	/**
 	 * 付款方式
 	 */
@@ -218,6 +225,14 @@ public class SaleSend implements Serializable {
 		this.recorder = recorder;
 	}
 
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
 	/**
 	 * 送货单详细
 	 * 

+ 91 - 0
src/main/java/com/uas/platform/b2b/model/SaleStatDay.java

@@ -0,0 +1,91 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Index;
+
+/**
+ * 销售额统计(日)
+ * 
+ * @author yingp
+ *
+ */
+@Entity
+@Table(name = "sale$stat$day")
+public class SaleStatDay {
+
+	@Id
+	@Column(name = "ss_id")
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "ss_enuu")
+	@Index(name = "sale$stat$day_enuu_idx")
+	private Long enUU;
+
+	@Column(name = "ss_year")
+	private int year;
+
+	@Column(name = "ss_month")
+	private int month;
+
+	@Column(name = "ss_day")
+	private int day;
+
+	@Column(name = "ss_total")
+	private Double total;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+
+	public int getMonth() {
+		return month;
+	}
+
+	public void setMonth(int month) {
+		this.month = month;
+	}
+
+	public int getDay() {
+		return day;
+	}
+
+	public void setDay(int day) {
+		this.day = day;
+	}
+
+	public Double getTotal() {
+		return total;
+	}
+
+	public void setTotal(Double total) {
+		this.total = total;
+	}
+
+}

+ 80 - 0
src/main/java/com/uas/platform/b2b/model/SaleStatMonth.java

@@ -0,0 +1,80 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Index;
+
+/**
+ * 销售额统计(月)
+ * 
+ * @author yingp
+ *
+ */
+@Entity
+@Table(name = "sale$stat$month")
+public class SaleStatMonth {
+
+	@Id
+	@Column(name = "ss_id")
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "ss_enuu")
+	@Index(name = "sale$stat$day_enuu_idx")
+	private Long enUU;
+
+	@Column(name = "ss_year")
+	private int year;
+
+	@Column(name = "ss_month")
+	private int month;
+
+	@Column(name = "ss_total")
+	private Double total;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+
+	public int getMonth() {
+		return month;
+	}
+
+	public void setMonth(int month) {
+		this.month = month;
+	}
+
+	public Double getTotal() {
+		return total;
+	}
+
+	public void setTotal(Double total) {
+		this.total = total;
+	}
+
+}

+ 69 - 0
src/main/java/com/uas/platform/b2b/model/SaleStatYear.java

@@ -0,0 +1,69 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Index;
+
+/**
+ * 销售额统计(年)
+ * 
+ * @author yingp
+ *
+ */
+@Entity
+@Table(name = "sale$stat$year")
+public class SaleStatYear {
+
+	@Id
+	@Column(name = "ss_id")
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "ss_enuu")
+	@Index(name = "sale$stat$day_enuu_idx")
+	private Long enUU;
+
+	@Column(name = "ss_year")
+	private int year;
+
+	@Column(name = "ss_total")
+	private Double total;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+
+	public Double getTotal() {
+		return total;
+	}
+
+	public void setTotal(Double total) {
+		this.total = total;
+	}
+
+}

+ 16 - 0
src/main/java/com/uas/platform/b2b/service/GrowthService.java

@@ -0,0 +1,16 @@
+package com.uas.platform.b2b.service;
+
+import java.util.List;
+
+import com.uas.platform.b2b.model.GrowthProcess;
+
+public interface GrowthService {
+
+	/**
+	 * 获取企业成长历程
+	 * 
+	 * @return
+	 */
+	public List<GrowthProcess> findAllProcess();
+
+}

+ 18 - 0
src/main/java/com/uas/platform/b2b/service/SaleStatService.java

@@ -0,0 +1,18 @@
+package com.uas.platform.b2b.service;
+
+import org.springframework.data.domain.Page;
+
+import com.uas.platform.b2b.model.SaleStatDay;
+import com.uas.platform.b2b.model.SaleStatMonth;
+import com.uas.platform.b2b.model.SaleStatYear;
+import com.uas.platform.core.model.PageInfo;
+
+public interface SaleStatService {
+
+	public Page<SaleStatDay> findDayByPageInfo(PageInfo pageInfo);
+
+	public Page<SaleStatMonth> findMonthByPageInfo(PageInfo pageInfo);
+
+	public Page<SaleStatYear> findYearByPageInfo(PageInfo pageInfo);
+
+}

+ 149 - 0
src/main/java/com/uas/platform/b2b/service/impl/GrowthServiceImpl.java

@@ -0,0 +1,149 @@
+package com.uas.platform.b2b.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.uas.platform.b2b.dao.GrowthDao;
+import com.uas.platform.b2b.dao.GrowthProcessDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDao;
+import com.uas.platform.b2b.dao.SaleSendDao;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.Growth;
+import com.uas.platform.b2b.model.GrowthProcess;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.service.GrowthService;
+import com.uas.platform.b2b.support.SystemSession;
+
+@Service
+public class GrowthServiceImpl implements GrowthService {
+
+	@Autowired
+	private GrowthDao growthDao;
+
+	@Autowired
+	private GrowthProcessDao growthProcessDao;
+
+	@Autowired
+	private SaleSendDao saleSendDao;
+
+	@Autowired
+	private PurchaseOrderDao purchaseOrderDao;
+
+	@Autowired
+	private com.uas.platform.b2b.history.dao.PurchaseOrderDao purchaseOrderHisDao;
+
+	/**
+	 * 销售额度成长阶
+	 */
+	private static final double SALE_STEP_1 = 10000000D;
+	private static final double SALE_STEP_2 = 100000000D;
+	private static final double SALE_STEP_3 = 1000000000D;
+	private static final double SALE_STEP_4 = 10000000000D;
+	private static final double SALE_STEP_5 = 100000000000D;
+	private static final double SALE_STEP_6 = 1000000000000D;
+	private static final double SALE_STEP_7 = 10000000000000D;
+
+	@Override
+	public List<GrowthProcess> findAllProcess() {
+		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		Growth growth = growthDao.findByEnUU(enUU);
+		if (growth == null) {
+			growth = new Growth();
+			List<GrowthProcess> processes = new ArrayList<GrowthProcess>();
+			processes.add(getSignupProcess());
+			GrowthProcess orderProcess = getFirstOrderProcess();
+			if (orderProcess != null) {
+				processes.add(orderProcess);
+				
+			}
+		}
+		return growthProcessDao.findAll();
+	}
+
+	/**
+	 * 企业注册
+	 * 
+	 * @return
+	 */
+	private GrowthProcess getSignupProcess() {
+		Enterprise enterprise = SystemSession.getUser().getEnterprise();
+		GrowthProcess signupProcess = new GrowthProcess();
+		signupProcess.setDate(enterprise.getEnDate());
+		signupProcess.setEnUU(enterprise.getUu());
+		signupProcess.setTitle("注册加入到优软商务平台");
+		signupProcess.setType("user");
+		return signupProcess;
+	}
+
+	/**
+	 * 收到的第一份采购合同
+	 * 
+	 * @return
+	 */
+	private GrowthProcess getFirstOrderProcess() {
+		GrowthProcess orderProcess = null;
+//		long enUU = SystemSession.getUser().getEnterprise().getUu();
+//		com.uas.platform.b2b.history.model.PurchaseOrder orderHis = purchaseOrderHisDao.findFirst(enUU);
+//		if (orderHis != null) {
+//			orderProcess = new GrowthProcess();
+//			orderProcess.setDate(orderHis.getDate());
+//			orderProcess.setEnUU(enUU);
+//			orderProcess.setTitle("收到了第一份客户采购单<a href=\"#/sale/order/" + orderHis.getId() + "\" target=\"_blank\">" + orderHis.getCode()
+//					+ "</a>");
+//			orderProcess.setDescription("客户:" + orderHis.getEnterprise().getEnName() + ",币别:" + orderHis.getCurrency() + ",付款方式:"
+//					+ orderHis.getPayments());
+//			orderProcess.setDetail("#/sale/order/" + orderHis.getId());
+//			orderProcess.setType("order");
+//		} else {
+//			PurchaseOrder order = purchaseOrderDao.findFirst(enUU);
+//			if (order != null) {
+//				orderProcess = new GrowthProcess();
+//				orderProcess.setDate(order.getDate());
+//				orderProcess.setEnUU(enUU);
+//				orderProcess.setTitle("收到了第一份客户采购单<a href=\"#/sale/order/" + order.getId() + "\" target=\"_blank\">" + order.getCode()
+//						+ "</a>");
+//				orderProcess.setDescription("客户:" + order.getEnterprise().getEnName() + ",币别:" + order.getCurrency() + ",付款方式:"
+//						+ order.getPayments());
+//				orderProcess.setDetail("#/sale/order/" + order.getId());
+//				orderProcess.setType("order");
+//			}
+//		}
+		return orderProcess;
+	}
+	
+	/**
+	 * 出货历程
+	 * @return
+	 */
+	private List<GrowthProcess> getSaleProcesses() {
+		List<GrowthProcess> processes = null;
+		Double total = getSaleTotal();
+		if(total != null && total >= SALE_STEP_1) {
+			GrowthProcess process1 = new GrowthProcess();
+			
+		}
+		return processes;
+	}
+	
+	private GrowthProcess getSaleStepProcess(double actual, double step) {
+		GrowthProcess process = null;
+		if(actual >= step) {
+			process = new GrowthProcess();
+		}
+		return process;
+	}
+
+	/**
+	 * 计算出货总额
+	 * 
+	 * @return
+	 */
+	private Double getSaleTotal() {
+		return saleSendDao.summaryByPriceAndQty(SystemSession.getUser().getEnterprise().getUu());
+	}
+
+}

+ 2 - 0
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2b.service.impl;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.persistence.criteria.CriteriaBuilder;
@@ -204,6 +205,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			send.setSendStatus((short) Status.NOT_UPLOAD.value());
 			send.setCustUU(notice.getEnUU());
 			send.setCustUserUU(order.getUserUU());
+			send.setDate(new Date());
 			send.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 			send.setPayments(order.getPayments());
 			send.setRate(order.getRate());

+ 67 - 0
src/main/java/com/uas/platform/b2b/service/impl/SaleStatServiceImpl.java

@@ -0,0 +1,67 @@
+package com.uas.platform.b2b.service.impl;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import com.uas.platform.b2b.dao.SaleStatDayDao;
+import com.uas.platform.b2b.dao.SaleStatMonthDao;
+import com.uas.platform.b2b.dao.SaleStatYearDao;
+import com.uas.platform.b2b.model.SaleStatDay;
+import com.uas.platform.b2b.model.SaleStatMonth;
+import com.uas.platform.b2b.model.SaleStatYear;
+import com.uas.platform.b2b.service.SaleStatService;
+import com.uas.platform.core.model.PageInfo;
+
+@Service
+public class SaleStatServiceImpl implements SaleStatService {
+
+	@Autowired
+	private SaleStatDayDao saleStatDayDao;
+
+	@Autowired
+	private SaleStatMonthDao saleStatMonthDao;
+
+	@Autowired
+	private SaleStatYearDao saleStatYearDao;
+
+	@Override
+	public Page<SaleStatDay> findDayByPageInfo(final PageInfo pageInfo) {
+		return saleStatDayDao.findAll(new Specification<SaleStatDay>() {
+
+			public Predicate toPredicate(Root<SaleStatDay> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+	@Override
+	public Page<SaleStatMonth> findMonthByPageInfo(final PageInfo pageInfo) {
+		return saleStatMonthDao.findAll(new Specification<SaleStatMonth>() {
+
+			public Predicate toPredicate(Root<SaleStatMonth> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+	@Override
+	public Page<SaleStatYear> findYearByPageInfo(final PageInfo pageInfo) {
+		return saleStatYearDao.findAll(new Specification<SaleStatYear>() {
+
+			public Predicate toPredicate(Root<SaleStatYear> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+}

+ 0 - 0
src/main/webapp/WEB-INF/views/normal/public.html


+ 15 - 4
src/main/webapp/resources/css/index.css

@@ -239,9 +239,20 @@ a {
 }
 /*chart*/
 [ac-chart] {
-	width: 46%;
+	width: 98%;
+	margin: 1%;
+}
+
+.pie-charts [ac-chart] {
 	height: 200px;
-	margin: 0 1%;
+}
+
+.line-charts {
+	padding-bottom: 10px;	
+}
+
+.line-charts [ac-chart] {
+	height: 300px;
 }
 
 .ac-title {
@@ -856,8 +867,8 @@ a {
 	margin-top: 12px;
 }
 
-.data-charts .chart:nth-child(2n+1) {
-	border-right: 1px dashed #e8e8e8;
+.chart:not(:first-child) {
+	border-top: 1px dashed #e8e8e8;
 }
 
 .right .feed-wrap {

+ 68 - 46
src/main/webapp/resources/js/index/app.js

@@ -262,52 +262,6 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 	});
 	app.controller('DataCtrl', function($scope) {
 		$scope.charts = {
-			product : {
-				chartType : 'pie',
-				datas : {
-					data : [ {
-						x : "JDI 5寸液晶玻璃",
-						y : [ 100000 ],
-						tooltip : "JDI 5寸液晶玻璃: ¥100000"
-					}, {
-						x : "液晶显示屏",
-						y : [ 60000 ],
-						tooltip : "液晶显示屏: ¥60000"
-					}, {
-						x : "触摸屏",
-						y : [ 48000 ],
-						tooltip : "触摸屏: ¥48000"
-					}, {
-						x : "松下连接器",
-						y : [ 36000 ],
-						tooltip : "松下连接器: ¥36000"
-					}, {
-						x : "罗姆IC",
-						y : [ 18000 ],
-						tooltip : "罗姆IC: ¥18000"
-					} ]
-				},
-				config : {
-					labels : false,
-					title : "产品月销量排行榜",
-					legend : {
-						display : true,
-						position : 'right'
-					},
-					colors : [ '#4D9934', '#33D6EA', '#98E1CC', '#8060E4', '#9999CC' ],
-					click : function(d) {
-
-					},
-					mouseover : function(d) {
-
-					},
-					mouseout : function(d) {
-
-					},
-					innerRadius : 0,
-					lineLegend : 'lineEnd'
-				}
-			},
 			sale : {
 				chartType : 'pie',
 				datas : {
@@ -402,6 +356,74 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'service/Purc', 'ser
 			}
 		};
 	});
+	app.controller('SaleStatCtrl', function($scope, SaleStat){
+		$scope.charts = {
+				day : {
+					chartType : "line",
+					series: ['销售额'],
+					data: [],
+					config : {
+						"labels": false,
+						 "title": "销售额统计(日线)",
+						 "legend": {
+							 "display": true,
+							 "position": "right"
+						 },
+						 colors : [ '#4D9934'],
+						 "innerRadius": 0,
+						 "lineLegend": "lineEnd"
+					}
+				},
+				month: {
+						chartType : "line",
+						series: ['销售额'],
+						data: [],
+						config : {
+							"labels": false,
+							 "title": "销售额统计(月线)",
+							 "legend": {
+								 "display": true,
+								 "position": "right"
+							 },
+							 colors : [ '#4D9934'],
+							 "innerRadius": 0,
+							 "lineLegend": "lineEnd"
+						}
+				},
+				year: {
+					chartType : "line",
+					series: ['销售额'],
+					data: [],
+					config : {
+						"labels": false,
+						 "title": "销售额统计(年线)",
+						 "legend": {
+							 "display": true,
+							 "position": "right"
+						 },
+						 colors : [ '#4D9934'],
+						 "innerRadius": 0,
+						 "lineLegend": "lineEnd"
+					}
+			}
+		};
+		SaleStat.get({}, function(data){
+			var charts = {};
+			var p = [], q = [], r = [];
+			angular.forEach(data.day, function(d){
+				p.push({x: d.day, y: [(d.total || 0)], tooltip: (d.total || 0)});
+			});
+			angular.forEach(data.month, function(d){
+				q.push({x: d.month, y: [(d.total || 0)], tooltip: (d.total || 0)});
+			});
+			angular.forEach(data.year, function(d){
+				r.push({x: d.year, y: [(d.total || 0)], tooltip: (d.total || 0)});
+			});
+			$scope.charts.day.data = p;
+			$scope.charts.month.data = q;
+			$scope.charts.year.data = r;
+		});
+	});
 	app.controller('NoticeCtrl', function($scope, SnapshotService){
 		SnapshotService.getNotice(5, function(data){
 			$scope.notices = data;

+ 1 - 1
src/main/webapp/resources/js/index/main.js

@@ -6,7 +6,7 @@ require.config({
 		'ngAnimate': 'lib/angular/angular-animate.min',
 		'toaster' : 'lib/angular/angular-toaster.min',
 		'd3' : 'lib/angular/d3.min',
-		'charts' : 'lib/angular/angular-charts.min',
+		'charts' : 'lib/angular/angular-charts',
 		'common' : 'js/common',
 		'service' : 'js/index/services',
 		'ui.router' : 'lib/angular/angular-ui-router.min',

+ 15 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -237,5 +237,20 @@ define([ 'ngResource'], function() {
 				isArray: true
 			}
 		});
+	}).factory('SaleStat', function($resource) {
+		return $resource('sale/stat', {}, {
+			day: {
+				url: 'sale/stat/day',
+				isArray: true
+			},
+			month: {
+				url: 'sale/stat/month',
+				isArray: true
+			},
+			year: {
+				url: 'sale/stat/year',
+				isArray: true
+			}
+		});
 	});
 });

+ 0 - 0
src/main/webapp/resources/js/public/app.js


+ 0 - 0
src/main/webapp/resources/js/public/main.js


+ 2 - 2
src/main/webapp/resources/lib/angular/angular-charts.js

@@ -122,7 +122,7 @@ angular.module('angularCharts').directive('acChart', [
         case 'left':
         case 'right':
           height = totalHeight;
-          width = totalWidth * 0.5;
+          width = totalWidth * 0.75;
           break;
         }
       }
@@ -868,7 +868,7 @@ angular.module('angularCharts').directive('acChart', [
 (function () {
     // styles.min.css
     var cssText = "" +
-".angular-charts-template .axis path,.angular-charts-template .axis line{fill:none;stroke:#333}.angular-charts-template .ac-title{font-weight:700;font-size:1.2em}.angular-charts-template .ac-chart{float:left;width:50%}.angular-charts-template .ac-line{fill:none;stroke-width:2px}.angular-charts-template table{float:left;max-width:25%;list-style:none;margin:0;padding:0}.angular-charts-template td[ng-bind]{display:inline-block}.angular-charts-template .ac-legend-box{border-radius:5px;height:15px;width:15px}.ac-tooltip{display:block;position:absolute;border:2px solid rgba(51,51,51,.9);background-color:rgba(22,22,22,.7);border-radius:5px;padding:5px;color:#fff}";
+".angular-charts-template .axis path,.angular-charts-template .axis line{fill:none;stroke:#333}.angular-charts-template .ac-title{font-weight:700;font-size:1.2em}.angular-charts-template .ac-chart{float:left;width:75%}.angular-charts-template .ac-line{fill:none;stroke-width:2px}.angular-charts-template table{float:left;max-width:25%;list-style:none;margin:0;padding:0}.angular-charts-template td[ng-bind]{display:inline-block}.angular-charts-template .ac-legend-box{border-radius:5px;height:15px;width:15px}.ac-tooltip{display:block;position:absolute;border:2px solid rgba(51,51,51,.9);background-color:rgba(22,22,22,.7);border-radius:5px;padding:5px;color:#fff}";
     // cssText end
 
     var styleEl = document.createElement("style");

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/resources/lib/angular/angular-charts.min.js


+ 7 - 13
src/main/webapp/resources/tpl/index/account/index.html

@@ -1,17 +1,11 @@
 <!-- 交易信息 Start -->
-<div class="data-wrap" ng-controller="DataCtrl">
-	<!-- 交易额统计 Start -->
-	<div class="data-charts block">
-		<ul class="list-unstyled list-inline">
-			<li id="chart-sale-amount" class="chart"
-				ac-chart="charts.sale.chartType" ac-data="charts.sale.datas"
-				ac-config="charts.sale.config"></li>
-			<li id="chart-seller-amount" class="chart"
-				ac-chart="charts.seller.chartType" ac-data="charts.seller.datas"
-				ac-config="charts.seller.config"></li>
-		</ul>
-	</div>
-	<!-- 交易额统计 End -->
+<div class="line-charts data-wrap block" ng-controller="SaleStatCtrl">
+	<ul class="list-unstyled">
+		<li id="day-stat" class="chart" ac-chart="charts.day.chartType"
+			ac-data="charts.day.datas" ac-config="charts.day.config"></li>
+		<li id="month-stat" class="chart" ac-chart="charts.month.chartType"
+			ac-data="charts.month.datas" ac-config="charts.month.config"></li>
+	</ul>
 </div>
 <!-- 交易信息 End -->
 <!-- 动态信息 Start -->

+ 1 - 4
src/main/webapp/resources/tpl/index/home/right.html

@@ -52,11 +52,8 @@
 	</div>
 	<!-- 待处理统计 End -->
 	<!-- 交易额统计 Start -->
-	<div class="data-charts block">
+	<div class="pie-charts block">
 		<ul class="list-unstyled list-inline">
-			<li id="chart-prod-amount" class="chart"
-				ac-chart="charts.product.chartType" ac-data="charts.product.datas"
-				ac-config="charts.product.config"></li>
 			<li id="chart-sale-amount" class="chart"
 				ac-chart="charts.sale.chartType" ac-data="charts.sale.datas"
 				ac-config="charts.sale.config"></li>

+ 0 - 0
src/main/webapp/resources/tpl/public/info/notice.html


+ 0 - 0
src/main/webapp/resources/tpl/public/info/notice_detail.html


Some files were not shown because too many files changed in this diff