You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/controller/inv/InvInnerOrderPrintControlle...

229 lines
12 KiB
Java

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<InvInnerOrderPrintEntity> list = invInnerOrderPrintService.filterOrderPrintList(filterinnerOrderprintRequest);
PageInfo<InvInnerOrderPrintEntity> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvInnerOrderPrintEntity> 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<innerOrderPrintRequest> printEntities = new ArrayList<>();
List<innerOrderPrintRequest> mStockPrintEntities = new ArrayList<>();
FilterinnerOrderprintRequest filterinnerOrderprintRequest = new FilterinnerOrderprintRequest();
if (stockQRCodeTextPDFTemplateRequest.getOrderId() != null) {
filterinnerOrderprintRequest.setSOrderId(stockQRCodeTextPDFTemplateRequest.getOrderId());
} else {
filterinnerOrderprintRequest.setId(stockQRCodeTextPDFTemplateRequest.getQueryId());
}
List<innerOrderPrintRequest> 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<List<innerOrderPrintRequest>> splits = CustomUtil.splitList(printEntities, 100);
int index = 0;
List<InvInnerOrderPdfTempEntity> 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<InvInnerOrderPdfTempEntity> pageInfo;
pageInfo = new PageInfo<>(stockPrintTempEntities);
PageSimpleResponse<InvInnerOrderPdfTempEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(stockPrintTempEntities);
return ResultVOUtils.success(pageSimpleResponse);
} else {
Map<String, Object> data = new HashMap<String, Object>();
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<PdfPrintCountEntity> 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<InvInnerOrderPdfTempEntity> stockQRCodeTextEntityList = innerOrderPdfTempService.filterStockPrintTempEntity(deleteStPrintTempRequest);
PageInfo<InvInnerOrderPdfTempEntity> pageInfo;
pageInfo = new PageInfo<>(stockQRCodeTextEntityList);
PageSimpleResponse<InvInnerOrderPdfTempEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(stockQRCodeTextEntityList);
return ResultVOUtils.success(pageSimpleResponse);
}
}