package com.szwl.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.szwl.constant.ResponseCodesEnum; import com.szwl.model.bo.R; import com.szwl.model.bo.ResponseModel; import com.szwl.model.entity.*; import com.szwl.model.excel.ShandeMchCompanyListTarget; import com.szwl.model.excel.ShandeMchListTarget; import com.szwl.service.TAdminService; import com.szwl.service.TShandeMchCheckService; import com.szwl.service.TShandeMchService; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** *

* 杉德支付收款信息 前端控制器 *

* * @author wuhs * @since 2022-04-29 */ @RestController @RequestMapping("/tShandeMch") public class TShandeMchController { @Autowired TShandeMchCheckService tShandeMchCheckService; @Autowired TShandeMchService tShandeMchService; @Autowired TAdminService adminService; @ApiOperation(value = "查找杉德收款账户信息") @GetMapping("/getOne") public ResponseModel getOne(String adminId) { TAdmin admin = adminService.getById(adminId); LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TShandeMch::getAdminId,adminId); List list = tShandeMchService.list(query); if(list.size()>0){ return R.ok(list.get(0)); }else { return R.fail("尚未注册!"); } } @ApiOperation(value = "获取杉德分账信息列表 分页") @GetMapping("/pageShandeMch") public ResponseModel> pageShandeMch(String username, String type, long current, long size ){ LambdaQueryWrapper query = Wrappers.lambdaQuery(); if(StringUtils.isNotEmpty(type)){ query.eq(TShandeMch::getType,type); }else { query.eq(TShandeMch::getType,"0"); } if(StringUtils.isNotEmpty(username)){ LambdaQueryWrapper query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,username); List list = adminService.list(query1); if(list.size()>0){ query.eq(TShandeMch::getAdminId,list.get(0).getId()); } } Page page = new Page<>(current, size, true); IPage iPage = tShandeMchService.page(page, query); return R.ok(iPage); } @ApiOperation(value = "保存或提交审核") @PostMapping("/save") public ResponseModel save(@RequestBody TShandeMch tShandeMch) { TAdmin admin = adminService.getById(tShandeMch.getAdminId()); LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TShandeMch::getAdminId,tShandeMch.getAdminId()); List list = tShandeMchService.list(query); if(list.size()>0){ //已有,属于第二次提交信息,需要审核 TShandeMch oldShandeMch = list.get(0); int i = 0; if(!oldShandeMch.getType().equals(tShandeMch.getType())){ i++; } if(!oldShandeMch.getBankName().equals(tShandeMch.getBankName())){ i++; } if(!oldShandeMch.getBankNo().equals(tShandeMch.getBankNo())){ i++; } if(i>0){ TShandeMchCheck shandeMchCheck = new TShandeMchCheck(); shandeMchCheck.setType(tShandeMch.getType()); shandeMchCheck.setCreateDate(new Date()); shandeMchCheck.setModifyDate(new Date()); shandeMchCheck.setAdminId(oldShandeMch.getAdminId()); shandeMchCheck.setCheckType("0"); shandeMchCheck.setBankName(tShandeMch.getBankName()); shandeMchCheck.setBankNo(tShandeMch.getBankNo()); shandeMchCheck.setSettleableBalance(oldShandeMch.getSettleableBalance()); shandeMchCheck.setTodayBalance(oldShandeMch.getTodayBalance()); if(tShandeMch.getType().equals("0")){ if(StringUtils.isEmpty(tShandeMch.getBankChannelName())||StringUtils.isEmpty(tShandeMch.getBankChannelNo())){ R.fail("信息有空!"); } shandeMchCheck.setBankChannelNo(tShandeMch.getBankChannelNo()); shandeMchCheck.setBankChannelName(tShandeMch.getBankChannelName()); } tShandeMchCheckService.save(shandeMchCheck); } return R.ok(list.get(0)); }else { //没有,直接保存 tShandeMch.setSettleableBalance(BigDecimal.valueOf(0.00)); tShandeMch.setTodayBalance(BigDecimal.valueOf(0.00)); tShandeMch.setTotalSettleableBalance(BigDecimal.valueOf(0.00)); tShandeMch.setCreateDate(new Date()); tShandeMch.setModifyDate(new Date()); tShandeMchService.save(tShandeMch); return R.ok(); } } @ApiOperation(value = "查找杉德收款账户信息") @GetMapping("/getShandeMch") public ResponseModel getShandeMch(@RequestParam String adminId) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TShandeMch::getAdminId,adminId); List list = tShandeMchService.list(query); TShandeMch shandeMch = list.get(0); return R.ok(shandeMch); } @ApiOperation(value = "结算处理") @GetMapping("/jiesuan") public ResponseModel jiesuan(String username, String type, String namelist) { if(StringUtils.isEmpty(type)){ return R.fail(ResponseCodesEnum.A0100); } LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TShandeMch::getType,type); if(StringUtils.isNotEmpty(username)){ LambdaQueryWrapper query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,username); List list = adminService.list(query1); if(list.size()>0){ query.eq(TShandeMch::getAdminId,list.get(0).getId()); } } if(StringUtils.isNotEmpty(namelist)){ String[] names = namelist.split(","); List ids = new ArrayList<>(); if(names.length>0){ for(int i=0;i query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,username); List list = adminService.list(query1); if(list.size()>0){ ids.add(list.get(0).getId()); } } } if(ids.size()>0){ query.notIn(TShandeMch::getAdminId,ids); } } List list = tShandeMchService.list(query); for(TShandeMch shandeMch:list){ BigDecimal settleableBalance = shandeMch.getSettleableBalance(); if(settleableBalance!=null&&settleableBalance.compareTo(new BigDecimal(0))>0){ shandeMch.setSettleableDate(new Date()); BigDecimal totalSettleableBalance = shandeMch.getTotalSettleableBalance(); if(totalSettleableBalance!=null){ shandeMch.setTotalSettleableBalance(settleableBalance.add(totalSettleableBalance)); }else { shandeMch.setTotalSettleableBalance(settleableBalance); } shandeMch.setSettleableBalance(new BigDecimal(0)); shandeMch.setLastSettleableBalance(settleableBalance); tShandeMchService.updateById(shandeMch); } } return R.ok(); } @ApiOperation(value = "ClientId查找设备") @GetMapping("/updateShandeMch") public void updateShandeMch(@RequestBody TShandeMch shandeMch) { if(shandeMch!=null){ shandeMch.setModifyDate(new Date()); tShandeMchService.updateById(shandeMch); } } @ApiOperation(value = "结算处理") @GetMapping("/shandeMchListExport") public ResponseModel shandeMchListExport(HttpServletResponse response, String username, String type, String namelist) { if(StringUtils.isEmpty(type)){ return R.fail(ResponseCodesEnum.A0100); } LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TShandeMch::getType,type); if(StringUtils.isNotEmpty(username)){ LambdaQueryWrapper query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,username); List list = adminService.list(query1); if(list.size()>0){ query.eq(TShandeMch::getAdminId,list.get(0).getId()); } } if(StringUtils.isNotEmpty(namelist)){ String[] names = namelist.split(","); List ids = new ArrayList<>(); if(names.length>0){ for(int i=0;i query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,username); List list = adminService.list(query1); if(list.size()>0){ ids.add(list.get(0).getId()); } } } if(ids.size()>0){ query.notIn(TShandeMch::getAdminId,ids); } } List list = tShandeMchService.list(query); ExportParams exportParams = new ExportParams(null, "sheet1"); Workbook workbook = null; //账号类型 0:对公 1:私人 if(type.equals("0")){ List shandeMchCompanyListTargets = new ArrayList<>(); int i = 0; for(TShandeMch shandeMch: list){ BigDecimal settleableBalance = shandeMch.getSettleableBalance(); if(settleableBalance.compareTo(new BigDecimal(0))== 1){ i++; ShandeMchCompanyListTarget shandeMchCompanyListTarget = new ShandeMchCompanyListTarget(); shandeMchCompanyListTarget.setBankName(shandeMch.getBankName()); shandeMchCompanyListTarget.setBankNo(shandeMch.getBankNo()); shandeMchCompanyListTarget.setSettleableBalance(String.valueOf(shandeMch.getSettleableBalance())); shandeMchCompanyListTarget.setNo(String.valueOf(i)); shandeMchCompanyListTarget.setBankChannelName(shandeMch.getBankChannelName()); shandeMchCompanyListTarget.setBankChannelNo(shandeMch.getBankChannelNo()); shandeMchCompanyListTargets.add(shandeMchCompanyListTarget); } } workbook = ExcelExportUtil.exportExcel(exportParams, ShandeMchCompanyListTarget.class, shandeMchCompanyListTargets); } if(type.equals("1")){ List shandeMchListTargetList = new ArrayList<>(); int i = 0; for(TShandeMch shandeMch: list){ BigDecimal settleableBalance = shandeMch.getSettleableBalance(); if(settleableBalance.compareTo(new BigDecimal(0))== 1){ i++; ShandeMchListTarget shandeMchListTarget = new ShandeMchListTarget(); shandeMchListTarget.setBankName(shandeMch.getBankName()); shandeMchListTarget.setBankNo(shandeMch.getBankNo()); shandeMchListTarget.setSettleableBalance(String.valueOf(shandeMch.getSettleableBalance())); shandeMchListTarget.setNo(String.valueOf(i)); shandeMchListTargetList.add(shandeMchListTarget); } } workbook = ExcelExportUtil.exportExcel(exportParams, ShandeMchListTarget.class, shandeMchListTargetList); } if (workbook != null) { OutputStream os = null; try { os = response.getOutputStream(); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日HHmmss"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); if(type.equals("0")){ response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("对公账户" + format.format(new Date()) + ".xls", "UTF-8")); }else { response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("个人账号" + format.format(new Date()) + ".xls", "UTF-8")); } // response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8")); workbook.write(os); return R.ok("导出成功"); } catch (Exception e) { e.printStackTrace(); return R.fail("导出错误"); } finally { try { os.close(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } } } return R.ok(); } }