emis-api-service/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java

256 lines
9.7 KiB
Java
Raw Normal View History

2024-08-31 08:06:41 +00:00
/**
* @Project: emis
* @Title: EmisSettleBillController.java
* @author linfso
* @date 2024-07-03 18:54:51
* @Copyright: ShangHai Duta 2022 All rights reserved.
* @version v1.0
* @Description: <p> 结算总账单 控制器 </p>
*/
package com.xdadan.erp.apiweb;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.util.MapUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.fastjson.JSON;
import com.xdadan.erp.common.annotation.Log;
import com.xdadan.erp.common.core.controller.BaseController;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.page.TableDataInfo;
import com.xdadan.erp.common.enums.BusinessType;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.DictUtils;
import com.xdadan.erp.common.utils.poi.ExcelUtil;
import com.xdadan.erp.emis.domain.EmisSettleBill;
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.service.EmisBaseService;
2024-08-31 14:18:57 +00:00
import com.xdadan.erp.emis.service.IEmisSettleBillPayLogService;
2024-08-31 08:06:41 +00:00
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
2025-07-08 07:44:53 +00:00
import java.time.LocalDate;
2024-08-31 08:06:41 +00:00
import java.util.*;
/**
* 结算总账单Controller
*
* @author linfso
* @date 2024-07-03 18:54:51
*/
@RestController
@RequestMapping("/apiweb/emisSettleBill")
public class SettleBillController extends BaseController
{
@Autowired
private IEmisSettleBillService emisSettleBillService;
2024-08-31 14:18:57 +00:00
@Autowired
private IEmisSettleBillPayLogService emisSettleBillPayLogService;
2024-08-31 08:06:41 +00:00
@Autowired
private EmisBaseService emisBaseService;
/**
* 查询结算总账单列表
*/
@GetMapping("/listSimple")
public TableDataInfo listSimple(EmisSettleBill emisSettleBill)
{
startPage();
setPrivParams(emisSettleBill);
String billCodeStr = MapUtil.getStr(emisSettleBill.getParams(),"billCode");
if(!StringUtils.isEmpty(billCodeStr)){
emisSettleBill.getParams().put("billCode", WaybillHelper.formatQueryValue(billCodeStr));
String[] billCodeSortList = billCodeStr.split(",");
if(billCodeSortList.length>1){
emisSettleBill.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList));
}
}
if(!StringUtils.isEmpty(emisSettleBill.getSettleBillNo())){
emisSettleBill.setSettleBillNo(WaybillHelper.formatQueryValue(emisSettleBill.getSettleBillNo()));
String[] settleBillNoSortList = emisSettleBill.getSettleBillNo().split(",");
if(settleBillNoSortList.length>1){
emisSettleBill.getParams().put("settleBillNoSortList",Arrays.asList(settleBillNoSortList));
}
}
2025-07-08 07:44:53 +00:00
// 如果查询已支付的账单,则只查询3个月内的账单
if("1".equals(emisSettleBill.getPaymentStatus())){
// 起始时间
Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.MONTH, -3);
Date startDate = startCalendar.getTime();
emisSettleBill.getParams().put("beginCreateTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,startDate));
// 结束时间
Calendar calendarEnd = Calendar.getInstance();
calendarEnd.set(Calendar.DAY_OF_MONTH, calendarEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
Date endDate = calendarEnd.getTime();
emisSettleBill.getParams().put("endCreateTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,endDate)+" 23:59:59");
}
2024-08-31 08:06:41 +00:00
List<EmisSettleBill> list = emisSettleBillService.selectEmisSettleBillList(emisSettleBill);
return getDataTable(list);
}
/**
* 获取结算总账单详细信息
*/
// @PreAuthorize("@ss.hasPermi('emis:emisSettleBill:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(emisSettleBillService.selectEmisSettleBillById(id));
}
2025-07-08 07:44:53 +00:00
/**
* 获取结算总账单详细信息
*/
@GetMapping(value = "/getSimpleInfoBySettleBillNo")
public AjaxResult getSimpleInfoBySettleBillNo(String settleBillNo)
{
EmisSettleBill emisSettleBill=emisBaseService.getSettleBillBySettleBillNo(settleBillNo);
BigDecimal thisPayMoney=emisSettleBill.getRecMoney().subtract(emisSettleBill.getRecedMoney());
emisSettleBill.setThisPayMoney(thisPayMoney);
// subBillList , 返回子账单列表
// List<EmisSettleSubBill> subBillList=emisBaseService.selectSubBillListBySettleBillNo(settleBillNo);
// emisSettleBill.setSubBillList(subBillList);
try {
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
emisSettleBill.setBlLockOnlinePay("F");
}else{
emisSettleBill.setBlLockOnlinePay("T");
emisSettleBill.setLockOnlinePayReason("该单不支持在线支付");
}
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
emisSettleBill.setBlLockOnlinePay("T");
emisSettleBill.setLockOnlinePayReason("该单不支持在线支付:"+emisBizError.getMessage());
}
return AjaxResult.success("成功",emisSettleBill);
}
2025-06-19 10:56:05 +00:00
2024-08-31 08:06:41 +00:00
/**
* 获取结算总账单详细信息
*/
@GetMapping(value = "/getInfoBySettleBillNo")
public AjaxResult getInfoBySettleBillNo(String settleBillNo)
{
2024-08-31 10:09:06 +00:00
EmisSettleBill emisSettleBill=emisBaseService.getSettleBillBySettleBillNo(settleBillNo);
2024-08-31 14:22:51 +00:00
BigDecimal thisPayMoney=emisSettleBill.getRecMoney().subtract(emisSettleBill.getRecedMoney());
emisSettleBill.setThisPayMoney(thisPayMoney);
2024-08-31 14:57:44 +00:00
// subBillList , 返回子账单列表
List<EmisSettleSubBill> subBillList=emisBaseService.selectSubBillListBySettleBillNo(settleBillNo);
emisSettleBill.setSubBillList(subBillList);
2025-06-24 19:35:22 +00:00
try {
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
emisSettleBill.setBlLockOnlinePay("F");
}else{
emisSettleBill.setBlLockOnlinePay("T");
emisSettleBill.setLockOnlinePayReason("该单不支持在线支付");
}
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
emisSettleBill.setBlLockOnlinePay("T");
emisSettleBill.setLockOnlinePayReason("该单不支持在线支付:"+emisBizError.getMessage());
}
2024-08-31 10:09:06 +00:00
return AjaxResult.success("成功",emisSettleBill);
2024-08-31 08:06:41 +00:00
}
2025-06-24 19:35:22 +00:00
@GetMapping(value = "/checkCanOnlinePay")
2025-06-24 19:48:04 +00:00
public AjaxResult checkCanOnlinePay(String settleBillNo)
2025-06-24 19:35:22 +00:00
{
2025-06-24 19:48:04 +00:00
EmisSettleBill emisSettleBill=new EmisSettleBill();
emisSettleBill.setSettleBillNo(settleBillNo);
2025-06-24 19:35:22 +00:00
try {
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
return AjaxResult.success("支持在线支付", isCanPay);
}else{
return AjaxResult.error("不支持在线支付", isCanPay);
}
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
return AjaxResult.error(emisBizError.getMessage());
}
}
2024-08-31 10:52:36 +00:00
@GetMapping(value = "/getWxPayQrCode")
public AjaxResult getWxPayQrCode(EmisSettleBill emisSettleBill)
{
2024-08-31 14:18:57 +00:00
try {
2025-06-24 19:35:22 +00:00
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
2025-06-24 19:44:50 +00:00
String qrPicUrl=emisSettleBillPayLogService.genWxPayQR(emisSettleBill.getSettleBillNo());
return AjaxResult.success("成功",qrPicUrl);
2025-06-24 19:35:22 +00:00
}else{
return AjaxResult.error("不支持在线支付", isCanPay);
}
2024-08-31 14:18:57 +00:00
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
return AjaxResult.error(emisBizError.getMessage());
}
2024-08-31 10:52:36 +00:00
}
@PostMapping(value = "/sumbitWxPay")
public AjaxResult sumbitWxPay(@RequestBody EmisSettleBill emisSettleBill)
{
2025-06-19 10:56:05 +00:00
// String customerCode=emisSettleBill.getCustomerCode();
// emisSettleBill.setCustomerCode(customerCode);
try {
2025-06-24 19:35:22 +00:00
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
2025-06-24 19:44:50 +00:00
Map<String,String> payObj=emisSettleBillPayLogService.genWxPayFromWxApp(emisSettleBill.getSettleBillNo(),emisSettleBill.getAppId(),emisSettleBill.getOpenId());
return AjaxResult.success("成功",payObj);
2025-06-24 19:35:22 +00:00
}else{
return AjaxResult.error("不支持在线支付", isCanPay);
}
2025-06-19 10:56:05 +00:00
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
return AjaxResult.error(emisBizError.getMessage());
}
2024-08-31 10:52:36 +00:00
}
2024-08-31 08:06:41 +00:00
}