Commit 93164d29 by Water Wang

optimize

parent e32997e2
...@@ -9,10 +9,14 @@ import com.yd.api.commission.service.CommissionService; ...@@ -9,10 +9,14 @@ import com.yd.api.commission.service.CommissionService;
import com.yd.api.result.CommonResult; import com.yd.api.result.CommonResult;
import com.yd.util.CommonUtil; import com.yd.util.CommonUtil;
import com.yd.util.config.ZHBErrorConfig; import com.yd.util.config.ZHBErrorConfig;
import org.apache.commons.collections.CollectionUtils;
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 javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
@Service("agmsStatementService") @Service("agmsStatementService")
public class AgmsStatementServiceImpl implements AgmsStatementService { public class AgmsStatementServiceImpl implements AgmsStatementService {
...@@ -39,9 +43,87 @@ public class AgmsStatementServiceImpl implements AgmsStatementService { ...@@ -39,9 +43,87 @@ public class AgmsStatementServiceImpl implements AgmsStatementService {
String subordinateId = requestVO.getSubordinateId();//体系 String subordinateId = requestVO.getSubordinateId();//体系
Integer type = requestVO.getType(); Integer type = requestVO.getType();
Integer isStatement = requestVO.getIsStatement(); Integer isStatement = requestVO.getIsStatement();
PageInfo<statementData> dataList = commissionService.getStatementDataByPage(pageInfo.getPageNum(),pageInfo.getSize(),isStatement,type, inCommissionStartTime, outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId); if(isStatement == 1){
responseVO.setPredictStatementDataList(dataList); List<statementData> dataList = commissionService.getStatementData(isStatement,type, inCommissionStartTime, outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId);
createCSV(type,dataList,response);
}else{
PageInfo<statementData> dataPage = commissionService.getStatementDataByPage(pageInfo.getPageNum(),pageInfo.getSize(),isStatement,type, inCommissionStartTime, outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId);
responseVO.setPredictStatementDataList(dataPage);
}
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000"))); responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO; return responseVO;
} }
private void createCSV(Integer type, List<statementData> dataList, HttpServletResponse response) {
String CSV_COLUMN_SEPARATOR = ",";//CSV文件列分隔符
String CSV_ROW_SEPARATOR = "\r\n";//CSV文件行分隔符
String charset = "UTF-8"; // 读取字符编码
String[] columnName ;
String tableName ;
if(type == 2){
tableName = "YD_FinancialStatement_predict_";
columnName = new String[]{"序号","预估来佣年月","预估发佣年月","保单号","分公司","营业部","体系","经纪人姓名","员工编号","职阶","职阶率","保费","FYC","RYC","应收佣金","应发佣金","佣奖类型"};
}else{
tableName = "YD_FinancialStatement_actual_";
columnName = new String[]{"序号","实际来佣年月","实际发佣年月","保单号","分公司","营业部","体系","经纪人姓名","员工编号","职阶","职阶率","保费","FYC","RYC","应收佣金","应发佣金","佣奖类型"};
}
// 保证线程安全
StringBuilder buf = new StringBuilder();
// 组装表头
for (String title : columnName) {
buf.append(title).append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_ROW_SEPARATOR);
// 组装数据
if (CollectionUtils.isNotEmpty(dataList)) {
for (int i = 0; i < dataList.size(); i++) {
statementData statementData = dataList.get(i);//遍历每个对象
buf.append(i + 1).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getInCommissionTime()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getOutCommissionTime()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getPolicyNo()+"\t").append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getInsurerBranch()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getDept()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getSubordinate()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getPractitioner()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getPractitionerIdEG()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getTitle()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getTitleRate()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getPremium()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getFYC()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getRYC()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getRightReceiveCommission()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getRightPayCommission()).append(CSV_COLUMN_SEPARATOR);
buf.append(statementData.getCommissionType()).append(CSV_COLUMN_SEPARATOR);
buf.append(CSV_ROW_SEPARATOR);
}
}
// 设置文件后缀
String fn = tableName + System.currentTimeMillis() + ".csv";
String headStr = "attachment; filename=\"" + fn + "\"";
// 设置响应
response.setContentType("APPLICATION/ms-csv.numberformat");
response.setCharacterEncoding(charset);
response.setHeader("Content-Disposition", headStr);
response.setHeader("Cache-Control", "max-age=30");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Pragma", "public");
OutputStream os = null;
try {
os = response.getOutputStream();
os.write(buf.toString().getBytes("GBK"));
os.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
} }
...@@ -14,4 +14,6 @@ public interface CommissionService { ...@@ -14,4 +14,6 @@ public interface CommissionService {
List<CommissionEGoldenVO> listSalesCommissionfromEGolden(String login); List<CommissionEGoldenVO> listSalesCommissionfromEGolden(String login);
PageInfo<statementData> getStatementDataByPage(int pageNum, int size, Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime,String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId); PageInfo<statementData> getStatementDataByPage(int pageNum, int size, Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime,String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId);
List<statementData> getStatementData(Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime, String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId);
} }
...@@ -66,5 +66,10 @@ public class CommissionServiceImpl implements CommissionService{ ...@@ -66,5 +66,10 @@ public class CommissionServiceImpl implements CommissionService{
public PageInfo<statementData> getStatementDataByPage(int pageNum, int size, Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime,String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId) { public PageInfo<statementData> getStatementDataByPage(int pageNum, int size, Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime,String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId) {
return commissionEGoldenDA.getStatementDataByPage(pageNum,size,isStatement,type,inCommissionStartTime,outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId); return commissionEGoldenDA.getStatementDataByPage(pageNum,size,isStatement,type,inCommissionStartTime,outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId);
} }
@Override
public List<statementData> getStatementData(Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime, String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId) {
return commissionEGoldenDA.getStatementData(isStatement,type,inCommissionStartTime,outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId);
}
} }
...@@ -16,4 +16,5 @@ public interface CommissionEGoldenDA { ...@@ -16,4 +16,5 @@ public interface CommissionEGoldenDA {
List<CommissionEGolden> listSalesCommissionfromEGolden(String login); List<CommissionEGolden> listSalesCommissionfromEGolden(String login);
List<statementData> getStatementData(Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime, String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId);
} }
...@@ -54,4 +54,10 @@ public class CommissionEGoldenDAImpl implements CommissionEGoldenDA { ...@@ -54,4 +54,10 @@ public class CommissionEGoldenDAImpl implements CommissionEGoldenDA {
return destList; return destList;
} }
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public List<statementData> getStatementData(Integer isStatement, Integer type, String inCommissionStartTime, String outCommissionStartTime, String inCommissionEndTime, String outCommissionEndTime, String insurerBranchId, String deptId, String subordinateId) {
return commissionEGoldenMapper.getStatementDataByPage(isStatement,type,inCommissionStartTime,outCommissionStartTime,inCommissionEndTime,outCommissionEndTime,insurerBranchId,deptId,subordinateId);
}
} }
...@@ -35,23 +35,24 @@ ...@@ -35,23 +35,24 @@
dept.SPC_BUS_NAME as dept, -- 营业部 dept.SPC_BUS_NAME as dept, -- 营业部
divl.SPC_DIV_NAME as subordinate, -- 体系id divl.SPC_DIV_NAME as subordinate, -- 体系id
practitioner.SAL_MST_NAME as practitioner, -- practitioner.SAL_MST_NAME as practitioner, --
pay.MON025_007 as practitionerIdEG, -- 业务员 practitioner.SAL_MST_EPID as practitionerIdEG, -- 业务员
title.SRA_RE_NAME as title, -- 职阶 practitioner.SAL_MST_OFFICIAL_TITLE as title, -- 职阶
pay.MON025_403 as titleRate, -- 职阶率 pay.MON025_403 as titleRate, -- 职阶率
pay.premium as premium, -- 保费 if((pay.MON025_108 = "S02" or pay.MON025_108 = "S01"),convert(policy.INS_MST_TOTAL_PREIUM,decimal(10,2)),0) as premium, -- 保费
policy.INS001_FYCTOTAL as FYC, -- fyc if((receive.MON024_303=1 and (pay.MON025_108 = "S02" or pay.MON025_108 = "S01")),convert(policy.INS001_FYCTOTAL,decimal(10,2)),0) as FYC, -- fyc
receive.incommission as rightReceiveCommission, -- 来佣金额 if((receive.MON024_303 != 1 and (pay.MON025_108 = "S02" or pay.MON025_108 = "S01")),convert((policy.INS_MST_TOTAL_PREIUM * pay.MON025_402)/100,decimal(10,2)) ,0) as RYC, -- fyc
if((pay.MON025_108 = "S02" or pay.MON025_108 = "S01"),convert(receive.incommission,decimal(10,2)),0) as rightReceiveCommission, -- 来佣金额
pay.paycommission as rightPayCommission, -- 应发佣金 pay.paycommission as rightPayCommission, -- 应发佣金
pay.MON025_108 as commissionType-- 佣奖类型 commissionType.SRA_BS_NAME as commissionType-- 佣奖类型
from ins001 policy INNER JOIN (select MON025_002,MON025_301,MON025_302,MON025_005,MON025_006,mon025_007,MON025_008,MON025_403,sum(MON025_401) as premium,sum(MON025_405) as paycommission,MON025_108 from MON025 group by mon025_002,mon025_301,MON025_007) pay on policy.INS_MST_ID = pay.MON025_002 AND pay.mon025_108 in ('S01','S02') from ins001 policy left join (select MON024_002,MON024_301,MON024_302,MON024_303,sum(MON024_404) as incommission from MON024 group by MON024_002 ,MON024_301) receive on policy.INS_MST_ID = receive.MON024_002
INNER JOIN (select MON024_002,MON024_301,MON024_302,sum(MON024_404) as incommission from MON024 group by MON024_002 ,MON024_301) receive on policy.INS_MST_ID = receive.MON024_002 left join (select MON025_002,MON025_301,MON025_302,MON025_303,MON025_005,MON025_006,MON025_008,MON025_007,MON025_403,MON025_402,sum(MON025_401) as premium,sum(MON025_405) as paycommission,MON025_108 from MON025 group by mon025_002,mon025_301,MON025_007) pay on policy.INS_MST_ID = pay.MON025_002 and receive.MON024_303 = pay.MON025_303
inner join spc002 dept on dept.SPC_BUS_ID = pay.MON025_005 left join sal001 practitioner on practitioner.SAL_MST_ID = pay.MON025_007
inner join spc001 branch on branch.SPC_AREA_ID = dept.FK_AREA_ID left join spc002 dept on dept.SPC_BUS_ID = practitioner.FK_SPC_BUS_ID
inner join spc004 divl on divl.SPC_DIV_ID = pay.MON025_006 left join spc001 branch on branch.SPC_AREA_ID = dept.FK_AREA_ID
inner join sal001 practitioner on practitioner.SAL_MST_ID = pay.MON025_007 left join spc004 divl on divl.SPC_DIV_ID = practitioner.FK_SPC_DIV_ID
inner join sra008 title on title.SRA_RRR_ID = pay.MON025_008 left join sra009 commissionType on commissionType.SRA_BS_CODE = pay.MON025_108
where policy.INS_MST_ID = receive.MON024_002 where policy.INS_MST_ID = receive.MON024_002
<if test="isStatement == 0"> <!-- <if test="isStatement == 0">-->
<choose> <choose>
<when test="type == 1"> <when test="type == 1">
<if test="inCommissionStartTime != null"> <if test="inCommissionStartTime != null">
...@@ -89,11 +90,14 @@ ...@@ -89,11 +90,14 @@
<when test="deptId != null "> <when test="deptId != null ">
and pay.MON025_005 = #{deptId,jdbcType=VARCHAR} and pay.MON025_005 = #{deptId,jdbcType=VARCHAR}
</when> </when>
<otherwise> <when test="insurerBranchId != null ">
and branch.SPC_AREA_ID = #{insurerBranchId,jdbcType=VARCHAR} and branch.SPC_AREA_ID = #{insurerBranchId,jdbcType=VARCHAR}
</when>
<otherwise>
</otherwise> </otherwise>
</choose> </choose>
</if> <!-- </if>-->
order by policy.INS_MST_ACCEPT_DATE asc order by policy.INS_MST_ACCEPT_DATE asc
</select> </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