Commit a633d8f4 by Water Wang

optimize

parent 75833914
...@@ -78,4 +78,32 @@ public class AgmsController { ...@@ -78,4 +78,32 @@ public class AgmsController {
result.setData(responseVO); result.setData(responseVO);
return result; return result;
} }
/**
* AGMS -- Dashboard查询 销售统计查询
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsSales")
public Object statisticsSales(@RequestBody StatisticsSalesRequestVO requestVO){
JsonResult result = new JsonResult();
StatisticsSalesResponseVO responseVO = agmsDashboardService.statisticsSales(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
/**
* AGMS -- Dashboard查询 经纪人统计查询
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsPractitioner")
public Object statisticsPractitioner(@RequestBody StatisticsPractitionerRequestVO requestVO){
JsonResult result = new JsonResult();
StatisticsPractitionerResponseVO responseVO = agmsDashboardService.statisticsPractitioner(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
} }
...@@ -23,4 +23,18 @@ public interface AgmsDashboardService { ...@@ -23,4 +23,18 @@ public interface AgmsDashboardService {
* @return 响应数据 * @return 响应数据
*/ */
StatisticsForecastTotalResponseVO statisticsForecastTotal(StatisticsForecastTotalRequestVO requestVO); StatisticsForecastTotalResponseVO statisticsForecastTotal(StatisticsForecastTotalRequestVO requestVO);
/**
* AGMS -- Dashboard查询 销售统计查询
* @param requestVO 请求数据
* @return 响应数据
*/
StatisticsSalesResponseVO statisticsSales(StatisticsSalesRequestVO requestVO);
/**
* AGMS -- Dashboard查询 经纪人统计查询
* @param requestVO 请求数据
* @return 响应数据
*/
StatisticsPractitionerResponseVO statisticsPractitioner(StatisticsPractitionerRequestVO requestVO);
} }
package com.yd.api.agms.service.impl; package com.yd.api.agms.service.impl;
import com.google.common.base.Strings;
import com.yd.api.agms.service.AgmsDashboardService; import com.yd.api.agms.service.AgmsDashboardService;
import com.yd.api.agms.vo.dashboard.*; import com.yd.api.agms.vo.dashboard.*;
import com.yd.api.result.CommonResult; import com.yd.api.result.CommonResult;
...@@ -12,6 +13,7 @@ import com.yd.util.config.ZHBErrorConfig; ...@@ -12,6 +13,7 @@ import com.yd.util.config.ZHBErrorConfig;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Service("agmsDashboardService") @Service("agmsDashboardService")
...@@ -84,4 +86,40 @@ public class AgmsDashboardServiceImpl implements AgmsDashboardService { ...@@ -84,4 +86,40 @@ public class AgmsDashboardServiceImpl implements AgmsDashboardService {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000"))); responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO; return responseVO;
} }
@Override
public StatisticsSalesResponseVO statisticsSales(StatisticsSalesRequestVO requestVO) {
StatisticsSalesResponseVO responseVO = new StatisticsSalesResponseVO();
String category = requestVO.getCategory();
String time = requestVO.getTime();
String type = requestVO.getType();
category = Strings.isNullOrEmpty(category) ? "PC" : category;
time = Strings.isNullOrEmpty(time) ? "m" : time;
type = Strings.isNullOrEmpty(type) ? "b" : type;
List<StatisticsSalesInfo> statisticsSalesInfos;
if("life".equals(category)){
statisticsSalesInfos = agmsDashboardDALService.statisticsSales(type,time);
}else{
statisticsSalesInfos = agmsDashboardDALService.statisticsSales(type,time);
}
if(statisticsSalesInfos != null && statisticsSalesInfos.size() > 0){
Double fyp;
Integer pieces;
for(StatisticsSalesInfo item : statisticsSalesInfos){
fyp = item.getFyp();
pieces = item.getPieces();
if(pieces != null && pieces != 0){
item.setUnitPremium(BigDecimal.valueOf(fyp / pieces).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
}
responseVO.setStatisticsSalesInfos(statisticsSalesInfos);
responseVO.setCommonResult(new CommonResult(true,ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
@Override
public StatisticsPractitionerResponseVO statisticsPractitioner(StatisticsPractitionerRequestVO requestVO) {
return null;
}
} }
package com.yd.api.agms.vo.dashboard;
public class StatisticsPractitionerInfo {
private String typeName;
private Integer amount;
private Double realRate;
private Integer mdrt;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
public Double getRealRate() {
return realRate;
}
public void setRealRate(Double realRate) {
this.realRate = realRate;
}
public Integer getMdrt() {
return mdrt;
}
public void setMdrt(Integer mdrt) {
this.mdrt = mdrt;
}
}
package com.yd.api.agms.vo.dashboard;
public class StatisticsPractitionerRequestVO {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package com.yd.api.agms.vo.dashboard;
import com.yd.api.result.CommonResult;
import java.util.List;
public class StatisticsPractitionerResponseVO {
private List<StatisticsPractitionerInfo> statisticsPractitionerInfos;
private CommonResult commonResult;
public List<StatisticsPractitionerInfo> getStatisticsPractitionerInfos() {
return statisticsPractitionerInfos;
}
public void setStatisticsPractitionerInfos(List<StatisticsPractitionerInfo> statisticsPractitionerInfos) {
this.statisticsPractitionerInfos = statisticsPractitionerInfos;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.api.agms.vo.dashboard;
public class StatisticsSalesInfo {
private String typeName;
private Double fyp;
private Double fyc;
private Double api;
private Integer pieces;
private Double unitPremium;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public Double getFyp() {
return fyp;
}
public void setFyp(Double fyp) {
this.fyp = fyp;
}
public Double getFyc() {
return fyc;
}
public void setFyc(Double fyc) {
this.fyc = fyc;
}
public Double getApi() {
return api;
}
public void setApi(Double api) {
this.api = api;
}
public Integer getPieces() {
return pieces;
}
public void setPieces(Integer pieces) {
this.pieces = pieces;
}
public Double getUnitPremium() {
return unitPremium;
}
public void setUnitPremium(Double unitPremium) {
this.unitPremium = unitPremium;
}
}
package com.yd.api.agms.vo.dashboard;
public class StatisticsSalesRequestVO {
private String type;// d:整体,t:团体
private String time;//d:天,w:周,m:月,q:季,y:年
private String category;//life:寿险,pc:财险
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
}
package com.yd.api.agms.vo.dashboard;
import com.yd.api.result.CommonResult;
import java.util.List;
public class StatisticsSalesResponseVO {
private List<StatisticsSalesInfo> statisticsSalesInfos;
private CommonResult commonResult;
public List<StatisticsSalesInfo> getStatisticsSalesInfos() {
return statisticsSalesInfos;
}
public void setStatisticsSalesInfos(List<StatisticsSalesInfo> statisticsSalesInfos) {
this.statisticsSalesInfos = statisticsSalesInfos;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.dal.mapper.agms; package com.yd.dal.mapper.agms;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -12,4 +13,5 @@ public interface AgmsDashboardMapper { ...@@ -12,4 +13,5 @@ public interface AgmsDashboardMapper {
List<StatisticsOpportunityInfo> statisticsOpportunity(@Param("type")String type,@Param("time") String time, @Param("dropOptionId") Long dropOptionId); List<StatisticsOpportunityInfo> statisticsOpportunity(@Param("type")String type,@Param("time") String time, @Param("dropOptionId") Long dropOptionId);
List<StatisticsSalesInfo> statisticsSales(@Param("type")String type, @Param("time")String time);
} }
package com.yd.dal.service.agms; package com.yd.dal.service.agms;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
...@@ -9,4 +10,6 @@ public interface AgmsDashboardDALService { ...@@ -9,4 +10,6 @@ public interface AgmsDashboardDALService {
List<StatisticsPEPInfo> statisticsPEP(String type,Long dropOptionId); List<StatisticsPEPInfo> statisticsPEP(String type,Long dropOptionId);
List<StatisticsOpportunityInfo> statisticsOpportunity(String type,String time, Long id); List<StatisticsOpportunityInfo> statisticsOpportunity(String type,String time, Long id);
List<StatisticsSalesInfo> statisticsSales(String type, String time);
} }
package com.yd.dal.service.agms.impl; package com.yd.dal.service.agms.impl;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.mapper.agms.AgmsDashboardMapper; import com.yd.dal.mapper.agms.AgmsDashboardMapper;
...@@ -24,4 +25,9 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService { ...@@ -24,4 +25,9 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService {
public List<StatisticsOpportunityInfo> statisticsOpportunity(String type,String time, Long dropOptionId) { public List<StatisticsOpportunityInfo> statisticsOpportunity(String type,String time, Long dropOptionId) {
return agmsDashboardMapper.statisticsOpportunity(type , time, dropOptionId); return agmsDashboardMapper.statisticsOpportunity(type , time, dropOptionId);
} }
@Override
public List<StatisticsSalesInfo> statisticsSales(String type, String time) {
return agmsDashboardMapper.statisticsSales(type,time);
}
} }
...@@ -88,6 +88,59 @@ where not EXISTS( ...@@ -88,6 +88,59 @@ where not EXISTS(
</choose> </choose>
order by predictFYC desc ,predictFYP desc ,pieces desc ,opportunityNum desc; order by predictFYC desc ,predictFYP desc ,pieces desc ,opportunityNum desc;
</select> </select>
<select id="statisticsSales" resultType="com.yd.api.agms.vo.dashboard.StatisticsSalesInfo">
select
<choose>
<when test="type.equalsIgnoreCase('B')">
b.branch_name as typeName,
</when>
<otherwise>
s.name as typeName,
</otherwise>
</choose>
ifnull(sum(cf.order_price),0) as fyp,
ifnull(sum(cf.fyc_amount),0) as fyc,
ifnull(count(cf.order_id),0) as pieces
from ag_acl_practitioner p left join ag_acl_customer_fortune cf on p.customer_id = cf.customer_id and cf.grade_commission_rate != 5
left join ag_po_order o on cf.order_id = o.id and o.status = 3
left join ag_acl_insurer_branch b on b.id = p.insurer_branch_id
left join ag_acl_practitioner_subordinate_system s on s.id = p.subordinate_system_id
where
<choose>
<when test="type.equalsIgnoreCase('B')">
p.insurer_branch_id is not null
</when>
<otherwise>
p.subordinate_system_id is not null
</otherwise>
</choose>
<choose>
<when test="time.equalsIgnoreCase('D')">
and TO_DAYS(o.order_date) = TO_DAYS(now())
</when>
<when test="time.equalsIgnoreCase('W')">
and YEARWEEK(DATE_FORMAT(o.order_date,'%Y-%m-%d')) = YEARWEEK(NOW())
</when>
<when test="time.equalsIgnoreCase('M')">
and DATE_FORMAT(o.order_date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
</when>
<when test="time.equalsIgnoreCase('Q')">
and QUARTER(o.order_date) = QUARTER(NOW()) AND year(o.order_date)=year(now())
</when>
<otherwise>
and YEAR(o.order_date) = YEAR(now())
</otherwise>
</choose>
<choose>
<when test="type.equalsIgnoreCase('B')">
group by p.insurer_branch_id
</when>
<otherwise>
group by p.subordinate_system_id
</otherwise>
</choose>
order by fyc desc
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment