/** * @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:

结算总账单 控制器

*/ 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 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 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 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 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 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()); } } }