Commit 79fefcae authored by maliang's avatar maliang

上传bug修复

parent c09ddea5
......@@ -31,6 +31,33 @@ public class BaseSettlement extends BaseEntity<Long>{
public String statusName;
public String releaseStatusName;
public Integer releaseStatus;
public Integer type;
public String typeName;
public String context;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getContext() {
return context;
}
public void setContext(String context) {
this.context = context;
}
public String getReleaseStatusName() {
return releaseStatusName;
......
......@@ -10,9 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.stream.Stream;
@Service
public class CopyrightBookServiceImpl implements CopyrightBookService {
......@@ -39,83 +38,67 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
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;
if(totalAmount<=2000.0){
count=totalAmount;
}else if(totalAmount>=2001.0&&totalAmount<=5000.0){
Double a1=totalAmount-2000.0;
count=2000.0+a1*0.5;
}else if(totalAmount>=5001.0&&totalAmount<=10000.0){
Double a1=totalAmount-5000.0;
count=2000.0+3000*0.5+a1*0.2;
}else if(totalAmount>=10001.0&&totalAmount<=30000.0){
Double a1=totalAmount-10000.0;
count=2000.0+3000*0.5+5000*0.2+a1*0.2;
}else if(totalAmount>=30001.0&&totalAmount<=50000.0){
Double a1=totalAmount-30000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2+a1*0.15;
}else if(totalAmount>=50001.0&&totalAmount<=100000.0){
Double a1=totalAmount-50000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+a1*0.15;
}else if(totalAmount>=100001.0&&totalAmount<=300000.0){
Double a1=totalAmount-100000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+a1*0.1;
}else if(totalAmount>=300001.0&&totalAmount<=500000.0){
Double a1=totalAmount-300000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1+a1*0.05;
}else if(totalAmount>=500001.0&&totalAmount<=1000000.0){
Double a1=totalAmount-500000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+a1*0.02;
}else if(totalAmount>=1000001.0&&totalAmount<=3000000.0){
Double a1=totalAmount-1000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+a1*0.02;
}else if(totalAmount>=3000001.0&&totalAmount<=5000000.0){
Double a1=totalAmount-3000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+a1*0.02;
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)*jsonObject.getDouble(String.valueOf( list.get(i) ));
}
for(int i=1;i<flag1;i++){
count1+=list.get(i)*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=0.0;
Double totalAdvertAmount = baseSettlement.getTotalAdvertAmount();
if(totalAdvertAmount<=2000.0){
count=totalAdvertAmount;
}else if(totalAdvertAmount>=2001.0&&totalAdvertAmount<=5000.0){
Double a1=totalAdvertAmount-2000.0;
count=2000.0+a1*0.5;
}else if(totalAdvertAmount>=5001.0&&totalAdvertAmount<=10000.0){
Double a1=totalAdvertAmount-5000.0;
count=2000.0+3000*0.5+a1*0.2;
}else if(totalAdvertAmount>=10001.0&&totalAdvertAmount<=30000.0){
Double a1=totalAdvertAmount-10000.0;
count=2000.0+3000*0.5+5000*0.2+a1*0.2;
}else if(totalAdvertAmount>=30001.0&&totalAdvertAmount<=50000.0){
Double a1=totalAdvertAmount-30000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2+a1*0.15;
}else if(totalAdvertAmount>=50001.0&&totalAdvertAmount<=100000.0){
Double a1=totalAdvertAmount-50000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+a1*0.15;
}else if(totalAdvertAmount>=100001.0&&totalAdvertAmount<=300000.0){
Double a1=totalAdvertAmount-100000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+a1*0.1;
}else if(totalAdvertAmount>=300001.0&&totalAdvertAmount<=500000.0){
Double a1=totalAdvertAmount-300000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1+a1*0.05;
}else if(totalAdvertAmount>=500001.0&&totalAdvertAmount<=1000000.0){
Double a1=totalAdvertAmount-500000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+a1*0.02;
}else if(totalAdvertAmount>=1000001.0&&totalAdvertAmount<=3000000.0){
Double a1=totalAdvertAmount-1000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+a1*0.02;
}else if(totalAdvertAmount>=3000001.0&&totalAdvertAmount<=5000000.0){
Double a1=totalAdvertAmount-3000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+a1*0.02;
}else if(totalAdvertAmount>=5000001.0){
Double a1=totalAdvertAmount-5000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+2000000*0.02+a1*0.02;
}
count=Double.valueOf(df.format(count));
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));
......@@ -181,82 +164,66 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
baseSettlement.setTotalAdvertAmount(0d);
}
Double totalAmount = baseSettlement.getTotalAmount();
Integer type = baseSettlement.getType();
String context = baseSettlement.getContext();
Double count=0.0;
if(totalAmount<=2000.0){
count=totalAmount;
}else if(totalAmount>=2001.0&&totalAmount<=5000.0){
Double a1=totalAmount-2000.0;
count=2000.0+a1*0.5;
}else if(totalAmount>=5001.0&&totalAmount<=10000.0){
Double a1=totalAmount-5000.0;
count=2000.0+3000*0.5+a1*0.2;
}else if(totalAmount>=10001.0&&totalAmount<=30000.0){
Double a1=totalAmount-10000.0;
count=2000.0+3000*0.5+5000*0.2+a1*0.2;
}else if(totalAmount>=30001.0&&totalAmount<=50000.0){
Double a1=totalAmount-30000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2+a1*0.15;
}else if(totalAmount>=50001.0&&totalAmount<=100000.0){
Double a1=totalAmount-50000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+a1*0.15;
}else if(totalAmount>=100001.0&&totalAmount<=300000.0){
Double a1=totalAmount-100000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+a1*0.1;
}else if(totalAmount>=300001.0&&totalAmount<=500000.0){
Double a1=totalAmount-300000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1+a1*0.05;
}else if(totalAmount>=500001.0&&totalAmount<=1000000.0){
Double a1=totalAmount-500000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+a1*0.02;
}else if(totalAmount>=1000001.0&&totalAmount<=3000000.0){
Double a1=totalAmount-1000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+a1*0.02;
}else if(totalAmount>=3000001.0&&totalAmount<=5000000.0){
Double a1=totalAmount-3000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+a1*0.02;
Double count1=0.0;
Double totalAdvertAmount = baseSettlement.getTotalAdvertAmount();
//扣量算法
if(type==1){
JSONObject jsonObject = JSONObject.parseObject(context);
Set<String> keySet = jsonObject.keySet();
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(0);
for (String s : keySet) {
list1.add(Integer.valueOf(s));
}
Collections.sort(list1);
int size = list1.size();
int flag1=0;
int flag2=0;
Double a1=0D;
Double a2=0D;
for(int i=1;i<size;i++){
if(totalAmount>=list1.get(i-1)&&totalAmount<=list1.get(i)){
flag1=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>=list1.get(i-1)&&totalAdvertAmount<=list1.get(i)){
flag2=i;
a2=totalAdvertAmount-list1.get(i-1);
count1=a2*jsonObject.getDouble(String.valueOf( list1.get(i) ) );
break;
}
}
for(int i=1;i<flag1;i++){
count+=list1.get(i)*jsonObject.getDouble(String.valueOf( list1.get(i) ));
}
for(int i=1;i<flag2;i++){
count1+=list1.get(i)*jsonObject.getDouble(String.valueOf( list1.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=0.0;
Double totalAdvertAmount = baseSettlement.getTotalAdvertAmount();
if(totalAdvertAmount<=2000.0){
count=totalAdvertAmount;
}else if(totalAdvertAmount>=2001.0&&totalAdvertAmount<=5000.0){
Double a1=totalAdvertAmount-2000.0;
count=2000.0+a1*0.5;
}else if(totalAdvertAmount>=5001.0&&totalAdvertAmount<=10000.0){
Double a1=totalAdvertAmount-5000.0;
count=2000.0+3000*0.5+a1*0.2;
}else if(totalAdvertAmount>=10001.0&&totalAdvertAmount<=30000.0){
Double a1=totalAdvertAmount-10000.0;
count=2000.0+3000*0.5+5000*0.2+a1*0.2;
}else if(totalAdvertAmount>=30001.0&&totalAdvertAmount<=50000.0){
Double a1=totalAdvertAmount-30000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2+a1*0.15;
}else if(totalAdvertAmount>=50001.0&&totalAdvertAmount<=100000.0){
Double a1=totalAdvertAmount-50000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+a1*0.15;
}else if(totalAdvertAmount>=100001.0&&totalAdvertAmount<=300000.0){
Double a1=totalAdvertAmount-100000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+a1*0.1;
}else if(totalAdvertAmount>=300001.0&&totalAdvertAmount<=500000.0){
Double a1=totalAdvertAmount-300000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1+a1*0.05;
}else if(totalAdvertAmount>=500001.0&&totalAdvertAmount<=1000000.0){
Double a1=totalAdvertAmount-500000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+a1*0.02;
}else if(totalAdvertAmount>=1000001.0&&totalAdvertAmount<=3000000.0){
Double a1=totalAdvertAmount-1000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+a1*0.02;
}else if(totalAdvertAmount>=3000001.0&&totalAdvertAmount<=5000000.0){
Double a1=totalAdvertAmount-3000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+a1*0.02;
}else if(totalAdvertAmount>=5000001.0){
Double a1=totalAdvertAmount-5000000.0;
count=2000.0+3000*0.5+5000*0.2+20000*0.2*2+50000*0.15+200000*0.1*2+500000*0.02+2000000*0.02+2000000*0.02+a1*0.02;
}
count=Double.valueOf(df.format(count));
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));
......@@ -291,7 +258,6 @@ public class CopyrightBookServiceImpl implements CopyrightBookService {
Integer status=null;
List<BaseSettlement> baseSettlementList =new ArrayList<>();
if(copyrightId==null||copyrightId==0){
System.out.println(copyrightId);
baseSettlementList = copyrightDao.selectCopyrightById(UserUtil.getLoginUser().getId());
}else {
BaseSettlement baseSettlement = new BaseSettlement();
......
......@@ -25,10 +25,10 @@
<!--</select>-->
<select id="selectTableListMonth" resultType="com.boot.security.server.model.BaseSettlement" parameterType="com.boot.security.server.model.BaseSettlement">
SELECT report_date,copyright_id,copyright_name,total_amount as totalAmount,
IFNULL(total_ad_amount,0) totalAdvertAmount,jiesuan_status_name statusName,jiesuan_status status,release_status_name releaseStatusName,release_status releaseStatus
FROM bi_report.report_book_settlement_month_copyright a
WHERE a.report_date>='2020-04'
SELECT report_date,a.copyright_id,a.copyright_name,total_amount as totalAmount,
IFNULL(total_ad_amount,0) totalAdvertAmount,jiesuan_status_name statusName,jiesuan_status status,release_status_name releaseStatusName,release_status releaseStatus,b.type,b.type_name,b.context
FROM bi_report.report_book_settlement_month_copyright a,copyright_data.copyright_deduction b
WHERE a.report_date>='2020-04' and a.copyright_id=b.copyright_id
<if test="copyrightId != null">
and a.copyright_id in
<foreach collection="copyrightId" item="item" index="index" separator="," open="(" close=")">
......@@ -166,12 +166,12 @@
</insert>
<select id="selectBookDetail" resultType="com.boot.security.server.model.BaseSettlement" parameterType="java.util.List">
select report_date reportDate,copyright_id copyrightId,copyright_name copyrightName,book_id bookId,book_name bookName,authors,total_amount totalAmount,total_ad_amount totalAdvertAmount
from bi_report.report_books_settlement_month a
select report_date reportDate,a.copyright_id copyrightId,a.copyright_name copyrightName,book_id bookId,book_name bookName,authors,total_amount totalAmount,total_ad_amount totalAdvertAmount,b.type,b.type_name,b.context
from bi_report.report_books_settlement_month a,copyright_data.copyright_deduction b
WHERE
<![CDATA[
a.report_date>= '2020-04' and a.report_date <= #{endTime}
]]>
]]> and a.copyright_id=b.copyright_id
<if test="bookId != null and bookId!='' ">
and a.book_id = #{bookId}
</if>
......
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