Commit 81f0017d authored by maliang's avatar maliang

上传bug修复

parent 08d6a080
......@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
......@@ -37,7 +38,162 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
List<BaseSettlement> baseSettlements = copyrightDao.selectTableListMonth(baseSettlementList,page-1,limit,status);
DecimalFormat df = new DecimalFormat("#.00");
// for (BaseSettlement baseSettlement : baseSettlements) {
// Integer type = baseSettlement.getType();
// Double totalAmount = baseSettlement.getTotalAmount();
// String context = baseSettlement.getContext();
// Double count=0.0;
// Double count1=0.0;
// Double totalAdvertAmount = baseSettlement.getTotalAdvertAmount();
// //扣量算法
// if(type==1){
// JSONObject jsonObject = JSONObject.parseObject(context);
// Set<String> keySet = jsonObject.keySet();
// ArrayList<Integer> list = new ArrayList<>();
// list.add(0);
// for (String s : keySet) {
// list.add(Integer.valueOf(s));
// }
// Collections.sort(list);
// int size = list.size();
// int flag=0;
// int flag1=0;
// Double a1=0D;
// Double a2=0D;
// for(int i=1;i<size;i++){
// if(totalAmount>=list.get(i-1)&&totalAmount<=list.get(i)){
// flag=i;
// a1=totalAmount-list.get(i-1);
// count=a1*jsonObject.getDouble(String.valueOf( list.get(i) ) );
// break;
// }
// }
//
// for(int i=1;i<size;i++){
// if(totalAdvertAmount>=list.get(i-1)&&totalAdvertAmount<=list.get(i)){
// flag1=i;
// a2=totalAdvertAmount-list.get(i-1);
// count1=a2*jsonObject.getDouble(String.valueOf( list.get(i) ) );
// break;
// }
// }
//
// for(int i=1;i<flag;i++){
// count+=(list.get(i)-list.get(i-1))*jsonObject.getDouble(String.valueOf( list.get(i) ));
// }
//
// for(int i=1;i<flag1;i++){
// count1+=(list.get(i)-list.get(i-1))*jsonObject.getDouble(String.valueOf( list.get(i) ));
// }
//
// }else {
//
// count=totalAmount*Double.valueOf(context);
//
// count1=totalAmount*Double.valueOf(context);
//
// }
//
// count=Double.valueOf(df.format(count));
// baseSettlement.setTotalAmount(count);
// baseSettlement.setSettlementAmount(Double.valueOf(df.format(count*0.5)));
//
//
// count=Double.valueOf(df.format(count1));
// Integer id = baseSettlement.getCopyrightId();
// if(id==3219||id==3230||id==3254||id==3253){
// count=Double.valueOf(df.format(baseSettlement.getTotalAmount()+count));
// baseSettlement.setTotalAmount(count);
// baseSettlement.setSettlementAmount(Double.valueOf(df.format(count*0.5)));
// baseSettlement.setTotalAdvertAmount(0d);
// baseSettlement.setSettlementAdAmount(0d);
// }else {
// baseSettlement.setTotalAdvertAmount(count);
// baseSettlement.setSettlementAdAmount(Double.valueOf(df.format(count*0.5)));
// }
// baseSettlement.setCountSettlement(Double.valueOf(df.format(baseSettlement.getSettlementAmount()+baseSettlement.getSettlementAdAmount())));
// }
Integer count = copyrightDao.selectTableListMonthCount(baseSettlementList,status);
Map<Integer, List<BaseSettlement>> copyrightSettlementData = getCopyrightSettlementData(copyrightId, "2020-04", "2021-12", null, null, 1, 1000000);
for (BaseSettlement baseSettlement : baseSettlements) {
Integer copyrightId1 = baseSettlement.getCopyrightId();
String reportDate = baseSettlement.getReportDate();
Double count1=0D;
Double count2=0D;
Double count3=0D;
Double count4=0D;
Double count5=0D;
List<BaseSettlement> baseSettlementList1 = copyrightSettlementData.get(copyrightId1);
for (BaseSettlement settlement : baseSettlementList1) {
if(settlement.getReportDate().equals(reportDate)){
count1+=settlement.getTotalAdvertAmount();
count2+=settlement.getTotalAmount();
count3+=settlement.getSettlementAdAmount();
count4+=settlement.getSettlementAmount();
count5+= settlement.getCountSettlement();
}
}
baseSettlement.setTotalAdvertAmount( Double.valueOf(df.format(count1)) );
baseSettlement.setTotalAmount( Double.valueOf(df.format(count2)) );
baseSettlement.setSettlementAdAmount( Double.valueOf(df.format(count3)) );
baseSettlement.setSettlementAmount(Double.valueOf(df.format(count4)));
baseSettlement.setCountSettlement(Double.valueOf(df.format(count5)));
}
return PageTableHandler.getJSONObject(baseSettlements,count);
}
public Map<Integer, List<BaseSettlement>> getCopyrightSettlementData(Integer copyrightId,String startTime,String endTime,Long bookId,String bookName,Integer page,Integer limit){
Integer status=null;
Integer roleId = copyrightDao.selectRoleId(UserUtil.getLoginUser().getId());
List<BaseSettlement> baseSettlementList =new ArrayList<>();
if(copyrightId==null||copyrightId==0){
baseSettlementList = copyrightDao.selectCopyrightById(UserUtil.getLoginUser().getId());
}else {
BaseSettlement baseSettlement = new BaseSettlement();
baseSettlement.setCopyrightId(copyrightId);
baseSettlementList.add(baseSettlement);
}
List<BaseSettlement> list =new ArrayList<>();
if(roleId!=3){
list = copyrightDao.selectReleaseCopyright();
status=1;
}
DecimalFormat df = new DecimalFormat("#.0000");
List<BaseSettlement> baseSettlementCopyright = copyrightDao.selectTableListMonth(baseSettlementList,0,1000,status);
List<BaseSettlement> baseSettlements = copyrightDao.selectBookDetail(baseSettlementList,bookId,bookName,startTime,endTime,page-1,limit);
for (BaseSettlement baseSettlement : baseSettlementCopyright) {
for (BaseSettlement settlement : baseSettlements) {
if( (settlement.getReportDate().equals(baseSettlement.getReportDate())) && (settlement.getCopyrightId().equals(baseSettlement.getCopyrightId())) ){
Double totalAmountC = baseSettlement.getTotalAmount();
Double totalAdvertAmountC = baseSettlement.getTotalAdvertAmount();
Double totalAmount = settlement.getTotalAmount();
Double totalAdvertAmount =settlement.getTotalAdvertAmount();
if(totalAmountC!=0.0&&totalAmountC!=null&&totalAmount!=null){
settlement.setBookRadio(Double.valueOf( df.format( totalAmount/totalAmountC ) ));
}else {
settlement.setBookRadio(0.0);
}
if(totalAdvertAmountC!=0.0&&totalAdvertAmount!=null&&totalAdvertAmountC!=null){
settlement.setBookAdRadio(Double.valueOf( df.format( totalAdvertAmount/totalAdvertAmountC ) ));
}else {
settlement.setBookAdRadio(0.0);
}
}
}
}
for (BaseSettlement baseSettlement : baseSettlementCopyright) {
Integer type = baseSettlement.getType();
Double totalAmount = baseSettlement.getTotalAmount();
String context = baseSettlement.getContext();
......@@ -45,44 +201,45 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
Double count1=0.0;
Double totalAdvertAmount = baseSettlement.getTotalAdvertAmount();
//扣量算法
if(type==1){
if(type.equals(1)){
JSONObject jsonObject = JSONObject.parseObject(context);
Set<String> keySet = jsonObject.keySet();
ArrayList<Integer> list = new ArrayList<>();
list.add(0);
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(0);
for (String s : keySet) {
list.add(Integer.valueOf(s));
list1.add(Integer.valueOf(s));
}
Collections.sort(list);
int size = list.size();
Collections.sort(list1);
int size = list1.size();
int flag=0;
int flag1=0;
Double a1=0D;
Double a2=0D;
for(int i=1;i<size;i++){
if(totalAmount>=list.get(i-1)&&totalAmount<=list.get(i)){
if(totalAmount>=list1.get(i-1)&&totalAmount<=list1.get(i)){
flag=i;
a1=totalAmount-list.get(i-1);
count=a1*jsonObject.getDouble(String.valueOf( list.get(i) ) );
a1=totalAmount-list1.get(i-1);
count=a1*jsonObject.getDouble(String.valueOf( list1.get(i) ) );
break;
}
}
for(int i=1;i<size;i++){
if(totalAdvertAmount>=list.get(i-1)&&totalAdvertAmount<=list.get(i)){
if(totalAdvertAmount>=list1.get(i-1)&&totalAdvertAmount<=list1.get(i)){
flag1=i;
a2=totalAdvertAmount-list.get(i-1);
count1=a2*jsonObject.getDouble(String.valueOf( list.get(i) ) );
a2=totalAdvertAmount-list1.get(i-1);
count1=a2*jsonObject.getDouble(String.valueOf( list1.get(i) ) );
break;
}
}
for(int i=1;i<flag;i++){
count+=(list.get(i)-list.get(i-1))*jsonObject.getDouble(String.valueOf( list.get(i) ));
count+=(list1.get(i)-list1.get(i-1))*jsonObject.getDouble(String.valueOf( list1.get(i) ));
}
for(int i=1;i<flag1;i++){
count1+=(list.get(i)-list.get(i-1))*jsonObject.getDouble(String.valueOf( list.get(i) ));
count1+=(list1.get(i)-list1.get(i-1))*jsonObject.getDouble(String.valueOf( list1.get(i) ));
}
}else {
......@@ -112,8 +269,72 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
}
baseSettlement.setCountSettlement(Double.valueOf(df.format(baseSettlement.getSettlementAmount()+baseSettlement.getSettlementAdAmount())));
}
Integer count = copyrightDao.selectTableListMonthCount(baseSettlementList,status);
return PageTableHandler.getJSONObject(baseSettlements,count);
df = new DecimalFormat("#.00");
Iterator<BaseSettlement> iterator = baseSettlements.iterator();
while (iterator.hasNext()) {
BaseSettlement baseSettlement = iterator.next();
Boolean flag=false;
for (BaseSettlement settlement : list) {
Integer id = settlement.getCopyrightId();
Integer id1 = baseSettlement.getCopyrightId();
if( (settlement.getReportDate().equals(baseSettlement.getReportDate()) ) && id.equals(id1) ){
flag=true;
break;
}
}
if(roleId!=3){
if(list==null||list.size()==0){
baseSettlements.clear();
break;
}
}
if (flag==false&&list.size()>0){
iterator.remove();
continue;
}
if(baseSettlement.getTotalAmount()==null){
baseSettlement.setTotalAmount(0d);
}
if(baseSettlement.getTotalAdvertAmount()==null){
baseSettlement.setTotalAdvertAmount(0d);
}
Double count=0.0;
Double count1=0.0;
for (BaseSettlement settlement : baseSettlementCopyright) {
if( (settlement.getReportDate().equals(baseSettlement.getReportDate()) ) && (settlement.getCopyrightId().equals(baseSettlement.getCopyrightId())) ){
count=settlement.getTotalAmount()*baseSettlement.getBookRadio();
count1=settlement.getTotalAdvertAmount()*baseSettlement.getBookAdRadio();
break;
}
}
count=Double.valueOf(df.format(count));
baseSettlement.setTotalAmount(count);
baseSettlement.setSettlementAmount(Double.valueOf(df.format(count*0.5)));
count=Double.valueOf(df.format(count1));
Integer id = baseSettlement.getCopyrightId();
if(id==3219||id==3230||id==3254||id==3253){
count=Double.valueOf(df.format(baseSettlement.getTotalAmount()+count));
baseSettlement.setTotalAmount(count);
baseSettlement.setSettlementAmount(Double.valueOf(df.format(count*0.5)));
baseSettlement.setTotalAdvertAmount(0d);
baseSettlement.setSettlementAdAmount(0d);
}else {
baseSettlement.setTotalAdvertAmount(count);
baseSettlement.setSettlementAdAmount(Double.valueOf(df.format(count*0.5)));
}
baseSettlement.setCountSettlement(Double.valueOf(df.format(baseSettlement.getSettlementAmount()+baseSettlement.getSettlementAdAmount())));
}
Map<Integer, List<BaseSettlement>> collect = baseSettlements.stream().collect(Collectors.groupingBy(BaseSettlement::getCopyrightId));
return collect;
}
@Override
......
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