277 lines
11 KiB
Java
277 lines
11 KiB
Java
|
||
/**
|
||
* @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());
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|