Commit 79fefcae authored by maliang's avatar maliang

上传bug修复

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