master
kira 6 years ago
parent 74e059180d
commit 74835ee47d

@ -2,8 +2,6 @@ package au.com.royalpay.payment.manage.analysis.core;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.multipart.MultipartFile;
import java.text.ParseException;
public interface PlatformClearService {
@ -16,5 +14,5 @@ public interface PlatformClearService {
void generateSettleLogs();
void doVerifyHFSettleLog(MultipartFile file, String start, String end);
void doVerifyHFSettleLog(JSONObject param);
}

@ -8,6 +8,7 @@ import au.com.royalpay.payment.channels.wechat.runtime.beans.SettlementLog;
import au.com.royalpay.payment.manage.analysis.core.PlatformClearService;
import au.com.royalpay.payment.manage.analysis.mappers.EstimateAnalysisMapper;
import au.com.royalpay.payment.manage.mappers.log.PlatformSettlementMapper;
import au.com.royalpay.payment.tools.connections.attachment.core.AttachmentClient;
import au.com.royalpay.payment.tools.utils.PageListUtils;
import au.com.royalpay.payment.tools.utils.TimeZoneUtils;
@ -20,17 +21,17 @@ import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RequestMethod;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -43,6 +44,8 @@ import java.util.Map;
import javax.annotation.Resource;
import cn.yixblog.platform.http.HttpRequestGenerator;
@Service
public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
@ -58,6 +61,8 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
private PlatformSettlementMapper platformSettlementMapper;
@Resource
private EstimateAnalysisMapper estimateAnalysisMapper;
@Resource
private AttachmentClient attachmentClient;
@Override
public JSONObject getPlatformSettleLog(String channel, int page, int limit) {
@ -366,8 +371,11 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
}
@Override
public void doVerifyHFSettleLog(MultipartFile file, String start, String end) {
JSONObject hfSettle = handleHFSettleFile(file);
public void doVerifyHFSettleLog(JSONObject param) {
String end = param.getString("end");
String start = param.getString("start");
JSONObject hfSettle = handleHFSettleFile(param.getString("fileId"));
if (hfSettle == null) {
return;
}
@ -394,7 +402,7 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
List<JSONObject> check = null;
try {
check = platformSettlementMapper.findBySettleDate(DateUtils.parseDate(end, "YYYY-MM-dd"), "hf");
check = platformSettlementMapper.findBySettleDate(DateUtils.parseDate(end, "yyyy-MM-dd"), "hf");
} catch (ParseException e) {
e.printStackTrace();
}
@ -408,10 +416,11 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
}
private JSONObject handleHFSettleFile(MultipartFile file) {
private JSONObject handleHFSettleFile(String fileId) {
try {
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
XSSFSheet sheet = workbook.getSheetAt(0);
HttpRequestGenerator gen = new HttpRequestGenerator(attachmentClient.getFileUrl(fileId), RequestMethod.GET);
HSSFWorkbook workbook = new HSSFWorkbook(gen.execute().getResponseContentStream());
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.rowIterator();
Row row = null;
Cell cell = null;
@ -423,46 +432,38 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
BigDecimal clearingAmount = BigDecimal.ZERO;
while (rowIterator.hasNext()) {
row = rowIterator.next();
cell = row.getCell(14);
cell = row.getCell(0);
if (cell != null) {
continue;
}
cell = row.getCell(15);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
if (cell != null) {
String orderAmountStr = cell.getStringCellValue().trim();
if (StringUtils.isNotEmpty(orderAmountStr)) {
BigDecimal cellVar = new BigDecimal(orderAmountStr);
if (orderAmount.compareTo(cellVar) == 0) {
result.put("orderAmount", orderAmount);
} else {
orderAmount = orderAmount.add(cellVar);
}
result.put("orderAmount", new BigDecimal(orderAmountStr));
}
}
cell = row.getCell(15);
cell = row.getCell(16);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
if (cell != null) {
String surchargeStr = cell.getStringCellValue().trim();
if (StringUtils.isNotEmpty(surchargeStr)) {
BigDecimal cellVar = new BigDecimal(surchargeStr);
if (surcharge.compareTo(cellVar) == 0) {
result.put("orderAmount", surcharge);
} else {
surcharge = surcharge.add(cellVar);
}
result.put("surcharge", new BigDecimal(surchargeStr));
}
}
cell = row.getCell(16);
cell = row.getCell(17);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
if (cell != null) {
String clearingAmounStr = cell.getStringCellValue().trim();
if (StringUtils.isNotEmpty(clearingAmounStr)) {
BigDecimal cellVar = new BigDecimal(clearingAmounStr);
if (clearingAmount.compareTo(cellVar) == 0) {
result.put("clearingAmount", clearingAmount);
} else {
clearingAmount = clearingAmount.add(cellVar);
}
result.put("clearingAmount", new BigDecimal(clearingAmounStr));
}
}
return result;
}
return result;
} catch (IOException e) {
} catch (Exception e) {
logger.debug("处理汇付清算文件出错", e);
}
return null;
@ -474,13 +475,15 @@ public class PlatformClearAnalysisServiceImpl implements PlatformClearService {
JSONObject creditLogs = platformSettlementMapper.calculateSysSettleLog(start, end, "hf", "Credit", new BigDecimal(0.008));
result.put("sys_pay_fee", creditLogs.getBigDecimal("aud_amount"));
JSONObject debitLogs = platformSettlementMapper.calculateSysSettleLog(start, end, "hf", "Debit", new BigDecimal(0.008));
result.put("sys_surcharge", platformSettlementMapper.calculateRmbCharge(start, end, "hf", new BigDecimal(0.008)));
result.put("sys_refund_fee", debitLogs.getBigDecimal("aud_amount"));
result.put("sys_net_fee", creditLogs.getBigDecimal("aud_amount").subtract(debitLogs.getBigDecimal("aud_amount")));
result.put("sys_settle_fee", result.getBigDecimal("sys_net_fee").subtract(result.getBigDecimal("sys_surcharge")));
result.put("sys_surcharge", platformSettlementMapper.calculateRmbCharge(start, end, "hf", new BigDecimal(0.008)));
return result;
} catch (Exception ignore) {
ignore.printStackTrace();
}
return null;
}
}

@ -7,11 +7,11 @@ import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.text.ParseException;
@ -45,7 +45,7 @@ public class PlatformClearAController {
}
@ManagerMapping(value = "/generate/hf/settle", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.DEVELOPER})
public void generatehfSettleLogs(@RequestParam("file") MultipartFile settleFile,@RequestParam String start,@RequestParam String end) {
platformClearService.doVerifyHFSettleLog(settleFile,start,end);
public void generatehfSettleLogs(@RequestBody JSONObject param) {
platformClearService.doVerifyHFSettleLog(param);
}
}

@ -16,7 +16,7 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
});
}]);
app.controller('platformSettleLogCtrl', ['$scope', '$http', '$state','Upload','commonDialog', function ($scope, $http, $state,Upload, commonDialog) {
app.controller('platformSettleLogCtrl', ['$scope', '$http', '$state','$filter','Upload','commonDialog', function ($scope, $http, $state,$filter,Upload, commonDialog) {
$scope.wechatPagination = {};
$scope.loadWechatLogs = function (page) {
@ -106,21 +106,38 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
$scope.loadhfLogs(1);
$scope.uploadhfSettleFile = function (file) {
$scope.hfParam.file=file;
if(!$scope.hfParam.start){
if (file != null) {
Upload.upload({
url: '/attachment/secret_files',
data: {file: file}
}).then(function (resp) {
$scope.hfParam.fileId = resp.data.fileid;
commonDialog.alert({title: 'Upload Success', content:'', type: 'success'})
}, function (resp) {
}, function (evt) {
})
}
};
$scope.dohfSettle = function () {
var param = angular.copy($scope.hfParam);
if(!param.start){
alert("请先选择开始时间");
}
if(!$scope.hfParam.end){
if(!param.end){
alert("请先选择结束时间");
}
var param = angular.copy($scope.hfParam);
if (file != null) {
Upload.upload({
url: '/platform/analysis/generate/hf/settle',
data: param
});
if(!param.fileId){
alert("请先上传汇付清算文件");
}
};
param.start = $filter('date')(param.start, "yyyy-MM-dd");
param.end = $filter('date')(param.end, "yyyy-MM-dd");
$http.put('/platform/analysis/generate/hf/settle',param).then(function (resp) {
});
}
}]);
app.controller('platformRevenueRootCtrl', ['$scope', '$http', '$filter', 'chartParser', function ($scope, $http, $filter, chartParser) {

@ -280,15 +280,15 @@
<div style="display: inline-block">
<input class="form-control"
ng-model="hfParam.start"
uib-datepicker-popup size="10" placeholder="From"
uib-datepicker-popup size="10" placeholder="start"
is-open="start.open"
ng-click="start.open=true"
datepicker-options="{maxDate:hfParam.start||today}">
datepicker-options="{maxDate:hfParam.end}">
</div>
<div style="display: inline-block">
<input class="form-control"
ng-model="hfParam.end"
uib-datepicker-popup size="10" placeholder="From"
uib-datepicker-popup size="10" placeholder="end"
is-open="end.open"
ng-click="end.open=true"
datepicker-options="{maxDate:hfParam.end||today}">
@ -296,7 +296,12 @@
<button class="btn btn-primary" type="button"
ngf-select="uploadhfSettleFile($file)">
<i class="fa fa-upload"></i> Upload Courier Photo
<i class="fa fa-upload"></i> Upload Settle File
</button>
<button class="btn btn-primary" type="button"
ng-click="dohfSettle()">
<i class="fa fa-upload"></i> Do Settlement
</button>

Loading…
Cancel
Save