Browse Source

签单统计表数据库BUG修复

anderx 3 years ago
parent
commit
02209c9775

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

@@ -49,7 +49,7 @@ public interface TOrderNewMapper {
 
     List<BigDecimal> selectByUidAndNewUser(@Param("uid")String uid,@Param("aid")String aid, @Param("newUser")Integer newUser, @Param("date") Date date, @Param("now")Date now);
 
-    List<outStatisticsList> statisticsList(InputStatistics in);
+    List<OutStatisticsList> statisticsList(InputStatistics in);
 
     List<outProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
 
@@ -77,4 +77,6 @@ public interface TOrderNewMapper {
 
 
     List<TOrderNewBo> selectByuidandAid(@Param("uid")String uid,@Param("aid") String aid);
+
+    List<StatisOrderList>  statisticsOrderList(InputStatistics in);
 }

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

@@ -1769,7 +1769,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       and new_user = #{newUser}
       and create_time  between #{date} and #{now}
   </select>
-  <select id="statisticsList" resultType="com.goafanti.order.bo.outStatisticsList">
+  <select id="statisticsList" resultType="com.goafanti.order.bo.OutStatisticsList">
     select z.id,z.province,z.counts,z.quantity,z.total
     from (select y.id,y.province,count(aid)counts,sum(quantity)quantity,sum(total)total
     from (select x.id,x.province,x.aid,sum(quantity)quantity, sum(x.total)total
@@ -2061,7 +2061,24 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     from t_order_new
     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
+    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)
+    <if test="depId !=null">
+      and  b.department_id = #{depId}
+    </if>
+    <if test="province !=null">
+      and c.province = #{province}
+    </if>
+    <if test="startCreate !=null and endCreate !=null">
+      and a.create_time between #{startCreate} and #{endCreate}
+    </if>
+    <if test="startSign !=null and endSign !=null">
+      and a.sign_time  between #{startSign} and #{endSign}
+    </if>
+  </select>
 
 
 </mapper>

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

@@ -23,7 +23,7 @@ public class FastJsonRedisSerializer implements RedisSerializer<Object> {
 		pc.addAccept("com.goafanti.lecture.bo.BigShotLectureListBo");
 		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.OutStatisticsList");
 		pc.addAccept("com.goafanti.order.bo.outProvinceStatisticsList");
 		pc.addAccept("com.goafanti.weChat.bo.OutPublicStatistics");
 		pc.addAccept("com.goafanti.core.mybatis.page.Pagination");

+ 1 - 1
src/main/java/com/goafanti/order/bo/InputStatistics.java

@@ -10,7 +10,7 @@ public class InputStatistics {
     private String startSign;
     private String endSign;
     /**
-     * 0签单量 1签单人数 2年度完成率
+     * 0金额 1签单数 2人数
      */
     private Integer sort;
 

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

@@ -4,7 +4,7 @@ import com.goafanti.common.utils.excel.Excel;
 
 import java.math.BigDecimal;
 
-public class outStatisticsList {
+public class OutStatisticsList {
 
     private  Integer id;
     @Excel(name = "省")
@@ -12,7 +12,7 @@ public class outStatisticsList {
     @Excel(name = "签单人数(人)")
     private Integer counts;
     @Excel(name = "总单量(个)")
-    private Integer quantity;
+    private Double quantity;
     @Excel(name = "总签单额(万元)")
     private BigDecimal total;
 
@@ -40,11 +40,11 @@ public class outStatisticsList {
         this.counts = counts;
     }
 
-    public Integer getQuantity() {
+    public Double getQuantity() {
         return quantity;
     }
 
-    public void setQuantity(Integer quantity) {
+    public void setQuantity(Double quantity) {
         this.quantity = quantity;
     }
 
@@ -55,4 +55,15 @@ public class outStatisticsList {
     public void setTotal(BigDecimal total) {
         this.total = total;
     }
+
+    @Override
+    public String toString() {
+        return "OutStatisticsList{" +
+                "id=" + id +
+                ", province='" + province + '\'' +
+                ", counts=" + counts +
+                ", quantity=" + quantity +
+                ", total=" + total +
+                '}';
+    }
 }

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

@@ -0,0 +1,60 @@
+package com.goafanti.order.bo;
+
+import java.math.BigDecimal;
+
+public class StatisOrderList {
+    private Integer id;
+    private String province;
+    private String orderNo;
+    private String aid;
+    private Double quantity;
+    private BigDecimal total;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getAid() {
+        return aid;
+    }
+
+    public void setAid(String aid) {
+        this.aid = aid;
+    }
+
+    public Double getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(Double quantity) {
+        this.quantity = quantity;
+    }
+
+    public BigDecimal getTotal() {
+        return total;
+    }
+
+    public void setTotal(BigDecimal total) {
+        this.total = total;
+    }
+}

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

@@ -649,8 +649,8 @@ public class AdminNewOrderApiController extends CertifyApiController {
 	 */
 	@RequestMapping(value = "/statisticsListExprot", method = RequestMethod.GET)
 	public Result statisticsListExprot(InputStatistics in){
-		List<outStatisticsList>  list =orderNewService.statisticsList(in);
-		NewExcelUtil<outStatisticsList> excelUtil=new NewExcelUtil<>(outStatisticsList.class);
+		List<OutStatisticsList>  list =orderNewService.statisticsList(in);
+		NewExcelUtil<OutStatisticsList> excelUtil=new NewExcelUtil<>(OutStatisticsList.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(",");

+ 6 - 6
src/main/java/com/goafanti/order/controller/AdminNewOrderDunApiController.java

@@ -5,7 +5,7 @@ import javax.annotation.Resource;
 import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.order.bo.OutSelectOrderDun;
 import com.goafanti.order.bo.OutSelectOrderDunAll;
-import com.goafanti.order.bo.outStatisticsList;
+import com.goafanti.order.bo.OutStatisticsList;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -22,12 +22,12 @@ import java.util.List;
 @RestController
 @RequestMapping(value = "/api/admin/newOrderDun")
 public class AdminNewOrderDunApiController extends CertifyApiController {
-	
+
 	@Resource
 	private NewOrderDunService	newOrderDunService;
 	@Value(value = "${upload.path}")
 	private String	uploadPath			= null;
-	
+
 	/**
 	 * 创建催款信息
 	 * @return
@@ -45,7 +45,7 @@ public class AdminNewOrderDunApiController extends CertifyApiController {
 		}
 		res.data(newOrderDunService.createDun(ib));
 		return res;
-	}	
+	}
 	/**
 	 * 修改催款信息
 	 * @return
@@ -67,7 +67,7 @@ public class AdminNewOrderDunApiController extends CertifyApiController {
 		}
 		res.data(newOrderDunService.updateDun(ib));
 		return res;
-	}	
+	}
 	/**
 	 * 删除催款信息
 	 * @return
@@ -81,7 +81,7 @@ public class AdminNewOrderDunApiController extends CertifyApiController {
 		}
 		res.data(newOrderDunService.deleteDun( id));
 		return res;
-	}	
+	}
 	/**
 	 * 	查看催款信息
 	 * @return

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

@@ -184,7 +184,7 @@ public interface OrderNewService {
 	boolean checkOfficialType(TOrderOutsource o);
 	void updateOrderCostAmount(Integer tid,Integer type);
 
-    List<outStatisticsList> statisticsList(InputStatistics in);
+    List<OutStatisticsList> statisticsList(InputStatistics in);
 
 	List<outProvinceStatisticsList> provinceStatisticsList(InputStatistics in);
 

+ 62 - 12
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -6,14 +6,9 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 
 import javax.mail.MessagingException;
@@ -28,6 +23,7 @@ import com.goafanti.order.enums.*;
 import com.goafanti.order.service.OrderProjectService;
 import com.goafanti.organization.bo.*;
 import com.goafanti.common.utils.StringUtils;
+import com.sun.org.glassfish.external.statistics.CountStatistic;
 import groovy.transform.Synchronized;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1814,9 +1810,9 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	}
 
 	@Override
-	@Cacheable(cacheNames = "statisticsList#500",key = "'statisticsList:depId:'+#in.depId+'province:'+#in.province+" +
-			"'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign+'sort:'+#in.sort")
-	public List<outStatisticsList> statisticsList(InputStatistics in) {
+//	@Cacheable(cacheNames = "statisticsList#500",key = "'statisticsList:depId:'+#in.depId+'province:'+#in.province+" +
+//			"'startCreate:'+#in.startCreate+'endCreate:'+#in.endCreate+'startSign:'+#in.startSign+'endSign:'+#in.endSign+'sort:'+#in.sort")
+	public List<OutStatisticsList> statisticsList(InputStatistics in) {
 		if(in.getSort()==null) {
 			in.setSort(0);
 		}
@@ -1826,7 +1822,61 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if(in.getEndSign()!=null) {
 			in.setEndSign(in.getEndSign()+" 23:59:59");
 		}
-		return tOrderNewMapper.statisticsList(in);
+		List<OutStatisticsList> outStatisticsLists =new ArrayList<>();
+		//原来sql计算
+//		outStatisticsLists=tOrderNewMapper.statisticsList(in);
+		//新java内部计算
+		outStatisticsLists= CountStatisticOrderList(in);
+
+		return outStatisticsLists;
+	}
+
+	private List<OutStatisticsList> CountStatisticOrderList(InputStatistics in) {
+		List<OutStatisticsList> result=new ArrayList<>();
+		List<StatisOrderList> statisOrderLists = tOrderNewMapper.statisticsOrderList(in);
+		Map<Integer,List<StatisOrderList>> classmap= statisOrderLists.stream().collect(Collectors.groupingBy(StatisOrderList::getId));
+		for (Integer key : classmap.keySet()) {
+			Integer id= key;
+			String name=classmap.get(key).get(0).getProvince();
+			Double quantity = classmap.get(key).stream().mapToDouble(StatisOrderList::getQuantity).sum();
+			BigDecimal total =CountStatisticOrderTotal(classmap.get(key));
+			Integer counts=CountStatisticOrderCount(classmap.get(key));
+			OutStatisticsList out =new OutStatisticsList();
+			out.setId(id);
+			out.setProvince(name);
+			out.setQuantity(quantity);
+			out.setTotal(total);
+			out.setCounts(counts);
+			result.add(out);
+		}
+		if (in.getSort()==0){
+			result.sort(Comparator.comparing(OutStatisticsList::getTotal).reversed());
+		}else if (in.getSort()==1){
+			result.sort(Comparator.comparing(OutStatisticsList::getQuantity).reversed());
+		} else {
+			result.sort(Comparator.comparing(OutStatisticsList::getCounts).reversed());
+		}
+		return result;
+	}
+
+	private Integer CountStatisticOrderCount(List<StatisOrderList> statisOrderLists) {
+		Integer result =0;
+		List<String> list=new ArrayList<>();
+		for (StatisOrderList statisOrderList : statisOrderLists) {
+			if (!list.contains(statisOrderList.getAid())){
+				list.add(statisOrderList.getAid());
+				result++;
+			}
+		}
+		return result;
+	}
+
+	private BigDecimal CountStatisticOrderTotal(List<StatisOrderList> statisOrderLists) {
+		BigDecimal result=new BigDecimal(0);
+		for (StatisOrderList out : statisOrderLists) {
+			result=result.add(out.getTotal());
+		}
+		return result;
 	}
 
 	@Override

+ 5 - 5
src/main/resources/props/config_local.properties

@@ -1,12 +1,12 @@
 dev.name=local
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#jdbc.url=jdbc\:mysql://localhost:3306/aft20220318?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+jdbc.url=jdbc\:mysql://localhost:3306/aft20221026?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#jdbc.username=root
-#jdbc.password=123456
-jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 jdbc.username=root
-jdbc.password=aftdev
+jdbc.password=123456
+#jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#jdbc.username=root
+#jdbc.password=aftdev
 jdbc.validationQuery=SELECT 'x'
 jdbc.initialSize=3
 jdbc.maxActive=20