diff --git a/api-admin/.gitignore b/api-admin/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/api-admin/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/api-admin/pom.xml b/api-admin/pom.xml index 00c1970..954a1e5 100644 --- a/api-admin/pom.xml +++ b/api-admin/pom.xml @@ -210,6 +210,55 @@ poi-ooxml RELEASE + + + + + + + net.sf.barcode4j + barcode4j + 2.1 + + + net.sf.jasperreports + jasperreports + 6.5.1 + + + net.sf.jasperreports + jasperreports-fonts + 6.0.0 + + + + com.itextpdf + itext-pdfa + 5.5.0 + + + + cn.lesper + iTextAsian + 3.0 + + + + + + org.apache.xmlgraphics + batik-bridge + 1.11 + + + + org.apache.xmlgraphics + batik-dom + 1.11 + + + + @@ -258,7 +307,7 @@ true - + Generate MyBatis Artifacts generate @@ -275,7 +324,6 @@ - diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java index c2b7218..a7908ad 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java @@ -1,12 +1,29 @@ package com.glxp.sale.admin.controller.inout; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +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 com.github.pagehelper.PageInfo; -import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; -import com.glxp.sale.admin.entity.inout.*; +import com.glxp.sale.admin.entity.inout.StockOrderDetailEntity; +import com.glxp.sale.admin.entity.inout.StockOrderEntity; +import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; +import com.glxp.sale.admin.entity.inout.StockQRCodeTextEntity; import com.glxp.sale.admin.entity.param.SystemPDFModuleEntity; import com.glxp.sale.admin.entity.param.SystemPDFTemplateEntity; import com.glxp.sale.admin.req.inout.DeleteRequest; -import com.glxp.sale.admin.req.inout.StockOrderDetailFilterRequest; import com.glxp.sale.admin.req.inout.StockQRCodeTextFilterRequest; import com.glxp.sale.admin.req.itextpdf.InspectionPDFTemplateRequest; import com.glxp.sale.admin.req.itextpdf.StockQRCodeTextPDFTemplateRequest; @@ -14,25 +31,19 @@ import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.service.basic.BussinessTypeService; import com.glxp.sale.admin.service.basic.UdiInfoService; import com.glxp.sale.admin.service.basic.UdiRelevanceService; -import com.glxp.sale.admin.service.inout.*; +import com.glxp.sale.admin.service.inout.StockOrderDetailService; +import com.glxp.sale.admin.service.inout.StockOrderDetailTempService; +import com.glxp.sale.admin.service.inout.StockOrderService; +import com.glxp.sale.admin.service.inout.StockQRCodeTextService; import com.glxp.sale.admin.service.param.SystemPDFModuleService; import com.glxp.sale.admin.service.param.SystemPDFTemplateService; import com.glxp.sale.admin.service.param.SystemParamConfigService; import com.glxp.sale.admin.thread.IoTransInoutService; import com.glxp.sale.admin.util.ITextPDFUtils; +import com.glxp.sale.admin.util.JasperUtils; import com.glxp.sale.common.enums.ResultEnum; import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.util.ResultVOUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.List; @RestController public class StockQRCodeTextController { @@ -113,6 +124,8 @@ public class StockQRCodeTextController { @RequestBody StockQRCodeTextPDFTemplateRequest stockQRCodeTextPDFTemplateRequest, HttpServletRequest request, HttpServletResponse response) throws Exception { + + StockQRCodeTextEntity stockQRCodeTextEntity = stockQRCodeTextService.findOne(stockQRCodeTextPDFTemplateRequest.getId()); if (stockQRCodeTextEntity == null) { return; @@ -161,6 +174,8 @@ public class StockQRCodeTextController { @RequestBody StockQRCodeTextPDFTemplateRequest stockQRCodeTextPDFTemplateRequest, HttpServletRequest request, HttpServletResponse response) throws Exception { + + /* StockOrderEntity stockOrderEntity = stockOrderService.findById(stockQRCodeTextPDFTemplateRequest.getId()); if (stockOrderEntity == null) { @@ -189,11 +204,21 @@ public class StockQRCodeTextController { ITextPDFUtils.exportStockOrderPDFFromTemplateFile( stockQRCodeTextPDFTemplateRequest, stockOrderEntity, stockOrderDetailEntityList, request, response); - - StockOrderEntity updateStockOrderEntity = new StockOrderEntity(); - updateStockOrderEntity.setId(stockOrderEntity.getId()); - updateStockOrderEntity.setPrintStatus("102"); - stockOrderService.updateById(updateStockOrderEntity); + */ + /*打印订单*/ + List list = stockOrderService.listOrderPrint(stockQRCodeTextPDFTemplateRequest.getId()); + if(list!=null&&list.size()>0) { + StockOrderEntity updateStockOrderEntity = new StockOrderEntity(); + updateStockOrderEntity.setId(stockQRCodeTextPDFTemplateRequest.getId()); + updateStockOrderEntity.setPrintStatus("102"); + stockOrderService.updateById(updateStockOrderEntity); + + + Map data = new HashMap(); + data.put("data", list); + JasperUtils.jasperReport(request, response, data, "aspers/order_print_1.jasper", "pdf"); + + } } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java index 89889aa..f07ef0f 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java @@ -1,16 +1,14 @@ package com.glxp.sale.admin.dao.inout; -import com.glxp.sale.admin.entity.inout.OrderEntity; -import com.glxp.sale.admin.entity.inout.StockOrderEntity; -import com.glxp.sale.admin.entity.inout.WarehouseEntity; -import com.glxp.sale.admin.req.inout.OrderFilterRequest; -import com.glxp.sale.admin.req.inout.OrderQueryRequest; -import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; -import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; +import java.util.List; + import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import java.util.List; +import com.glxp.sale.admin.entity.inout.StockOrderEntity; +import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; +import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; +import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; @Mapper public interface StockOrderDao { @@ -32,4 +30,6 @@ public interface StockOrderDao { List filterListOr(StockOrderFilterRequest stockOrderFilterRequest); StockOrderEntity findOne(StockOrderFilterRequest stockOrderFilterRequest); + + List listOrderPrint(StockOrderFilterRequest stockOrderFilterRequest); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/inout/StockOrderPrintEntity.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/inout/StockOrderPrintEntity.java new file mode 100644 index 0000000..4c3305f --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/inout/StockOrderPrintEntity.java @@ -0,0 +1,23 @@ +package com.glxp.sale.admin.entity.inout; + +import lombok.Data; + +@Data +public class StockOrderPrintEntity extends StockOrderDetailEntity { + + private String id; + private String billNo; + private String billdate; + private String corpId; + private String corpName; + private String billType; + private String billFlag; + private String thirdSysFk; + private String status; + private String statusInfo; + private String type; + private String sourceType; + private String printStatus; + private String unitIdFk; + private String customerId; +} diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java index 49c779f..648d6ba 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/StockOrderService.java @@ -1,12 +1,12 @@ package com.glxp.sale.admin.service.inout; +import java.util.List; + import com.glxp.sale.admin.entity.inout.StockOrderEntity; -import com.glxp.sale.admin.entity.inout.WarehouseEntity; +import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; -import java.util.List; - public interface StockOrderService { List listStockOrders(StockOrderQueryRequest stockOrderQueryRequest); @@ -30,4 +30,6 @@ public interface StockOrderService { StockOrderEntity findOne(StockOrderFilterRequest stockOrderFilterRequest); StockOrderEntity findById(String orderId); + + List listOrderPrint(String orderId); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java index 222248f..5c1bc73 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/StockOrderServiceImpl.java @@ -1,22 +1,19 @@ package com.glxp.sale.admin.service.inout.impl; +import java.util.Collections; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + import com.github.pagehelper.PageHelper; -import com.glxp.sale.admin.dao.inout.OrderDao; import com.glxp.sale.admin.dao.inout.StockOrderDao; -import com.glxp.sale.admin.dao.inout.WarehouseDao; -import com.glxp.sale.admin.entity.inout.OrderEntity; import com.glxp.sale.admin.entity.inout.StockOrderEntity; -import com.glxp.sale.admin.entity.inout.WarehouseEntity; -import com.glxp.sale.admin.req.inout.OrderFilterRequest; +import com.glxp.sale.admin.entity.inout.StockOrderPrintEntity; import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inout.StockOrderQueryRequest; -import com.glxp.sale.admin.service.inout.OrderService; import com.glxp.sale.admin.service.inout.StockOrderService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; @Service public class StockOrderServiceImpl implements StockOrderService { @@ -97,5 +94,11 @@ public class StockOrderServiceImpl implements StockOrderService { return stockOrderDao.findOne(stockOrderFilterRequest); } + @Override + public List listOrderPrint(String orderId) { + StockOrderFilterRequest stockOrderFilterRequest = new StockOrderFilterRequest(); + stockOrderFilterRequest.setId(orderId); + return stockOrderDao.listOrderPrint(stockOrderFilterRequest); + } } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java b/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java new file mode 100644 index 0000000..a7b86c2 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/util/JasperUtils.java @@ -0,0 +1,86 @@ +package com.glxp.sale.admin.util; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.ClassPathResource; +import org.springframework.stereotype.Component; + +import com.alibaba.fastjson.JSON; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperExportManager; +import net.sf.jasperreports.engine.JasperFillManager; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter; +import net.sf.jasperreports.engine.query.JsonQueryExecuterFactory; +import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; + +/** + * Jasperreport工具类 + * @author chenqf + * @date 2021-11-10 22:23 + */ +@Component +public class JasperUtils { + private static Logger logger = LoggerFactory.getLogger(JasperUtils.class); + + public static final String PDF_TYPE="pdf"; + public static final String WORD_TYPE="word"; + public static final String EXCEL_TYPE="excel"; + public static final String HTML_TYPE="html"; + /* + * data 传入报表数据 + * jasperResource 模板文件路径 + */ + public static void jasperReport(HttpServletRequest request, HttpServletResponse response,Map data,String jasperResource,String type) throws IOException, JRException { + try { + HashMap map = new HashMap(); + InputStream is = new ByteArrayInputStream(JSON.toJSONString(data).getBytes("UTF-8")); + map.put("JSON_INPUT_STREAM", is); //填充报表数据 + map.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH); + + ClassPathResource resource = new ClassPathResource(jasperResource); + + InputStream jasperStream = resource.getInputStream(); + + JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); + //报表填充 + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map); + String fileName = new String("export.pdf".getBytes("GBK"), "ISO8859_1"); + ServletOutputStream os = response.getOutputStream(); + response.setDateHeader("Expires", 0); + response.setHeader("Content-disposition","attachment; filename="+fileName); + if(type!=null&&WORD_TYPE.equals(type)) { + response.setContentType("appliction/msword; charset=utf-8"); + JRDocxExporter exporter = new JRDocxExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(os)); + exporter.exportReport(); + } else { + response.setContentType("application/pdf; charset=utf-8"); + JasperExportManager.exportReportToPdfStream(jasperPrint,os); + os.flush(); + os.close(); + } + } catch (Exception e) { + + e.printStackTrace(); + + } + } + +} diff --git a/api-admin/src/main/resources/fonts/STSONG.TTF b/api-admin/src/main/resources/fonts/STSONG.TTF new file mode 100644 index 0000000..3870605 Binary files /dev/null and b/api-admin/src/main/resources/fonts/STSONG.TTF differ diff --git a/api-admin/src/main/resources/fonts/fonts.xml b/api-admin/src/main/resources/fonts/fonts.xml new file mode 100644 index 0000000..789638f --- /dev/null +++ b/api-admin/src/main/resources/fonts/fonts.xml @@ -0,0 +1,15 @@ + + + + fonts/STSONG.TTF + fonts/STSONG.TTF + fonts/STSONG.TTF + fonts/STSONG.TTF + Identity-H + true + + '华文宋体', Arial, Helvetica, sans-serif + '华文宋体', Arial, Helvetica, sans-serif + + + \ No newline at end of file diff --git a/api-admin/src/main/resources/jasperreports_extension.properties b/api-admin/src/main/resources/jasperreports_extension.properties new file mode 100644 index 0000000..3ff6e4a --- /dev/null +++ b/api-admin/src/main/resources/jasperreports_extension.properties @@ -0,0 +1,2 @@ +net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory +net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml diff --git a/api-admin/src/main/resources/jaspers/isn_print_1.jasper b/api-admin/src/main/resources/jaspers/isn_print_1.jasper new file mode 100644 index 0000000..e94ceed Binary files /dev/null and b/api-admin/src/main/resources/jaspers/isn_print_1.jasper differ diff --git a/api-admin/src/main/resources/jaspers/isn_print_1.jrxml b/api-admin/src/main/resources/jaspers/isn_print_1.jrxml new file mode 100644 index 0000000..01a6f12 --- /dev/null +++ b/api-admin/src/main/resources/jaspers/isn_print_1.jrxml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api-admin/src/main/resources/jaspers/order_print_1.jasper b/api-admin/src/main/resources/jaspers/order_print_1.jasper new file mode 100644 index 0000000..fd5ae4a Binary files /dev/null and b/api-admin/src/main/resources/jaspers/order_print_1.jasper differ diff --git a/api-admin/src/main/resources/jaspers/order_print_1.jrxml b/api-admin/src/main/resources/jaspers/order_print_1.jrxml new file mode 100644 index 0000000..2b77567 --- /dev/null +++ b/api-admin/src/main/resources/jaspers/order_print_1.jrxml @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="98" splitType="Stretch"> + <textField isBlankWhenNull="true"> + <reportElement x="40" y="8" width="504" height="30" uuid="792264b3-8a9c-42fe-ba28-ffc580771931"/> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{title}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="0" y="47" width="50" height="24" uuid="5ba70caa-24aa-45b4-996c-46c1e4500475"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="华文宋体"/> + </textElement> + <text><![CDATA[单号:]]></text> + </staticText> + <textField isBlankWhenNull="true"> + <reportElement x="56" y="47" width="124" height="24" uuid="92a15708-763f-496c-ab77-55130f8f4e1c"/> + <textElement verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{billNo}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="401" y="70" width="50" height="24" uuid="198d781d-8f0d-4b91-9eb9-eb845e506d3b"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="华文宋体"/> + </textElement> + <text><![CDATA[开单日期:]]></text> + </staticText> + <textField isBlankWhenNull="true"> + <reportElement x="459" y="70" width="100" height="24" uuid="006f1842-d859-4f94-84be-6601ad8f972a"/> + <textElement verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{billDate}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="-8" y="72" width="58" height="24" uuid="3b263493-0ad2-4c4f-b101-18781d92378f"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="华文宋体"/> + </textElement> + <text><![CDATA[送货单位:]]></text> + </staticText> + <textField isBlankWhenNull="true"> + <reportElement x="56" y="72" width="337" height="24" uuid="c7ff1896-1c78-44fd-a795-7005efd9e190"/> + <textElement verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{corpName}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml index 139a44d..e59e150 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml @@ -161,5 +161,35 @@ limit 1 + \ No newline at end of file diff --git a/api-common/.gitignore b/api-common/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/api-common/.gitignore @@ -0,0 +1 @@ +/target/