package com.glxp.api.controller.inv; import cn.hutool.core.thread.ThreadUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.dao.inv.InvInnerOrderPdfTempDao; import com.glxp.api.entity.inv.InvInnerOrderPrintEntity; import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; import com.glxp.api.entity.system.SystemPDFModuleEntity; import com.glxp.api.entity.system.SystemPDFTemplateEntity; import com.glxp.api.req.inout.InspectionPDFTemplateRequest; import com.glxp.api.req.inv.*; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.inv.innerOrderPrintRequest; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.inv.InnerOrderDetailService; import com.glxp.api.service.inv.InvInnerOrderPdfTempService; import com.glxp.api.service.inv.InvInnerOrderPrintService; import com.glxp.api.service.inv.JaspaperService; import com.glxp.api.service.system.SystemPDFModuleService; import com.glxp.api.service.system.SystemPDFTemplateService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.FileUtils; import com.glxp.api.util.JasperUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.*; @RestController public class InvInnerOrderPrintController { @Resource private InvInnerOrderPrintService invInnerOrderPrintService; @Resource SystemPDFModuleService systemPDFModuleService; @Resource SystemPDFTemplateService systemPDFTemplateService; @Value("${file_path}") private String dirPath; @Resource private JaspaperService jaspaperService; @Resource private InvInnerOrderPdfTempService innerOrderPdfTempService; @GetMapping("/udiwms/innerOrderPrint/filter") public BaseResponse filterList(FilterinnerOrderprintRequest filterinnerOrderprintRequest) { List list = invInnerOrderPrintService.filterOrderPrintList(filterinnerOrderprintRequest); PageInfo pageInfo = new PageInfo<>(list); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(pageInfo.getList()); return ResultVOUtils.success(pageSimpleResponse); } @PostMapping("/udiwms/innerOrderPrint/addOrderPrint") public BaseResponse addOrderPrint(@RequestBody invInnerOrderprintReques invInnerOrderprintReques) { if (invInnerOrderprintReques.getOrderIdFk() != null) { invInnerOrderPrintService.addOrderList(invInnerOrderprintReques.getOrderIdFk()); } else { return ResultVOUtils.error(999, "参数错误!"); } return ResultVOUtils.success(); } //-----------打印码 @AuthRuleAnnotation("") @PostMapping("/udiwms/pdf/template/inspection/stock/qrcode/text/file") public BaseResponse inspectionStockQRCodeTextPDFFromTemplateFile( @RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) throws Exception { if (inspectionPDFTemplateRequest.getModuleId() == null) inspectionPDFTemplateRequest.setModuleId(3); SystemPDFModuleEntity systemPDFModuleEntity = systemPDFModuleService.selectById(inspectionPDFTemplateRequest.getModuleId() + ""); if (systemPDFModuleEntity == null) return ResultVOUtils.error(ResultEnum.DATA_NOT, "所属模块错误"); SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId())); if (systemPDFTemplateEntity == null) return ResultVOUtils.error(ResultEnum.DATA_NOT, "模板错误"); return ResultVOUtils.success(); } @AuthRuleAnnotation("") @PostMapping("/udiwms/pdf/template/stock/qrcode/text/file") public BaseResponse stockQRCodeTextPDFFromTemplateFile( @RequestBody InnerOrderQRCodeTextPDFTemplateRequest stockQRCodeTextPDFTemplateRequest, HttpServletRequest request, HttpServletResponse response) throws Exception { if (stockQRCodeTextPDFTemplateRequest.getModuleId() == null) stockQRCodeTextPDFTemplateRequest.setModuleId(3); SystemPDFModuleEntity systemPDFModuleEntity = systemPDFModuleService.selectById(stockQRCodeTextPDFTemplateRequest.getModuleId() + ""); if (systemPDFModuleEntity == null) return ResultVOUtils.error(500, "未找到单据模板模块设置,请检查"); SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId())); if (systemPDFTemplateEntity == null) return null; List printEntities = new ArrayList<>(); List mStockPrintEntities = new ArrayList<>(); FilterinnerOrderprintRequest filterinnerOrderprintRequest = new FilterinnerOrderprintRequest(); if (stockQRCodeTextPDFTemplateRequest.getOrderId() != null) { filterinnerOrderprintRequest.setSOrderId(stockQRCodeTextPDFTemplateRequest.getOrderId()); } else { filterinnerOrderprintRequest.setId(stockQRCodeTextPDFTemplateRequest.getQueryId()); } List stockPrintEntities = invInnerOrderPrintService.filterJoinInnerPrint(filterinnerOrderprintRequest); if (stockPrintEntities != null && stockPrintEntities.size() > 0) { mStockPrintEntities.addAll(stockPrintEntities); } for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { PdfPrintCountEntity pdfPrintCount = getCount(stockQRCodeTextPDFTemplateRequest.getCountList(), innerOrderPrintRequest); if (pdfPrintCount != null && pdfPrintCount.getRowCount() > 0) { for (int i = 0; i < pdfPrintCount.getRowCount(); i++) { innerOrderPrintRequest clone = new innerOrderPrintRequest(); BeanUtils.copyProperties(innerOrderPrintRequest, clone); printEntities.add(clone); } } else { printEntities.add(innerOrderPrintRequest); } } if (printEntities.size() > 1000) { //如果标签打印数据大于1000,则切割生成多个文件 if (!FileUtils.isFileExist(dirPath + "/pdfprint")) { new File(dirPath + "/pdfprint").mkdirs(); } List> splits = CustomUtil.splitList(printEntities, 100); int index = 0; List stockPrintTempEntities = new ArrayList<>(); for (int i = 0; i < splits.size(); i++) { index++; InvInnerOrderPdfTempEntity stockPrintTempEntity = new InvInnerOrderPdfTempEntity(); if (stockQRCodeTextPDFTemplateRequest.getOrderId() != null) { String fileName = stockQRCodeTextPDFTemplateRequest.getOrderId() + "__" + index + "__标签打印" + ".pdf"; String filePath = dirPath + "\\pdfprint\\" + fileName; stockPrintTempEntity.setFileName(fileName); stockPrintTempEntity.setFilePath(filePath); stockPrintTempEntity.setStockOrderFk(stockQRCodeTextPDFTemplateRequest.getOrderId()); } else { String fileName = stockQRCodeTextPDFTemplateRequest.getQueryId() + "__" + index + "__标签打印" + ".pdf"; String filePath = dirPath + "\\pdfprint\\" + fileName; stockPrintTempEntity.setFileName(fileName); stockPrintTempEntity.setFilePath(filePath); stockPrintTempEntity.setPrintCodeIdFk(stockQRCodeTextPDFTemplateRequest.getQueryId()); } stockPrintTempEntity.setStatus(0); stockPrintTempEntity.setGenkey(CustomUtil.getId()); innerOrderPdfTempService.insertStockPrintTempEntity(stockPrintTempEntity); stockPrintTempEntities.add(stockPrintTempEntity); } jaspaperService.printPdfLocal(splits, stockPrintTempEntities, systemPDFTemplateEntity.getPath()); PageInfo pageInfo; pageInfo = new PageInfo<>(stockPrintTempEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(stockPrintTempEntities); return ResultVOUtils.success(pageSimpleResponse); } else { Map data = new HashMap(); data.put("data", printEntities); JasperUtils.jasperReport(request, response, data, systemPDFTemplateEntity.getPath(), "pdf"); } for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { InvInnerOrderPrintEntity innerOrderPrintEntity = new InvInnerOrderPrintEntity(); innerOrderPrintEntity.setStatus(1); innerOrderPrintEntity.setId(innerOrderPrintRequest.getId()); invInnerOrderPrintService.updateOrder(innerOrderPrintEntity); } return null; } public PdfPrintCountEntity getCount(List countList, innerOrderPrintRequest innerOrderPrintRequest) { for (PdfPrintCountEntity pdfPrintCount : countList) { if (pdfPrintCount.getQueryId().equals(innerOrderPrintRequest.getId() + "")) { return pdfPrintCount; } } return null; } @AuthRuleAnnotation("") @PostMapping("/udiwms/pdf/template/stock/qrcode/text/maxfile") public BaseResponse stockQRCodeMaxTextPDFFromTemplateFile(@RequestBody InnerOrderQRCodeTextPDFTemplateRequest innerOrderQRCodeTextPDFTemplateRequest) { PageSimpleResponse pageSimpleResponse = invInnerOrderPrintService.print(innerOrderQRCodeTextPDFTemplateRequest); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/spms/stock/qrcode/filterTemp") public BaseResponse filterTemp(DeleteStPrintTempRequest deleteStPrintTempRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List stockQRCodeTextEntityList = innerOrderPdfTempService.filterStockPrintTempEntity(deleteStPrintTempRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(stockQRCodeTextEntityList); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(stockQRCodeTextEntityList); return ResultVOUtils.success(pageSimpleResponse); } }