emis-api-service/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java
2025-07-08 16:25:26 +08:00

277 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @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;
import com.xdadan.erp.emis.service.IEmisSettleBillPayLogService;
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import com.xdadan.erp.emis.service.IEmisSettleSubBillService;
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;
import java.time.LocalDate;
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;
@Autowired
private IEmisSettleSubBillService emisSettleSubBillService;
@Autowired
private IEmisSettleBillPayLogService emisSettleBillPayLogService;
@Autowired
private EmisBaseService emisBaseService;
/**
* 查询结算总账单列表
*/
@GetMapping("/listSimple")
public TableDataInfo listSimple(EmisSettleBill emisSettleBill)
{
startPage();
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));
}
}
// 如果查询已支付的账单,则只查询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");
}
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));
}
/**
* 获取结算总账单详细信息
*/
@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);
}
/**
* 查询结算子账单列表-listSimple
*/
@GetMapping("/listSubBill")
public TableDataInfo listSubBill(EmisSettleSubBill emisSettleSubBill)
{
startPage();
if(!StringUtils.isEmpty(emisSettleSubBill.getBillCode())){
emisSettleSubBill.setBillCode(WaybillHelper.formatQueryValue(emisSettleSubBill.getBillCode()));
String[] billCodeSortList = emisSettleSubBill.getBillCode().split(",");
if(billCodeSortList.length>1){
emisSettleSubBill.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList));
}
}
List<EmisSettleSubBill> list = emisSettleSubBillService.selectEmisSettleSubBillList(emisSettleSubBill);
return getDataTable(list);
}
/**
* 获取结算总账单详细信息
*/
@GetMapping(value = "/getInfoBySettleBillNo")
public AjaxResult getInfoBySettleBillNo(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);
}
@GetMapping(value = "/checkCanOnlinePay")
public AjaxResult checkCanOnlinePay(String settleBillNo)
{
EmisSettleBill emisSettleBill=new EmisSettleBill();
emisSettleBill.setSettleBillNo(settleBillNo);
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());
}
}
@GetMapping(value = "/getWxPayQrCode")
public AjaxResult getWxPayQrCode(EmisSettleBill emisSettleBill)
{
try {
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
String qrPicUrl=emisSettleBillPayLogService.genWxPayQR(emisSettleBill.getSettleBillNo());
return AjaxResult.success("成功",qrPicUrl);
}else{
return AjaxResult.error("不支持在线支付", isCanPay);
}
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
return AjaxResult.error(emisBizError.getMessage());
}
}
@PostMapping(value = "/sumbitWxPay")
public AjaxResult sumbitWxPay(@RequestBody EmisSettleBill emisSettleBill)
{
// String customerCode=emisSettleBill.getCustomerCode();
// emisSettleBill.setCustomerCode(customerCode);
try {
int isCanPay=emisSettleBillService.checkCanOnlinePay(emisSettleBill);
if(isCanPay==1) {
Map<String,String> payObj=emisSettleBillPayLogService.genWxPayFromWxApp(emisSettleBill.getSettleBillNo(),emisSettleBill.getAppId(),emisSettleBill.getOpenId());
return AjaxResult.success("成功",payObj);
}else{
return AjaxResult.error("不支持在线支付", isCanPay);
}
} catch (EmisBizError emisBizError) {
emisBizError.printStackTrace();
return AjaxResult.error(emisBizError.getMessage());
}
}
}