Przeglądaj źródła

科德系统签单统计详情列表排序效率优化

anderx 3 lat temu
rodzic
commit
300b39e3c0

+ 1 - 1
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -51,7 +51,7 @@ public interface TOrderNewMapper {
 
     List<OutStatisticsList> statisticsList(InputStatistics in);
 
-    List<outProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
+    List<OutProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
 
     List<Map<String, Object>> selectOrderByuid(String uid);
 

+ 3 - 2
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1804,7 +1804,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     </if>
     desc
   </select>
-  <select id="provinceStatisticsList" resultType="com.goafanti.order.bo.outProvinceStatisticsList">
+  <select id="provinceStatisticsList" resultType="com.goafanti.order.bo.OutProvinceStatisticsList">
     select  z.depName,z.aid,z.name,z.quantity,z.total
     from ( select x.depName,x.aid,x.name,sum(quantity)quantity,sum(total)total
     from ( select c.name depName,a.order_no,b.id aid,b.name name,
@@ -2062,7 +2062,8 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     where buyer_id=#{uid} and salesman_id=#{aid}
   </select>
   <select id="statisticsOrderList" resultType="com.goafanti.order.bo.StatisOrderList">
-    select d.id,d.name province,a.order_no,a.salesman_id aid, if(a.total_amount>0.5,1,if(a.total_amount>0 and a.order_type=1,0.5,0))quantity, a.total_amount total
+    select d.id,d.name province,c.name depName,a.order_no,a.salesman_id aid ,b.name aname,
+           if(a.total_amount>0.5,1,if(a.total_amount>0 and a.order_type=1,0.5,0))quantity, a.total_amount total
     from t_order_new a left join admin b on a.salesman_id =b.id left join department c on b.department_id =c.id
     left join district_glossory d on c.province =d.id
     where a.process_status >4 and a.delete_sign in(0,2)

+ 1 - 1
src/main/java/com/goafanti/core/cache/serializer/FastJsonRedisSerializer.java

@@ -24,7 +24,7 @@ public class FastJsonRedisSerializer implements RedisSerializer<Object> {
 		pc.addAccept("com.goafanti.news.bo.NewsPortalList");
 		pc.addAccept("com.goafanti.common.model.Activity");
 		pc.addAccept("com.goafanti.order.bo.OutStatisticsList");
-		pc.addAccept("com.goafanti.order.bo.outProvinceStatisticsList");
+		pc.addAccept("com.goafanti.order.bo.OutProvinceStatisticsList");
 		pc.addAccept("com.goafanti.weChat.bo.OutPublicStatistics");
 		pc.addAccept("com.goafanti.core.mybatis.page.Pagination");
 		pc.addAccept("com.goafanti.common.bo.Result");

+ 4 - 4
src/main/java/com/goafanti/order/bo/outProvinceStatisticsList.java

@@ -4,7 +4,7 @@ import com.goafanti.common.utils.excel.Excel;
 
 import java.math.BigDecimal;
 
-public class outProvinceStatisticsList {
+public class OutProvinceStatisticsList {
 
     private  String aid;
     @Excel(name = "订单部门")
@@ -12,7 +12,7 @@ public class outProvinceStatisticsList {
     @Excel(name = "签单人")
     private String name;
     @Excel(name = "总单量(个)")
-    private Integer quantity;
+    private Double quantity;
     @Excel(name = "总签单额(万元)")
     private BigDecimal total;
 
@@ -40,11 +40,11 @@ public class outProvinceStatisticsList {
         this.name = name;
     }
 
-    public Integer getQuantity() {
+    public Double getQuantity() {
         return quantity;
     }
 
-    public void setQuantity(Integer quantity) {
+    public void setQuantity(Double quantity) {
         this.quantity = quantity;
     }
 

+ 18 - 0
src/main/java/com/goafanti/order/bo/StatisOrderList.java

@@ -5,11 +5,29 @@ import java.math.BigDecimal;
 public class StatisOrderList {
     private Integer id;
     private String province;
+    private String depName;
     private String orderNo;
     private String aid;
+    private String aname;
     private Double quantity;
     private BigDecimal total;
 
+    public String getDepName() {
+        return depName;
+    }
+
+    public void setDepName(String depName) {
+        this.depName = depName;
+    }
+
+    public String getAname() {
+        return aname;
+    }
+
+    public void setAname(String aname) {
+        this.aname = aname;
+    }
+
     public Integer getId() {
         return id;
     }

+ 23 - 7
src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java

@@ -642,14 +642,18 @@ public class AdminNewOrderApiController extends CertifyApiController {
 	@RequestMapping(value = "/statisticsList", method = RequestMethod.GET)
 	public Result statisticsList(InputStatistics in){
 		List<OutStatisticsList> result = orderNewService.statisticsList(in);
-		if (in.getSort()==null||in.getSort()==0){
+		ListSort(result,in.getSort());
+		return res().data(result);
+	}
+
+	private void ListSort(List<OutStatisticsList> result,Integer sort) {
+		if (sort==null||sort==0){
 			result.sort(Comparator.comparing(OutStatisticsList::getTotal).reversed());
-		}else if (in.getSort()==1){
+		}else if (sort==1){
 			result.sort(Comparator.comparing(OutStatisticsList::getQuantity).reversed());
 		} else {
 			result.sort(Comparator.comparing(OutStatisticsList::getCounts).reversed());
 		}
-		return res().data(result);
 	}
 
 	/**
@@ -659,6 +663,7 @@ public class AdminNewOrderApiController extends CertifyApiController {
 	@RequestMapping(value = "/statisticsListExprot", method = RequestMethod.GET)
 	public Result statisticsListExprot(InputStatistics in){
 		List<OutStatisticsList>  list =orderNewService.statisticsList(in);
+		ListSort(list,in.getSort());
 		NewExcelUtil<OutStatisticsList> excelUtil=new NewExcelUtil<>(OutStatisticsList.class);
 		StringBuffer sb=new StringBuffer("搜索条件=》");
 		if (in.getDepName()!=null)sb=sb.append("部门:").append(in.getDepName()).append(",");
@@ -682,12 +687,22 @@ public class AdminNewOrderApiController extends CertifyApiController {
 	/**
 	 * 	省份签单统计表
 	 * 	a.total_amount>0.5,1,if(a.total_amount>0 and a.order_type=1,0.5,0)
-	 * 	签单金额大于1万计做一个订单,小于0.5,如果是科技项目计做0.5单,其他计算成0单
+	 * 	签单金额大于0.5万计做一个订单,小于0.5,如果是科技项目计做0.5单,其他计算成0单
 	 * @throws IOException
 	 */
 	@RequestMapping(value = "/provinceStatisticsList", method = RequestMethod.GET)
 	public Result provinceStatisticsList(InputStatistics in){
-		return res().data(orderNewService.provinceStatisticsList(in));
+		List<OutProvinceStatisticsList> out = orderNewService.provinceStatisticsList(in);
+		ProvinceListSort(out,in.getSort());
+		return res().data(out);
+	}
+
+	private void ProvinceListSort(List<OutProvinceStatisticsList> out, Integer sort) {
+		if (sort==null||sort==0){
+			out.sort(Comparator.comparing(OutProvinceStatisticsList::getTotal).reversed());
+		}else if (sort==1){
+			out.sort(Comparator.comparing(OutProvinceStatisticsList::getQuantity).reversed());
+		}
 	}
 
 	/**
@@ -696,8 +711,9 @@ public class AdminNewOrderApiController extends CertifyApiController {
 	 */
 	@RequestMapping(value = "/provinceStatisticsListExprot", method = RequestMethod.GET)
 	public Result provinceStatisticsListExprot(InputStatistics in){
-		List<outProvinceStatisticsList>  list =orderNewService.provinceStatisticsList(in);
-		NewExcelUtil<outProvinceStatisticsList> excelUtil=new NewExcelUtil<>(outProvinceStatisticsList.class);
+		List<OutProvinceStatisticsList>  list =orderNewService.provinceStatisticsList(in);
+		ProvinceListSort(list,in.getSort());
+		NewExcelUtil<OutProvinceStatisticsList> excelUtil=new NewExcelUtil<>(OutProvinceStatisticsList.class);
 		StringBuffer sb=new StringBuffer("搜索条件=》");
 		if (in.getDepName()!=null)sb=sb.append("部门:").append(in.getDepName()).append(",");
 		if(in.getProvinceName()!=null)sb=sb.append("省份:").append(in.getProvinceName()).append(",");

+ 1 - 1
src/main/java/com/goafanti/order/service/OrderNewService.java

@@ -186,7 +186,7 @@ public interface OrderNewService {
 
     List<OutStatisticsList> statisticsList(InputStatistics in);
 
-	List<outProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
+	List<OutProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
 
 
 	/**

+ 29 - 3
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -1871,8 +1871,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
 	@Override
 	@Cacheable(cacheNames = "provinceStatisticsList#500",key = "'provinceStatisticsList:depId:'+#in.depId+'province:'+#in.province+" +
-			"'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign+'sort:'+#in.sort")
-	public List<outProvinceStatisticsList> provinceStatisticsList(InputStatistics in) {
+			"'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign")
+	public List<OutProvinceStatisticsList> provinceStatisticsList(InputStatistics in) {
 		if(in.getSort()==null) {
 			in.setSort(0);
 		}
@@ -1882,7 +1882,33 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if(in.getEndSign()!=null) {
 			in.setEndSign(in.getEndSign()+" 23:59:59");
 		}
-		return tOrderNewMapper.provinceStatisticsList(in);
+		List<OutProvinceStatisticsList> outProvinceStatisticsLists=null;
+		//原sql计算
+//		outProvinceStatisticsLists = tOrderNewMapper.provinceStatisticsList(in);
+		//java计算
+		outProvinceStatisticsLists= CountProvinceStatisticsOrder(in);
+		return outProvinceStatisticsLists;
+	}
+
+	private List<OutProvinceStatisticsList> CountProvinceStatisticsOrder(InputStatistics in) {
+		List<OutProvinceStatisticsList> result=new ArrayList<>();
+		List<StatisOrderList> statisOrderLists = tOrderNewMapper.statisticsOrderList(in);
+		Map<String,List<StatisOrderList>> classmap= statisOrderLists.stream().collect(Collectors.groupingBy(StatisOrderList::getAid));
+		for (String key : classmap.keySet()) {
+			String aid= key;
+			String name=classmap.get(key).get(0).getAname();
+			String depName=classmap.get(key).get(0).getDepName();
+			Double quantity = classmap.get(key).stream().mapToDouble(StatisOrderList::getQuantity).sum();
+			BigDecimal total =CountStatisticOrderTotal(classmap.get(key));
+			OutProvinceStatisticsList out =new OutProvinceStatisticsList();
+			out.setAid(aid);
+			out.setName(name);
+			out.setDepName(depName);
+			out.setQuantity(quantity);
+			out.setTotal(total);
+			result.add(out);
+		}
+		return result;
 	}
 
 	@SuppressWarnings("unchecked")