package com.jkcredit.invoice.controller.localBussiness; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jkcredit.invoice.annotation.LoginRequired; import com.jkcredit.invoice.mapper.waybill.NoCarWaybillMapper; import com.jkcredit.invoice.model.entity.Calculate.NoCarCalculateInfor; import com.jkcredit.invoice.model.entity.customer.CustomerCarRec; import com.jkcredit.invoice.model.entity.customer.CustomerOper; import com.jkcredit.invoice.model.entity.customer.CustomerRec; import com.jkcredit.invoice.model.entity.invoice.BillInvoice; import com.jkcredit.invoice.model.entity.waybill.NoCarWayBill; import com.jkcredit.invoice.service.CalculateInfor.NoCarCalculateInfoService; import com.jkcredit.invoice.service.customer.CustomerOperService; import com.jkcredit.invoice.service.lowerService.NoCarService; import com.jkcredit.invoice.service.nocar.NoCarBillWayService; import com.jkcredit.invoice.service.nocar.NoCarRecService; import com.jkcredit.invoice.service.nocar.NocarInvoiceService; import com.jkcredit.invoice.util.ReadExcelUtil; import com.jkcredit.invoice.util.RespR; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Base64; import java.util.List; @Api(tags = "无车操作") @RestController @RequestMapping(value = {"/noCar"}) public class NoCarController { @Autowired NoCarRecService noCarRecService; @Autowired NoCarBillWayService noCarBillWayService; @Autowired NocarInvoiceService nocarInvoiceService; @Autowired NoCarCalculateInfoService noCarCalculateInfoService; @Autowired NoCarWaybillMapper noCarWaybillMapper; @Autowired NoCarService noCarService; @Autowired CustomerOperService customerOperService; /** * 分页查询无车备案信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findCarRec") @ApiOperation(value="分页查询无车/自有车备案信息", notes="分页查询无车/自有车备案信息") @LoginRequired public RespR getCustomersByPage(Page page, CustomerCarRec customerCarRec) { try { RespR respR = new RespR(noCarRecService.findByPageAndCarRec(page, customerCarRec)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } public void setTimeDue(NoCarWayBill noCarWayBill){ if(!StringUtils.isEmpty(noCarWayBill.getStartBegin()) && !"null".equals(noCarWayBill.getStartBegin())){ String [] res = noCarWayBill.getStartBegin().split(","); noCarWayBill.setStartBegin(res[0]); noCarWayBill.setStartEnd(res[1]); }else{ noCarWayBill.setStartBegin(null); } if(!StringUtils.isEmpty(noCarWayBill.getEndBegin()) && !"null".equals(noCarWayBill.getEndBegin())){ String [] res = noCarWayBill.getEndBegin().split(","); noCarWayBill.setEndBegin(res[0]); noCarWayBill.setEndEnd(res[1]); }else{ noCarWayBill.setEndBegin(null); } } /** * 分页查询运单信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findBillWay") @ApiOperation(value="分页查询无车运单信息", notes="分页查询无车运单信息") @LoginRequired public RespR findBillWay(Page page, NoCarWayBill noCarWayBill) { try { setTimeDue(noCarWayBill); RespR respR = new RespR(noCarBillWayService.findByPageAndWayBill(page, noCarWayBill)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 重新获取发票并更新状态 * * @return 用户集合 */ @PostMapping("/updateStatus") @ApiOperation(value="重新获取发票并更新状态", notes="重新获取发票并更新状态") @LoginRequired public RespR updateStatus() { try { delGetInvoce(0); delGetInvoce(1); return new RespR("更新成功"); }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } public void delGetInvoce(Integer historyFlag){ NoCarWayBill carWayBill = new NoCarWayBill(); carWayBill.setHisFlag(historyFlag); carWayBill.setBillwayStatus(2); List noCarWayBillsMdEnd = noCarWaybillMapper.selectByHisFlagAndBillStatus(carWayBill); if(noCarWayBillsMdEnd!=null && noCarWayBillsMdEnd.size()>0){ noCarWayBillsMdEnd.stream().forEach(noCarWayBill -> { noCarService.getInvoiceByWayBillNumReal(noCarWayBill,true); }); } } /** * 分页查询异常运单信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findBillWayException") @ApiOperation(value="分页查询异常运单信息", notes="分页查询异常运单信息") @LoginRequired public RespR findBillWayException(Page page, NoCarWayBill noCarWayBill) { try { setTimeDue(noCarWayBill); RespR respR = new RespR(noCarBillWayService.findByPageAndWayBillException(page, noCarWayBill)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 分页查询无车运单信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findNocarInvoices") @ApiOperation(value="分页查询无车发票信息", notes="分页查询无车发票信息") @LoginRequired public RespR findNocarInvoices(Page page, BillInvoice billInvoice) { try { if(!StringUtils.isEmpty(billInvoice.getInvoiceMakeTime()) && !"null".equals(billInvoice.getInvoiceMakeTime())){ String [] res =billInvoice.getInvoiceMakeTime().split(","); billInvoice.setInvoiceMakeStart(res[0]); billInvoice.setInvoiceMakeEnd(res[1]); } RespR respR = new RespR(nocarInvoiceService.findByPageAndInvoice(page, billInvoice)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 分页查询无车运单统计信息 * * @param billInvoice * @return 用户集合 */ @PostMapping("/findNocarInvoicesStatic") @ApiOperation(value="分页查询无车发票统计信息", notes="分页查询无车发票统计信息") @LoginRequired public RespR findNocarInvoicesStatic(BillInvoice billInvoice) { try { RespR respR = new RespR(nocarInvoiceService.findInvoiceStatics(billInvoice)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 批量运单导入 * * @param file 参数集 * @return */ @PostMapping("/batchImprotBillWay") @ApiOperation(value="批量运单导入", notes="批量运单导入") @LoginRequired public RespR batchImprotBillWay(@RequestParam("file") MultipartFile file,String customerName) { try { ImportParams params = new ImportParams(); params.setTitleRows(1); params.setHeadRows(1); params.setKeyIndex(2); List list = ExcelImportUtil.importExcel(file.getInputStream(), NoCarWayBill.class,params) ;list.remove(0); buildDate(list); RespR respR = noCarBillWayService.batchBillWayStart(list,customerName); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 批量运单导入 * * @param file 参数集 * @return */ @PostMapping("/batchImprotHistoryBillWay") @ApiOperation(value="批量历史运单导入", notes="批量历史运单导入") @LoginRequired public RespR batchImprotHistoryBillWay(@RequestParam("file") MultipartFile file,String customerName) { try { ImportParams params = new ImportParams(); params.setTitleRows(1); params.setHeadRows(1); params.setKeyIndex(2); List list = ExcelImportUtil.importExcel(file.getInputStream(), NoCarWayBill.class,params);list.remove(0); buildDate(list); RespR respR = noCarBillWayService.batchHsitoryBillWay(list,customerName); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 批量运单导入 * * @param file 参数集 * @return */ @PostMapping("/batchImprotEndBillWay") @ApiOperation(value="批量运单结束", notes="批量运单结束") @LoginRequired public RespR batchImprotEndBillWay(@RequestParam("file") MultipartFile file,String customerName) { try { ImportParams params = new ImportParams(); params.setTitleRows(1); params.setHeadRows(1); params.setKeyIndex(2); List list = ExcelImportUtil.importExcel(file.getInputStream(), NoCarWayBill.class,params); buildDateEnd(list); RespR respR = noCarBillWayService.batchBillWayEnd(list,customerName); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } public void buildDate(List list){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss"); for(NoCarWayBill noCarWayBill:list){ noCarWayBill.setStartTime(format.format(noCarWayBill.getStartTimeDate())); noCarWayBill.setPredictEndTime(format.format(noCarWayBill.getPredictEndTimeDate())); noCarWayBill.setFee(Math.round(noCarWayBill.getFeeD()*100)); } } public void buildDateEnd(List list){ DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss"); for(NoCarWayBill noCarWayBill:list){ noCarWayBill.setPredictEndTime(format.format(noCarWayBill.getActEndTimeDate())); } } /** * 分页查询无车计费信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findBatchList") @ApiOperation(value="运单批次号查询", notes="运单批次号查询") @LoginRequired public RespR findBatchList(Page page, CustomerOper customerOper) { try { RespR respR = new RespR(customerOperService.findAllCustomerOper(page, customerOper)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } /** * 分页查询无车计费信息 * * @param page 参数集 * @return 用户集合 */ @PostMapping("/findNocarCalculateInfo") @ApiOperation(value="分页查询无车计费信息", notes="分页查询无车计费信息") @LoginRequired public RespR findNocarCalculateInfo(Page page, NoCarCalculateInfor carCalculateInfor) { try { setTimeDue1(carCalculateInfor); RespR respR = new RespR(noCarCalculateInfoService.findByPageAndCalculateInfor(page, carCalculateInfor)); return respR; }catch (Exception e){ e.printStackTrace(); return new RespR(false,e.getMessage()); } } @GetMapping("/templateDownload") @ApiOperation(value="模板下载", notes="模板下载") public RespR contractDownload(String fileName,HttpServletResponse response){ if("1".equals(fileName)){ fileName = "运单模板.xlsx"; }else if("2".equals(fileName)){ fileName = "运单结束模板.xlsx"; }else if("3".equals(fileName)){ fileName = "历史运单模板.xlsx"; } String path = this.getClass().getClassLoader().getResource("").getPath(); OutputStream outputStream = null; InputStream inputStream = null; try { File file = new File(path+"static/templates/excel/"+fileName); inputStream = new FileInputStream(file); response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8")); outputStream = response.getOutputStream(); IOUtils.copy(inputStream, outputStream); response.flushBuffer(); return new RespR(true); } catch (IOException e) { } finally { IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); } return new RespR(false); } public void setTimeDue1(NoCarCalculateInfor carCalculateInfor){ if(!StringUtils.isEmpty(carCalculateInfor.getInvoiceMakeTime()) && !"null".equals(carCalculateInfor.getInvoiceMakeTime())){ String [] res = carCalculateInfor.getInvoiceMakeTime().split(","); carCalculateInfor.setInvoiceMakeStart(res[0]); carCalculateInfor.setInvoiceMakeEnd(res[1]); }else{ carCalculateInfor.setInvoiceMakeTime(null); } if(!StringUtils.isEmpty(carCalculateInfor.getCalculateTime()) && !"null".equals(carCalculateInfor.getCalculateTime())){ String [] res = carCalculateInfor.getCalculateTime().split(","); carCalculateInfor.setCalculateStart(res[0]); carCalculateInfor.setCalculateEnd(res[1]); }else{ carCalculateInfor.setCalculateTime(null); } } }