|
@@ -7,6 +7,7 @@ import com.bz.smart_city.commom.util.UserUtil;
|
|
import com.bz.smart_city.dao.pay.PayReportMapper;
|
|
import com.bz.smart_city.dao.pay.PayReportMapper;
|
|
import com.bz.smart_city.dto.LoginUser;
|
|
import com.bz.smart_city.dto.LoginUser;
|
|
import com.bz.smart_city.dto.pay.*;
|
|
import com.bz.smart_city.dto.pay.*;
|
|
|
|
+import com.bz.smart_city.entity.pay.PayWaterPropertyReport;
|
|
import com.bz.smart_city.service.pay.PayAgenttransactionService;
|
|
import com.bz.smart_city.service.pay.PayAgenttransactionService;
|
|
import com.bz.smart_city.service.pay.PayReportService;
|
|
import com.bz.smart_city.service.pay.PayReportService;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
@@ -17,8 +18,11 @@ import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigInteger;
|
|
import java.math.BigInteger;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
import static com.google.common.collect.Lists.newArrayList;
|
|
import static com.google.common.collect.Lists.newArrayList;
|
|
@@ -181,6 +185,282 @@ public class PayReportServiceImpl implements PayReportService {
|
|
return pg;
|
|
return pg;
|
|
//return new Pagination<>(reList);
|
|
//return new Pagination<>(reList);
|
|
}
|
|
}
|
|
|
|
+ /**
|
|
|
|
+ * 用水性质销售报表
|
|
|
|
+ * @param payWaterPropertyReport
|
|
|
|
+ * @param pageNum
|
|
|
|
+ * @param pageSize
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public Pagination<PayWaterPropertyReportDto> getWaterPropertySaleReport(PayWaterPropertyReport payWaterPropertyReport, int pageNum, int pageSize)
|
|
|
|
+ {
|
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
|
+ BigInteger customerId = new BigInteger(String.valueOf(loginUser.getCustomerId()));
|
|
|
|
+ payWaterPropertyReport.setCustomerId(customerId);
|
|
|
|
+ BigInteger siteId = new BigInteger(String.valueOf(loginUser.getSiteId()));
|
|
|
|
+ payWaterPropertyReport.setSiteId(siteId);
|
|
|
|
+
|
|
|
|
+ Pagination<PayWaterPropertyReportDto> pg = new Pagination<>();
|
|
|
|
+ //组装账户交易明细+实收记录
|
|
|
|
+ List<PayWaterPropertyReportDto> list = new ArrayList<PayWaterPropertyReportDto>();
|
|
|
|
+ //获取账户交易明细记录
|
|
|
|
+ List<PayWaterPropertyReportDto> tList = payReportMapper.getTranInfoReport(payWaterPropertyReport);
|
|
|
|
+ //获取实收记录
|
|
|
|
+ List<PayWaterPropertyReportDto> rList = payReportMapper.getReceviceInfoReport(payWaterPropertyReport);
|
|
|
|
+ if(tList != null && tList.size() > 0){
|
|
|
|
+ //遍历交易明细
|
|
|
|
+ for(int i=0; i < tList.size(); i++){
|
|
|
|
+ if(rList != null && rList.size() > 0){
|
|
|
|
+ //遍历实收
|
|
|
|
+ Iterator<PayWaterPropertyReportDto> it = rList.iterator();
|
|
|
|
+ while (it.hasNext()){
|
|
|
|
+ //实收+交易明细 = 总额
|
|
|
|
+ //排除预存抵扣(payway!=5),交易状态=入账(state=1),是否作废=否(iscanceled=0)
|
|
|
|
+ PayWaterPropertyReportDto dt = it.next();
|
|
|
|
+ if(tList.get(i).getWaterpropertyId().equals(dt.getWaterpropertyId())){
|
|
|
|
+ //购水次数
|
|
|
|
+ tList.get(i).setFrequency(tList.get(i).getFrequency() + dt.getFrequency());
|
|
|
|
+ //购水金额
|
|
|
|
+ tList.get(i).setReceivedamount(tList.get(i).getReceivedamount().add(dt.getReceivedamount()));
|
|
|
|
+ //购水量
|
|
|
|
+ tList.get(i).setAmount(tList.get(i).getAmount() + dt.getAmount());
|
|
|
|
+ //水费
|
|
|
|
+ tList.get(i).setSfee(dt.getSfee());
|
|
|
|
+ //污水费
|
|
|
|
+ tList.get(i).setWsfee(dt.getWsfee());
|
|
|
|
+ //源水费
|
|
|
|
+ tList.get(i).setYsfee("0.000");
|
|
|
|
+ //附加费
|
|
|
|
+ tList.get(i).setFjfee("0.000");
|
|
|
|
+ //已经取值过的可以移除
|
|
|
|
+ it.remove();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ list.addAll(tList);
|
|
|
|
+ //组装汇总记录
|
|
|
|
+ if(tList != null && tList.size() >0){
|
|
|
|
+ Integer frequency = 0;//购水次数
|
|
|
|
+ Integer amount = 0; //购水量
|
|
|
|
+ BigDecimal df = new BigDecimal("0.000");
|
|
|
|
+ BigDecimal sfee = df;//水费
|
|
|
|
+ BigDecimal wsfee = sfee;//污水费
|
|
|
|
+ String ysfee = "0.000";//源水费
|
|
|
|
+ String fjfee = "0.000";//附加费
|
|
|
|
+ BigDecimal receivedamount = df;//购水金额
|
|
|
|
+ for(PayWaterPropertyReportDto dto : tList){
|
|
|
|
+ frequency = frequency + dto.getFrequency();
|
|
|
|
+ amount = amount + dto.getAmount();
|
|
|
|
+ sfee = sfee.add(dto.getSfee());
|
|
|
|
+ wsfee = wsfee.add(dto.getWsfee());
|
|
|
|
+ receivedamount = receivedamount.add(dto.getReceivedamount());
|
|
|
|
+ }
|
|
|
|
+ PayWaterPropertyReportDto dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("购水合计");
|
|
|
|
+ dto.setFrequency(frequency);
|
|
|
|
+ dto.setAmount(amount);
|
|
|
|
+ dto.setSfee(sfee);
|
|
|
|
+ dto.setWsfee(wsfee);
|
|
|
|
+ dto.setYsfee(ysfee);
|
|
|
|
+ dto.setFjfee(fjfee);
|
|
|
|
+ dto.setReceivedamount(receivedamount);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("赠水合计");
|
|
|
|
+ dto.setFrequency(0);
|
|
|
|
+ dto.setAmount(0);
|
|
|
|
+ dto.setSfee(df);
|
|
|
|
+ dto.setWsfee(df);
|
|
|
|
+ dto.setYsfee("0.000");
|
|
|
|
+ dto.setFjfee("0.000");
|
|
|
|
+ dto.setReceivedamount(df);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("总计");
|
|
|
|
+ dto.setFrequency(frequency);
|
|
|
|
+ dto.setAmount(amount);
|
|
|
|
+ dto.setSfee(sfee);
|
|
|
|
+ dto.setWsfee(wsfee);
|
|
|
|
+ dto.setYsfee(ysfee);
|
|
|
|
+ dto.setFjfee(fjfee);
|
|
|
|
+ dto.setReceivedamount(receivedamount);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ }
|
|
|
|
+ pg.setTotal(list.size());
|
|
|
|
+ pg.setList(list);
|
|
|
|
+ return pg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 用水性质销售报表导出
|
|
|
|
+ * @param payWaterPropertyReport
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void WaterPropertySaleExcel(PayWaterPropertyReport payWaterPropertyReport, HttpServletResponse httpServletResponse){
|
|
|
|
+
|
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
|
+ BigInteger customerId = new BigInteger(String.valueOf(loginUser.getCustomerId()));
|
|
|
|
+ payWaterPropertyReport.setCustomerId(customerId);
|
|
|
|
+ BigInteger siteId = new BigInteger(String.valueOf(loginUser.getSiteId()));
|
|
|
|
+ payWaterPropertyReport.setSiteId(siteId);
|
|
|
|
+
|
|
|
|
+ String title = "用水性质销售报表";//表头名称
|
|
|
|
+ DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ //列名
|
|
|
|
+ String[] rowsName = new String[]{"序号","用水性质编号","购水次数","购水量(吨)","定额水费(元)","排污费(元)","源水费(元)","附加费(元)","购水金额(元)"};
|
|
|
|
+ //组装账户交易明细+实收记录
|
|
|
|
+ List<PayWaterPropertyReportDto> list = new ArrayList<PayWaterPropertyReportDto>();
|
|
|
|
+ //获取账户交易明细记录
|
|
|
|
+ List<PayWaterPropertyReportDto> tList = payReportMapper.getTranInfoReport(payWaterPropertyReport);
|
|
|
|
+ //获取实收记录
|
|
|
|
+ List<PayWaterPropertyReportDto> rList = payReportMapper.getReceviceInfoReport(payWaterPropertyReport);
|
|
|
|
+ if(tList != null && tList.size() > 0){
|
|
|
|
+ //遍历交易明细
|
|
|
|
+ for(int i=0; i < tList.size(); i++){
|
|
|
|
+ if(rList != null && rList.size() > 0){
|
|
|
|
+ //遍历实收
|
|
|
|
+ Iterator<PayWaterPropertyReportDto> it = rList.iterator();
|
|
|
|
+ while (it.hasNext()){
|
|
|
|
+ //实收+交易明细 = 总额
|
|
|
|
+ //排除预存抵扣(payway!=5),交易状态=入账(state=1),是否作废=否(iscanceled=0)
|
|
|
|
+ PayWaterPropertyReportDto dt = it.next();
|
|
|
|
+ if(tList.get(i).getWaterpropertyId().equals(dt.getWaterpropertyId())){
|
|
|
|
+ //购水次数
|
|
|
|
+ tList.get(i).setFrequency(tList.get(i).getFrequency() + dt.getFrequency());
|
|
|
|
+ //购水金额
|
|
|
|
+ tList.get(i).setReceivedamount(tList.get(i).getReceivedamount().add(dt.getReceivedamount()));
|
|
|
|
+ //购水量
|
|
|
|
+ tList.get(i).setAmount(tList.get(i).getAmount() + dt.getAmount());
|
|
|
|
+ //水费
|
|
|
|
+ tList.get(i).setSfee(dt.getSfee());
|
|
|
|
+ //污水费
|
|
|
|
+ tList.get(i).setWsfee(dt.getWsfee());
|
|
|
|
+ //源水费
|
|
|
|
+ tList.get(i).setYsfee("0.000");
|
|
|
|
+ //附加费
|
|
|
|
+ tList.get(i).setFjfee("0.000");
|
|
|
|
+ //已经取值过的可以移除
|
|
|
|
+ it.remove();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ list.addAll(tList);
|
|
|
|
+ //组装汇总记录
|
|
|
|
+ if(tList != null && tList.size() >0){
|
|
|
|
+ Integer frequency = 0;//购水次数
|
|
|
|
+ Integer amount = 0; //购水量
|
|
|
|
+ BigDecimal db = new BigDecimal("0.000");
|
|
|
|
+ BigDecimal sfee = db;//水费
|
|
|
|
+ BigDecimal wsfee = sfee;//污水费
|
|
|
|
+ String ysfee = "0.000";//源水费
|
|
|
|
+ String fjfee = "0.000";//附加费
|
|
|
|
+ BigDecimal receivedamount = db;//购水金额
|
|
|
|
+ for(PayWaterPropertyReportDto dto : tList){
|
|
|
|
+ frequency = frequency + dto.getFrequency();
|
|
|
|
+ amount = amount + dto.getAmount();
|
|
|
|
+ sfee = sfee.add(dto.getSfee());
|
|
|
|
+ wsfee = wsfee.add(dto.getWsfee());
|
|
|
|
+ receivedamount = receivedamount.add(dto.getReceivedamount());
|
|
|
|
+ }
|
|
|
|
+ PayWaterPropertyReportDto dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("购水合计");
|
|
|
|
+ dto.setFrequency(frequency);
|
|
|
|
+ dto.setAmount(amount);
|
|
|
|
+ dto.setSfee(sfee);
|
|
|
|
+ dto.setWsfee(wsfee);
|
|
|
|
+ dto.setYsfee(ysfee);
|
|
|
|
+ dto.setFjfee(fjfee);
|
|
|
|
+ dto.setReceivedamount(receivedamount);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("赠水合计");
|
|
|
|
+ dto.setFrequency(0);
|
|
|
|
+ dto.setAmount(0);
|
|
|
|
+ dto.setSfee(db);
|
|
|
|
+ dto.setWsfee(db);
|
|
|
|
+ dto.setYsfee("0.000");
|
|
|
|
+ dto.setFjfee("0.000");
|
|
|
|
+ dto.setReceivedamount(db);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ dto = new PayWaterPropertyReportDto();
|
|
|
|
+ dto.setWaterpropertyName("总计");
|
|
|
|
+ dto.setFrequency(frequency);
|
|
|
|
+ dto.setAmount(amount);
|
|
|
|
+ dto.setSfee(sfee);
|
|
|
|
+ dto.setWsfee(wsfee);
|
|
|
|
+ dto.setYsfee(ysfee);
|
|
|
|
+ dto.setFjfee(fjfee);
|
|
|
|
+ dto.setReceivedamount(receivedamount);
|
|
|
|
+ list.add(dto);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Object[]> dataList = newArrayList();
|
|
|
|
+ Object[] objs = null;
|
|
|
|
+ BigDecimal db = new BigDecimal("0.0");
|
|
|
|
+ for(int i=0; i<list.size() ; i++){
|
|
|
|
+ PayWaterPropertyReportDto dto = list.get(i);
|
|
|
|
+ objs = new Object[rowsName.length];
|
|
|
|
+ objs[0] = i;
|
|
|
|
+ objs[1] = dto != null && StringUtils.isNotBlank(dto.getWaterpropertyName()) ? dto.getWaterpropertyName() : "";//用水性质编号
|
|
|
|
+ objs[2] = dto != null && dto.getFrequency() != null ? dto.getFrequency() : 0;//购水次数
|
|
|
|
+ objs[3] = dto != null && dto.getAmount() != null ? dto.getAmount() : 0;//购水量
|
|
|
|
+ objs[4] = dto != null && dto.getSfee() != null ? dto.getSfee() : db;//水费
|
|
|
|
+ objs[5] = dto != null && dto.getWsfee() != null ? dto.getWsfee() : db;//污水处理费
|
|
|
|
+ objs[6] = "0.000";//源水费
|
|
|
|
+ objs[7] = "0.000";//附加费
|
|
|
|
+ objs[8] = dto != null && dto.getReceivedamount() != null ? dto.getReceivedamount() : db;//购水金额
|
|
|
|
+ dataList.add(objs);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String message="";
|
|
|
|
+ List<String> eList = new ArrayList<String>();
|
|
|
|
+ if(StringUtils.isNoneBlank(payWaterPropertyReport.getWatercategoryName())){
|
|
|
|
+ message = message + "用水类型:"+payWaterPropertyReport.getWatercategoryName();
|
|
|
|
+ }else{
|
|
|
|
+ message = message + "用水类型:(全部冷热水)";
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isNotBlank(payWaterPropertyReport.getWaterpropertyName())){
|
|
|
|
+ message = message + " 用水性质所属类别:"+payWaterPropertyReport.getWaterpropertyName();
|
|
|
|
+ }else{
|
|
|
|
+ message = message + " 用水性质所属类别:全部类别";
|
|
|
|
+ }
|
|
|
|
+ //第一行
|
|
|
|
+ eList.add(message);
|
|
|
|
+ message="";
|
|
|
|
+
|
|
|
|
+ if(StringUtils.isNotBlank(payWaterPropertyReport.getOfficeName())){
|
|
|
|
+ message = message + "销售网点:"+payWaterPropertyReport.getOfficeName();
|
|
|
|
+ }else{
|
|
|
|
+ message = message + "销售网点:全部网点";
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isNotBlank(payWaterPropertyReport.getUserName())){
|
|
|
|
+ message = message + " 操作员:"+payWaterPropertyReport.getOfficeName();
|
|
|
|
+ }else{
|
|
|
|
+ message = message + " 操作员:全部操作员";
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isNotBlank(payWaterPropertyReport.getStartDate())){
|
|
|
|
+ message = message + " 统计日期:"+payWaterPropertyReport.getStartDate();
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.isNotBlank(payWaterPropertyReport.getEndDate())){
|
|
|
|
+ message = message + " 至 "+payWaterPropertyReport.getEndDate();
|
|
|
|
+ }
|
|
|
|
+ message = message + " 列印日期:"+new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
|
|
|
+ eList.add(message);
|
|
|
|
+
|
|
|
|
+ ExcelUtil excelUtil = new ExcelUtil(title, rowsName, dataList,eList);
|
|
|
|
+ try {
|
|
|
|
+ excelUtil.export(httpServletResponse);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new ServiceException(-900, "导出异常");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 导出用户欠费明细表
|
|
* 导出用户欠费明细表
|
|
@@ -259,6 +539,7 @@ public class PayReportServiceImpl implements PayReportService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 导出操作员明细表
|
|
* 导出操作员明细表
|
|
* @param payOperatordetailsReportDto
|
|
* @param payOperatordetailsReportDto
|