diff --git a/api-admin/pom.xml b/api-admin/pom.xml
index aad2b99f..adee74b6 100644
--- a/api-admin/pom.xml
+++ b/api-admin/pom.xml
@@ -176,6 +176,37 @@
poi-ooxml
RELEASE
+
+
+
+ com.itextpdf
+ itextpdf
+ 5.5.10
+
+
+ com.itextpdf
+ itext-asian
+ 5.2.0
+
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.9
+
+
+
+
+ com.google.zxing
+ core
+ 3.3.3
+
+
+ com.google.zxing
+ javase
+ 3.3.3
+
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java
index 744c2cbc..af8c8d8f 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java
@@ -1,6 +1,7 @@
package com.glxp.api.admin.controller.basic;
import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.entity.basic.BasicThirdSysDetailEntity;
import com.glxp.api.admin.entity.basic.BasicThirdSysEntity;
import com.glxp.api.admin.req.basic.FilterBasicThirdSysDetailRequest;
@@ -59,10 +60,13 @@ public class BasicThirdSysController {
return ResultVOUtils.success(pageSimpleResponse);
}
+ /**
+ * 扫码精灵获取第三方系统列表
+ */
+// @AuthRuleAnnotation("")
@GetMapping("/udiwms/basic/thirdsys/get")
public BaseResponse get(FilterBasicThirdSysRequest filterBasicThirdSysRequest,
BindingResult bindingResult) {
-
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
@@ -74,6 +78,9 @@ public class BasicThirdSysController {
BeanUtils.copyProperties(item, basicThirdSysResponse);
return basicThirdSysResponse;
}).collect(Collectors.toList());
+ basicThirdSysResponses.add(new BasicThirdSysResponse("ybbm","医保编码"));
+ basicThirdSysResponses.add(new BasicThirdSysResponse("sptm","商品条码"));
+ basicThirdSysResponses.add(new BasicThirdSysResponse("udiCode","UDI最小销售标识"));
return ResultVOUtils.success(basicThirdSysResponses);
}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicUnitMaintainController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicUnitMaintainController.java
index 3e763282..f40eded8 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicUnitMaintainController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicUnitMaintainController.java
@@ -1,6 +1,7 @@
package com.glxp.api.admin.controller.basic;
import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.entity.basic.BasicThirdSysDetailEntity;
import com.glxp.api.admin.entity.basic.BasicThirdSysEntity;
import com.glxp.api.admin.entity.basic.BasicUnitMaintainEntity;
@@ -19,6 +20,7 @@ import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.BasicProductThirdSysResponse;
import com.glxp.api.admin.res.basic.BasicUnitMaintainResponse;
import com.glxp.api.admin.res.basic.ErpUnitsResponse;
+import com.glxp.api.admin.res.basic.SrtBasicUnitResponse;
import com.glxp.api.admin.res.inout.WarehouseResponse;
import com.glxp.api.admin.service.basic.BasicThirdSysDetailService;
import com.glxp.api.admin.service.basic.BasicThirdSysService;
@@ -138,6 +140,35 @@ public class BasicUnitMaintainController {
return ResultVOUtils.success(pageSimpleResponse);
}
+ /**
+ * 扫码精灵下载往来单位
+ */
+// @AuthRuleAnnotation("")
+ @GetMapping("/udiwms/basic/unit/download")
+ public BaseResponse downloadBasicUnits(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+ List basicUnitMaintainEntities;
+ basicUnitMaintainEntities = basicUnitMaintainService.filterList(basicUnitMaintainFilterRequest);
+ List srtBasicUnitResponses = new ArrayList<>();
+
+ for (BasicUnitMaintainEntity basicUnitMaintainEntity : basicUnitMaintainEntities) {
+ SrtBasicUnitResponse srtBasicUnitResponse = new SrtBasicUnitResponse();
+ srtBasicUnitResponse.setUnitId(basicUnitMaintainEntity.getErpId());
+ srtBasicUnitResponse.setUnitName(basicUnitMaintainEntity.getName());
+ srtBasicUnitResponses.add(srtBasicUnitResponse);
+ }
+ PageInfo pageInfo;
+ pageInfo = new PageInfo<>(basicUnitMaintainEntities);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ pageSimpleResponse.setList(srtBasicUnitResponses);
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
@PostMapping("/udiwms/basic/unit/maintain/combine")
public BaseResponse combine(@RequestBody CombineUnitRequest combineRequest, BindingResult bindingResult) {
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessTypeController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessTypeController.java
index 69ef53e5..69b3a7e7 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessTypeController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessTypeController.java
@@ -1,16 +1,20 @@
package com.glxp.api.admin.controller.basic;
import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.constant.BussinessTypeUtils;
import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.req.inout.DeleteRequest;
import com.glxp.api.admin.req.receipt.BussinessTypeFilterRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
+import com.glxp.api.admin.res.basic.BasicThirdSysResponse;
import com.glxp.api.admin.res.basic.BussinessTypResponse;
+import com.glxp.api.admin.res.basic.SrBtResponse;
import com.glxp.api.admin.service.basic.BussinessTypeService;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -20,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* 业务类型维护
@@ -67,6 +72,33 @@ public class BussinessTypeController {
return ResultVOUtils.success(pageSimpleResponse);
}
+// @AuthRuleAnnotation("")
+ @GetMapping("/udiwms/bussinessType/download")
+ public BaseResponse downloadJoinBussinessType(BussinessTypeFilterRequest bussinessTypeFilterRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+ bussinessTypeFilterRequest.setEnabled(true);
+ List bussinessTypeEntities;
+ bussinessTypeEntities = bussinessTypeService.filterJoinList(bussinessTypeFilterRequest);
+
+ List basicThirdSysResponses = bussinessTypeEntities.stream().map(item ->
+ {
+ SrBtResponse basicThirdSysResponse = new SrBtResponse();
+ BeanUtils.copyProperties(item, basicThirdSysResponse);
+ return basicThirdSysResponse;
+ }).collect(Collectors.toList());
+
+ PageInfo pageInfo;
+ pageInfo = new PageInfo<>(bussinessTypeEntities);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ pageSimpleResponse.setList(basicThirdSysResponses);
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
@PostMapping("/udiwms/bussinessType/delete")
public BaseResponse deleteBussinessType(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) {
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/CorpImportLogController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/CorpImportLogController.java
index 6d6edd9c..663f9f4d 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/CorpImportLogController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/CorpImportLogController.java
@@ -154,11 +154,23 @@ public class CorpImportLogController {
continue;
}
// 滤过第一行标题
- for (int k = sheet.getFirstRowNum(); k <= sheet.getLastRowNum(); k++) {
+ row = sheet.getRow(0);
+ if ((row.getCell(0) == null || row.getCell(1) == null || row.getCell(2) == null
+ || row.getCell(3) == null || row.getCell(4) == null || row.getCell(5) == null|| row.getCell(6) == null) ||
+ (!"往来单位ID".equals(row.getCell(0).getStringCellValue())
+ || !"往来单位名称".equals(row.getCell(1).getStringCellValue())
+ || !"往来单位拼音简写".equals(row.getCell(2).getStringCellValue())
+ || !"地址".equals(row.getCell(3).getStringCellValue())
+ || !"联系人".equals(row.getCell(4).getStringCellValue())
+ || !"联系电话".equals(row.getCell(5).getStringCellValue())
+ || !"社会信用号".equals(row.getCell(6).getStringCellValue())
+ || !"往来单位状态".equals(row.getCell(6).getStringCellValue())
+ || !"往来单位类型".equals(row.getCell(6).getStringCellValue())
+ || !"thirdId".equals(row.getCell(6).getStringCellValue()))) {
+ return ResultVOUtils.error(500, "文件格式错误!");
+ }
+ for (int k = sheet.getFirstRowNum()+1; k <= sheet.getLastRowNum(); k++) {
row = sheet.getRow(k);
- if (row == null || row.getFirstCellNum() == k) {
- continue;
- }
CorpImportDetailEntity corpImportDetailEntity = new CorpImportDetailEntity();
Cell cell1 = row.getCell(0);
if (cell1 != null) {
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/UdiInfoImportLogController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/UdiInfoImportLogController.java
index 07ff401e..92658adf 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/UdiInfoImportLogController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/UdiInfoImportLogController.java
@@ -153,11 +153,20 @@ public class UdiInfoImportLogController {
continue;
}
// 滤过第一行标题
- for (int k = sheet.getFirstRowNum(); k <= sheet.getLastRowNum(); k++) {
+ row = sheet.getRow(0);
+ if ((row.getCell(0) == null || row.getCell(1) == null || row.getCell(2) == null
+ || row.getCell(3) == null || row.getCell(4) == null || row.getCell(5) == null|| row.getCell(6) == null) ||
+ (!"udiCode".equals(row.getCell(0).getStringCellValue())
+ || !"医保码".equals(row.getCell(1).getStringCellValue())
+ || !"商品条码".equals(row.getCell(2).getStringCellValue())
+ || !"thirdId".equals(row.getCell(3).getStringCellValue())
+ || !"thirdId1".equals(row.getCell(4).getStringCellValue())
+ || !"thirdId2".equals(row.getCell(5).getStringCellValue())
+ || !"thirdId3".equals(row.getCell(6).getStringCellValue()))) {
+ return ResultVOUtils.error(500, "文件格式错误!");
+ }
+ for (int k = sheet.getFirstRowNum()+1; k <= sheet.getLastRowNum(); k++) {
row = sheet.getRow(k);
- if (row == null || row.getFirstCellNum() == k) {
- continue;
- }
UdiInfoImportDetailEntity udiInfoImportEntity = new UdiInfoImportDetailEntity();
Cell cell1 = row.getCell(0);
if (cell1 != null) {
@@ -261,4 +270,41 @@ public class UdiInfoImportLogController {
}
+ //扫码精灵产品信息接口上传
+ @PostMapping("/udiwms/basic/products/srUpload")
+ public BaseResponse postSrUdiInfo(@RequestBody PostUdiInfoRequest postUdiInfoRequest, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+
+ String genKey = postUdiInfoRequest.getGenKey();
+ if (genKey == null) {
+ genKey = CustomUtil.getId();
+ }
+ UdiInfoImportLogEntity udiInfoImportLogEntity = udiInfoImportLogService.selectByGenKey(genKey);
+ List udiInfoImportEntities = postUdiInfoRequest.getDatas();
+ if(udiInfoImportEntities!=null){
+ for(UdiInfoImportDetailEntity udiInfoImportEntity:udiInfoImportEntities){
+ udiInfoImportEntity.setGenKeyFk(genKey);
+ udiInfoImportEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_CODE_UNPROCESS);
+ udiInfoImportEntity.setUpdateTime(new java.util.Date());
+ udiInfoImportService.insertUdiInfoImport(udiInfoImportEntity);
+ }
+ }
+ if(udiInfoImportLogEntity==null){
+ udiInfoImportLogEntity = new UdiInfoImportLogEntity();
+ udiInfoImportLogEntity.setGenKey(genKey);
+ udiInfoImportLogEntity.setFromType("扫码精灵上传");
+ udiInfoImportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_UNPROCESS);
+ udiInfoImportLogEntity.setUpdateTime(new Date(System.currentTimeMillis()));
+ udiInfoImportLogService.insertImportLog(udiInfoImportLogEntity);
+ }else {
+ udiInfoImportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_UNPROCESS);
+ udiInfoImportLogService.updateImportLog(udiInfoImportLogEntity);
+ }
+ basicUdiInfoImportService.importUdiInfo(genKey);
+ return ResultVOUtils.success("上传成功");
+ }
+
+
}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFModuleController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFModuleController.java
new file mode 100644
index 00000000..1804b711
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFModuleController.java
@@ -0,0 +1,129 @@
+package com.glxp.api.admin.controller.info;
+
+import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.annotation.AuthRuleAnnotation;
+import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.req.info.SystemPDFModuleRequest;
+import com.glxp.api.admin.req.info.SystemPDFModuleSaveRequest;
+import com.glxp.api.admin.res.PageSimpleResponse;
+import com.glxp.api.admin.res.info.SystemPDFModuleResponse;
+import com.glxp.api.admin.res.info.SystemPDFModuleSelectResponse;
+import com.glxp.api.admin.service.info.SystemPDFModuleService;
+import com.glxp.api.admin.service.info.SystemPDFTemplateService;
+import com.glxp.api.common.enums.ResultEnum;
+import com.glxp.api.common.res.BaseResponse;
+import com.glxp.api.common.util.ResultVOUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+public class SystemPDFModuleController {
+
+ @Resource
+ private SystemPDFModuleService systemPDFModuleService;
+ @Resource
+ private SystemPDFTemplateService systemPDFTemplateService;
+
+ @AuthRuleAnnotation("system/pdf/module/list")
+ @GetMapping("/system/pdf/module/list")
+ public BaseResponse list(@Valid SystemPDFModuleRequest systemPDFModuleRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+
+ List systemPDFModuleEntityList = systemPDFModuleService.queryPage(systemPDFModuleRequest);
+ List systemPDFModuleResponseList = systemPDFModuleEntityList.stream().map(item -> {
+ SystemPDFModuleResponse systemPDFModuleResponse = new SystemPDFModuleResponse();
+ BeanUtils.copyProperties(item, systemPDFModuleResponse);
+ if (item.getTemplateId() != 0) {
+ SystemPDFTemplateEntity systemPDFTemplateEntity =
+ systemPDFTemplateService.selectById(String.valueOf(item.getTemplateId()));
+ if (systemPDFTemplateEntity != null) {
+ systemPDFModuleResponse.setTemplateName(systemPDFTemplateEntity.getName());
+ }
+ }
+ return systemPDFModuleResponse;
+ }).collect(Collectors.toList());
+
+ PageInfo pageInfo = new PageInfo<>(systemPDFModuleEntityList);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ pageSimpleResponse.setList(systemPDFModuleResponseList);
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
+ @AuthRuleAnnotation("system/pdf/module/list")
+ @GetMapping("/system/pdf/module/pdfModules")
+ public BaseResponse pdfModules(@RequestParam(value = "page", defaultValue = "1") Integer page,
+ @RequestParam(value = "limit", defaultValue = "100") Integer limit) {
+
+ List systemPDFModuleEntityList = systemPDFModuleService.listPDFModules(page, limit);
+ PageInfo pageInfo = new PageInfo<>(systemPDFModuleEntityList);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ List systemPDFModuleSelectResponses = systemPDFModuleEntityList.stream().map(e -> {
+ SystemPDFModuleSelectResponse systemPDFModuleSelectResponse = new SystemPDFModuleSelectResponse();
+ BeanUtils.copyProperties(e, systemPDFModuleSelectResponse);
+ systemPDFModuleSelectResponse.setIdStr(String.valueOf(e.getId()));
+ return systemPDFModuleSelectResponse;
+ }).collect(Collectors.toList());
+ pageSimpleResponse.setList(systemPDFModuleSelectResponses);
+
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
+ @AuthRuleAnnotation("system/pdf/module/save")
+ @PostMapping("/system/pdf/module/save")
+ public BaseResponse save(@RequestBody @Valid SystemPDFModuleSaveRequest systemPDFModuleSaveRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+
+ SystemPDFModuleEntity systemPDFModuleEntity = new SystemPDFModuleEntity();
+ BeanUtils.copyProperties(systemPDFModuleSaveRequest, systemPDFModuleEntity);
+
+ systemPDFModuleEntity.setCreate_time(new Date());
+ systemPDFModuleEntity.setUpdate_time(new Date());
+
+ boolean b = systemPDFModuleService.insert(systemPDFModuleEntity);
+ if (!b) {
+ return ResultVOUtils.error(ResultEnum.NOT_NETWORK);
+ }
+
+ return ResultVOUtils.success();
+ }
+
+ @AuthRuleAnnotation("system/pdf/module/update")
+ @PostMapping("/system/pdf/module/update")
+ public BaseResponse update(@RequestBody SystemPDFModuleSaveRequest systemPDFModuleSaveRequest) {
+ systemPDFModuleSaveRequest.setUpdate_time(new Date());
+ systemPDFModuleService.updateById(systemPDFModuleSaveRequest);
+
+ return ResultVOUtils.success("修改成功");
+ }
+
+ @AuthRuleAnnotation("system/pdf/module/delete")
+ @GetMapping("/system/pdf/module/delete")
+ public BaseResponse deleteById(@RequestParam("id") Integer id) {
+
+
+ boolean b = systemPDFModuleService.deleteById(id);
+ if (b)
+ return ResultVOUtils.success("删除成功");
+ else {
+ return ResultVOUtils.error(500, "删除失败");
+ }
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFTemplateController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFTemplateController.java
new file mode 100644
index 00000000..be90d117
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SystemPDFTemplateController.java
@@ -0,0 +1,127 @@
+package com.glxp.api.admin.controller.info;
+
+import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.annotation.AuthRuleAnnotation;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.req.info.SystemPDFTemplateRequest;
+import com.glxp.api.admin.req.info.SystemPDFTemplateSaveRequest;
+import com.glxp.api.admin.res.PageSimpleResponse;
+import com.glxp.api.admin.res.info.SystemPDFTemplateResponse;
+import com.glxp.api.admin.res.info.SystemPDFTemplateSelectResponse;
+import com.glxp.api.admin.service.info.SystemPDFTemplateService;
+import com.glxp.api.common.enums.ResultEnum;
+import com.glxp.api.common.res.BaseResponse;
+import com.glxp.api.common.util.ResultVOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+public class SystemPDFTemplateController {
+
+ @Resource
+ private SystemPDFTemplateService systemPDFTemplateService;
+
+ @AuthRuleAnnotation("system/pdf/template/list")
+ @GetMapping("/system/pdf/template/list")
+ public BaseResponse list(@Valid SystemPDFTemplateRequest systemPDFTemplateRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+
+ systemPDFTemplateRequest.setType(2);
+ List systemPDFTemplateEntityList = systemPDFTemplateService.queryPage(systemPDFTemplateRequest);
+ List systemPDFTemplateResponseList = systemPDFTemplateEntityList.stream().map(item -> {
+ SystemPDFTemplateResponse systemPDFTemplateResponse = new SystemPDFTemplateResponse();
+ BeanUtils.copyProperties(item, systemPDFTemplateResponse);
+ return systemPDFTemplateResponse;
+ }).collect(Collectors.toList());
+
+ PageInfo pageInfo = new PageInfo<>(systemPDFTemplateEntityList);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ pageSimpleResponse.setList(systemPDFTemplateResponseList);
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
+ @AuthRuleAnnotation("system/pdf/template/list")
+ @GetMapping("/system/pdf/template/pdfTemplates")
+ public BaseResponse pdfTemplates(@RequestParam(value = "page", defaultValue = "1") Integer page,
+ @RequestParam(value = "limit", defaultValue = "100") Integer limit) {
+
+ List systemPDFTemplateEntityList = systemPDFTemplateService.listPDFTemplates(page, limit);
+ PageInfo pageInfo = new PageInfo<>(systemPDFTemplateEntityList);
+ PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>();
+ pageSimpleResponse.setTotal(pageInfo.getTotal());
+ List systemPDFTemplateSelectResponses = systemPDFTemplateEntityList.stream().map(e -> {
+ SystemPDFTemplateSelectResponse systemPDFTemplateSelectResponse = new SystemPDFTemplateSelectResponse();
+ BeanUtils.copyProperties(e, systemPDFTemplateSelectResponse);
+ systemPDFTemplateSelectResponse.setIdStr(String.valueOf(e.getId()));
+ return systemPDFTemplateSelectResponse;
+ }).collect(Collectors.toList());
+ pageSimpleResponse.setList(systemPDFTemplateSelectResponses);
+
+ return ResultVOUtils.success(pageSimpleResponse);
+ }
+
+ @AuthRuleAnnotation("system/pdf/template/save")
+ @PostMapping("/system/pdf/template/save")
+ public BaseResponse save(@RequestBody @Valid SystemPDFTemplateSaveRequest systemPDFTemplateSaveRequest,
+ BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+
+ SystemPDFTemplateEntity systemPDFTemplateEntity = new SystemPDFTemplateEntity();
+ BeanUtils.copyProperties(systemPDFTemplateSaveRequest, systemPDFTemplateEntity);
+
+ systemPDFTemplateEntity.setCreate_time(new Date());
+ systemPDFTemplateEntity.setUpdate_time(new Date());
+
+ boolean b = systemPDFTemplateService.insert(systemPDFTemplateEntity);
+ if (!b) {
+ return ResultVOUtils.error(ResultEnum.NOT_NETWORK);
+ }
+
+ return ResultVOUtils.success();
+ }
+
+ @AuthRuleAnnotation("system/pdf/template/update")
+ @PostMapping("/system/pdf/template/update")
+ public BaseResponse update(@RequestBody SystemPDFTemplateSaveRequest systemPDFTemplateSaveRequest) {
+// systemPDFTemplateSaveRequest.setId(1);
+ systemPDFTemplateSaveRequest.setUpdate_time(new Date());
+ systemPDFTemplateService.updateById(systemPDFTemplateSaveRequest);
+
+ return ResultVOUtils.success("修改成功");
+ }
+
+ @AuthRuleAnnotation("system/pdf/template/delete")
+ @GetMapping("/system/pdf/template/delete")
+ public BaseResponse deleteById(@RequestParam("id") Integer id,
+ @RequestParam("path") String path) {
+
+ if (StringUtils.isNotBlank(path)) {//删除文件
+ File file = new File(path);
+ file.delete();
+ }
+
+ boolean b = systemPDFTemplateService.deleteById(id);
+ if (b)
+ return ResultVOUtils.success("删除成功");
+ else {
+ return ResultVOUtils.error(500, "删除失败");
+ }
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java
index 1aa59921..abf1ce36 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java
@@ -1,13 +1,16 @@
package com.glxp.api.admin.controller.inout;
import com.github.pagehelper.PageInfo;
+import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.req.inout.*;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.inout.WarehouseResponse;
+import com.glxp.api.admin.service.basic.BussinessTypeService;
import com.glxp.api.admin.service.inout.CodesTempService;
import com.glxp.api.admin.service.inout.CodesService;
import com.glxp.api.admin.thread.IoTransInoutService;
+import com.glxp.api.admin.util.DateUtil;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
@@ -16,6 +19,8 @@ import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -27,7 +32,8 @@ public class WareHouseController {
private IoTransInoutService transInoutService;
@Resource
private CodesTempService codesTempService;
-
+ @Resource
+ private BussinessTypeService bussinessTypeService;
@PostMapping("/warehouse/inout/code/deleteCodes")
public BaseResponse deleteCodes(@RequestBody DeleteCodeRequest deleteCodeRequest, BindingResult bindingResult) {
@@ -124,6 +130,42 @@ public class WareHouseController {
return ResultVOUtils.success("导入成功");
}
+
+ //扫码精灵扫码上传
+ @PostMapping("warehouse/inout/scanPost")
+ public BaseResponse postOrders(@RequestBody ScPostOrderRequest postOrderRequest, BindingResult bindingResult) {
+
+ if (bindingResult.hasErrors()) {
+ return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
+ }
+ try {
+ PostOrderRequest.PostOrder postOrder = new PostOrderRequest.PostOrder();
+ postOrder.setOrderId(postOrderRequest.getOrderId());
+ postOrder.setBillType(postOrderRequest.getBillType());
+ BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(postOrderRequest.getBillType());
+ List warehouseEntityList = postOrderRequest.getCodes();
+ String date = DateUtil.formatDateTime(new Date());
+ for (WarehouseEntity warehouseEntity : warehouseEntityList) {
+ warehouseEntity.setActDate(date);
+ warehouseEntity.setMainAction(bussinessTypeEntity.getMainAction());
+ warehouseEntity.setAction(postOrderRequest.getBillType());
+ warehouseEntity.setCorpOrderId(postOrderRequest.getOrderId());
+ warehouseEntity.setFromCorp(postOrderRequest.getFromCorp());
+ warehouseEntity.setFromCorpId(postOrderRequest.getFromCorpId());
+ }
+ postOrder.setCodes(warehouseEntityList);
+ PostOrderRequest commit = new PostOrderRequest();
+ List postOrders = new ArrayList<>();
+ postOrders.add(postOrder);
+ commit.setPostOrder(postOrders);
+ transInoutService.creatOrder(commit);
+ } catch (Exception e) {
+ return ResultVOUtils.error(ResultEnum.NOT_NETWORK);
+ }
+
+ return ResultVOUtils.success("导入成功");
+ }
+
@PostMapping("/warehouse/inout/commit")
public BaseResponse commitOrder(@RequestBody CommitRequest commitRequest,
BindingResult bindingResult) {
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvPrintController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvPrintController.java
index c9f50f29..1340fdf9 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvPrintController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvPrintController.java
@@ -199,7 +199,7 @@ public class InvPrintController {
return ResultVOUtils.success("后台已开始自动更新,请稍后刷新查看");
}
- // 根据存货编码生成内部码
+ // 根据第三方产品ID生成内部码
@GetMapping("/udiwarehouse/stockPrint/importBycode")
public BaseResponse importBycode(FilterStockprintRequest stockprintRequest) {
if (stockprintRequest.getThirdId() == null || stockprintRequest.getThirdId().equals("")) {
@@ -216,6 +216,7 @@ public class InvPrintController {
return ResultVOUtils.success("后台已开始自动更新,请稍后刷新查看");
}
+ //根据产品信息生成内部码
@PostMapping("udiwms/stockprint/postByUdiInfo")
public BaseResponse postByUdiInfo(@RequestBody PostStockPrintRequest postStockPrintRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
@@ -235,6 +236,7 @@ public class InvPrintController {
return ResultVOUtils.success("后台已开始自动更新,请稍后刷新查看!");
}
+ //根据库存产品信息生成内部码
@PostMapping("udiwms/stockprint/postByInvInfo")
public BaseResponse postByInvInfo(@RequestBody PostStockPrintRequest postStockPrintRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
@@ -254,6 +256,7 @@ public class InvPrintController {
return ResultVOUtils.success("后台已开始自动更新,请稍后刷新查看!");
}
+ //根据库存产品信息一键生成内部码
@GetMapping("udiwms/stockprint/postAllByInvInfo")
public BaseResponse postAllByInvInfo(FilterStockprintRequest filterStockprintRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
@@ -273,7 +276,7 @@ public class InvPrintController {
return ResultVOUtils.success("后台已开始自动更新,请稍后刷新查看!");
}
-
+ //其他系统上传参数生成内部码
@PostMapping("udiwms/stockprint/post")
public BaseResponse postInCode(@RequestBody PostStockPrintRequest postStockPrintRequest, BindingResult bindingResult) {
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/itextpdf/PDFDawnloadController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/itextpdf/PDFDawnloadController.java
new file mode 100644
index 00000000..7481dc2b
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/itextpdf/PDFDawnloadController.java
@@ -0,0 +1,258 @@
+package com.glxp.api.admin.controller.itextpdf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
+import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateRelevanceEntity;
+import com.glxp.api.admin.entity.inout.ErpOrderEntity;
+import com.glxp.api.admin.entity.inout.FilterErpOrderRequest;
+import com.glxp.api.admin.entity.inout.OrderEntity;
+import com.glxp.api.admin.req.info.SystemPDFTemplateRequest;
+import com.glxp.api.admin.req.itextpdf.InoutOrderDetailPDFCodeRequest;
+import com.glxp.api.admin.req.itextpdf.InoutOrderDetailPDFFileRequest;
+import com.glxp.api.admin.req.itextpdf.InspectionPDFTemplateRequest;
+import com.glxp.api.admin.service.basic.BussinessTypeService;
+import com.glxp.api.admin.service.info.SystemPDFModuleService;
+import com.glxp.api.admin.service.info.SystemPDFTemplateRelevanceService;
+import com.glxp.api.admin.service.info.SystemPDFTemplateService;
+import com.glxp.api.admin.service.inout.OrderDetailService;
+import com.glxp.api.admin.service.inout.OrderService;
+import com.glxp.api.admin.util.ITextPDFUtils;
+import com.glxp.api.common.enums.ResultEnum;
+import com.glxp.api.common.res.BaseResponse;
+import com.glxp.api.common.util.ResultVOUtils;
+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.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class PDFDawnloadController {
+
+ @Resource
+ private OrderService orderService;
+ @Resource
+ private BussinessTypeService bussinessTypeService;
+ @Resource
+ private OrderDetailService orderDetailService;
+ @Resource
+ private SystemPDFTemplateRelevanceService systemPDFTemplateRelevanceService;
+ @Resource
+ private SystemPDFTemplateService systemPDFTemplateService;
+ @Resource
+ private SystemPDFModuleService systemPDFModuleService;
+
+ /**
+ * 下载pdf文档
+ *
+ * @throws Exception
+ */
+ @GetMapping("/udiwms/pdf/download/test")
+ public void downloadTestPDF(HttpServletRequest request, HttpServletResponse response) throws Exception {
+// ITextPDFUtils.exportPDFTest(request, response);
+ //-----------------------------------------------------------
+ SystemPDFModuleEntity systemPDFModuleEntity = systemPDFModuleService.selectById(1 + "");
+ if (systemPDFModuleEntity != null) {
+ SystemPDFTemplateEntity systemPDFTemplateEntity =
+ systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId()));
+ if (systemPDFTemplateEntity != null) {
+ ITextPDFUtils.exportPDFFromTemplateFileTest(systemPDFTemplateEntity.getPath(), request, response);
+ }
+ }
+ //-----------------------------------------------------------
+ }
+
+ /**
+ * 代码生成,配置从前端传入
+ */
+ @PostMapping("/udiwms/pdf/download/inout/order/success")
+ public void downloadInoutOrderSuccessPDF(@RequestBody InoutOrderDetailPDFCodeRequest inoutOrderDetailPDFCodeRequest, HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ OrderEntity orderEntity = orderService.findById(inoutOrderDetailPDFCodeRequest.getOrderId());
+ if (orderEntity == null) {
+ return;
+ }
+
+ inoutOrderDetailPDFCodeRequest.setFromCorp(orderEntity.getFromCorp());
+ inoutOrderDetailPDFCodeRequest.setFromType(orderEntity.getFromType());
+ BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction());
+ inoutOrderDetailPDFCodeRequest.setActionName(bussinessTypeEntity == null ? " " : bussinessTypeEntity.getName());
+
+ FilterErpOrderRequest filterErpOrderRequest = new FilterErpOrderRequest();
+ filterErpOrderRequest.setOrderIdFk(inoutOrderDetailPDFCodeRequest.getOrderId());
+ List erpOrderEntityList = orderDetailService.filterAllMyErpOrder(filterErpOrderRequest);
+
+ ITextPDFUtils.exportInoutOrderSuccessPDF(inoutOrderDetailPDFCodeRequest, erpOrderEntityList, request, response);
+ }
+
+
+ /**
+ * 代码生成模板,模板数据从数据库获取
+ */
+ @PostMapping("/udiwms/template/pdf/order/detail/code")
+ public void orderDetailPDFFromTemplateCode(
+ @RequestBody InoutOrderDetailPDFCodeRequest inoutOrderDetailPDFCodeRequest,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ OrderEntity orderEntity = orderService.findById(inoutOrderDetailPDFCodeRequest.getOrderId());
+ if (orderEntity == null) {
+ return;
+ }
+
+// Map rMap = inspectionCustomerPDFTemplate(inoutOrderSuccessPDFRequest.getCustomerId());
+// if (Integer.parseInt(String.valueOf(rMap.get("code"))) != 0) {
+// return;
+// }
+// String settingDataJsonString = String.valueOf(rMap.get("data"));
+
+ SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById("1");
+ if (systemPDFTemplateEntity == null) return;
+ String settingDataJsonString = systemPDFTemplateEntity.getParam();
+
+ JSONObject settingDataJson = JSONObject.parseObject(settingDataJsonString);
+ InoutOrderDetailPDFCodeRequest.SettingData settingData =//JSON转实体类
+ JSON.toJavaObject(settingDataJson, InoutOrderDetailPDFCodeRequest.SettingData.class);
+ inoutOrderDetailPDFCodeRequest.setSettingData(settingData);
+ //-----------------------------------------------
+ inoutOrderDetailPDFCodeRequest.setFromCorp(orderEntity.getFromCorp());
+ inoutOrderDetailPDFCodeRequest.setFromType(orderEntity.getFromType());
+ BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction());
+ inoutOrderDetailPDFCodeRequest.setActionName(bussinessTypeEntity == null ? " " : bussinessTypeEntity.getName());
+
+ FilterErpOrderRequest filterErpOrderRequest = new FilterErpOrderRequest();
+ filterErpOrderRequest.setOrderId(inoutOrderDetailPDFCodeRequest.getOrderId());
+ List erpOrderEntityList = orderDetailService.filterAllMyErpOrder(filterErpOrderRequest);
+
+ ITextPDFUtils.exportInoutOrderSuccessPDF(inoutOrderDetailPDFCodeRequest, erpOrderEntityList, request, response);
+ }
+
+ /**
+ * 模板导入,模板文件路径从数据库获取
+ */
+ @PostMapping("/udiwms/pdf/template/order/detail/file")
+ public void orderDetailPDFFromTemplateFile(
+ @RequestBody InoutOrderDetailPDFFileRequest inoutOrderDetailPDFFileRequest,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ OrderEntity orderEntity = orderService.findById(inoutOrderDetailPDFFileRequest.getOrderId());
+ if (orderEntity == null) {
+ return;
+ }
+
+ SystemPDFModuleEntity systemPDFModuleEntity = systemPDFModuleService.selectById(1 + "");
+ if (systemPDFModuleEntity == null) return;
+ SystemPDFTemplateEntity systemPDFTemplateEntity =
+ systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId()));
+ if (systemPDFTemplateEntity == null) return;
+ inoutOrderDetailPDFFileRequest.setPath(systemPDFTemplateEntity.getPath());
+ inoutOrderDetailPDFFileRequest.setRowCount(systemPDFTemplateEntity.getRowCount());
+ inoutOrderDetailPDFFileRequest.setQrcodeCount(systemPDFTemplateEntity.getQrcodeCount());
+ //-----------------------------------------------
+ inoutOrderDetailPDFFileRequest.setFromCorp(orderEntity.getFromCorp());
+ inoutOrderDetailPDFFileRequest.setFromType(orderEntity.getFromType());
+ inoutOrderDetailPDFFileRequest.setActDate(orderEntity.getActDate());
+ BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(orderEntity.getAction());
+ inoutOrderDetailPDFFileRequest.setActionName(bussinessTypeEntity == null ? " " : bussinessTypeEntity.getName());
+
+ FilterErpOrderRequest filterErpOrderRequest = new FilterErpOrderRequest();
+ filterErpOrderRequest.setOrderId(inoutOrderDetailPDFFileRequest.getOrderId());
+ List erpOrderEntityList = orderDetailService.filterAllMyErpOrder(filterErpOrderRequest);
+
+ ITextPDFUtils.exportOrderDetailPDFFromTemplateFile(
+ inoutOrderDetailPDFFileRequest, erpOrderEntityList, request, response);
+ }
+
+ @PostMapping("/udiwms/pdf/template/preview")
+ public BaseResponse previewPDFTemplate(
+ @RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) throws Exception {
+
+
+
+ return ResultVOUtils.success();
+ }
+
+ /**
+ * 订单,模板检测 code
+ */
+ @PostMapping("/udiwms/pdf/template/inspection/order/detail/code")
+ public BaseResponse inspectionOrderDetailPDFFromTemplateCode(
+ @RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) throws Exception {
+
+ OrderEntity orderEntity = orderService.findById(inspectionPDFTemplateRequest.getOrderId());
+ if (orderEntity == null) {
+ return ResultVOUtils.error(ResultEnum.DATA_NOT, "未找到订单");
+ }
+
+ SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById("1");
+ if (systemPDFTemplateEntity == null) return ResultVOUtils.error(ResultEnum.DATA_NOT, "模板错误");
+
+// Map rMap = inspectionCustomerPDFTemplate(inspectionPDFTemplateRequest.getCustomerId());
+// if (Integer.parseInt(String.valueOf(rMap.get("code"))) != 0) {
+// return ResultVOUtils.error(ResultEnum.DATA_NOT, String.valueOf(rMap.get("message")));
+// }
+
+ return ResultVOUtils.success();
+ }
+
+ /**
+ * 订单,模板检测 file
+ */
+ @PostMapping("/udiwms/pdf/template/inspection/order/detail/file")
+ public BaseResponse inspectionOrderDetailPDFFromTemplateFile(
+ @RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) throws Exception {
+
+ OrderEntity orderEntity = orderService.findById(inspectionPDFTemplateRequest.getOrderId());
+ if (orderEntity == null) {
+ return ResultVOUtils.error(ResultEnum.DATA_NOT, "未找到订单");
+ }
+
+ SystemPDFModuleEntity systemPDFModuleEntity = systemPDFModuleService.selectById(1 + "");
+ 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();
+ }
+
+ /**
+ * 检测供应商是否设置模板以及模板是否存在。
+ */
+ public Map inspectionCustomerPDFTemplate(Long customerId) {
+
+ Map rMap = new HashMap<>();
+ rMap.put("code", -1);
+
+ List systemPDFTemplateRelevanceEntityList =
+ systemPDFTemplateRelevanceService.listByCustomerId(customerId);
+ if (systemPDFTemplateRelevanceEntityList.size() < 1) {
+ rMap.put("message", "未设置模板");
+ return rMap;
+ }
+ SystemPDFTemplateRelevanceEntity systemPDFTemplateRelevanceEntity = systemPDFTemplateRelevanceEntityList.get(0);
+
+ SystemPDFTemplateRequest systemPDFTemplateRequest = new SystemPDFTemplateRequest();
+ systemPDFTemplateRequest.setId(systemPDFTemplateRelevanceEntity.getTemplate_id());
+
+ SystemPDFTemplateEntity systemPDFTemplateEntity =
+ systemPDFTemplateService.findSystemPDFTemplate(systemPDFTemplateRequest);
+ if (systemPDFTemplateEntity == null) {
+ rMap.put("message", "模板错误");
+ return rMap;
+ }
+
+ rMap.put("code", 0);
+ rMap.put("message", "成功");
+ rMap.put("data", systemPDFTemplateEntity.getParam());
+ return rMap;
+ }
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/scdemon/ScdemonController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/scdemon/ScdemonController.java
new file mode 100644
index 00000000..f2932f26
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/scdemon/ScdemonController.java
@@ -0,0 +1,4 @@
+package com.glxp.api.admin.controller.scdemon;
+
+public class ScdemonController {
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderController.java
index e2fb6f31..667db9cf 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderController.java
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.constant.BasicProcessStatus;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
+import com.glxp.api.admin.entity.inout.ErpOrderEntity;
+import com.glxp.api.admin.entity.inout.FilterErpOrderRequest;
import com.glxp.api.admin.entity.thrsys.ThrOrderDetailEntity;
import com.glxp.api.admin.entity.thrsys.ThrOrderEntity;
import com.glxp.api.admin.entity.thrsys.ThrOrderImportDetailEntity;
@@ -14,6 +16,7 @@ import com.glxp.api.admin.req.thrsys.*;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.inout.ErpOrderResponse;
import com.glxp.api.admin.service.info.SystemParamConfigService;
+import com.glxp.api.admin.service.inout.OrderDetailService;
import com.glxp.api.admin.service.thrsys.ThrOrderDetailService;
import com.glxp.api.admin.service.thrsys.ThrOrderImportDetailService;
import com.glxp.api.admin.service.thrsys.ThrOrderImportLogService;
@@ -56,6 +59,9 @@ public class ThrOrderController {
@Resource
ThrOrderImportService thrOrderImportService;
+ @Resource
+ private OrderDetailService myErpOrderService;
+
@GetMapping("/udiwms/thrsys/getOrders")
public BaseResponse getOrders(FilterThrOrderRequest filterThrOrderRequest,
BindingResult bindingResult) {
@@ -154,11 +160,26 @@ public class ThrOrderController {
}
String id = deleteRequest.getId();
ThrOrderEntity thrOrderEntity = thrOrderService.findById(id);
- boolean b = thrOrderService.deleteById(id);
- thrOrderDetailService.deleteByOrderIdFk(thrOrderEntity.getId() + "");
- if (b)
- return ResultVOUtils.success("删除成功");
- else return ResultVOUtils.error(500, "无法删除!");
+ String msg = selectDelect(thrOrderEntity);
+ if (msg == null) {
+ boolean b = thrOrderService.deleteById(id);
+ thrOrderDetailService.deleteByOrderIdFk(thrOrderEntity.getId() + "");
+ if (b)
+ return ResultVOUtils.success("删除成功");
+ else return ResultVOUtils.error(500, "无法删除!");
+ } else return ResultVOUtils.error(500, msg);
+
+ }
+
+ public String selectDelect(ThrOrderEntity thrOrderEntity) {
+ FilterErpOrderRequest filterErpOrderRequest = new FilterErpOrderRequest();
+ filterErpOrderRequest.setErpOrderId(thrOrderEntity.getBillNo());
+ List erpOrderEntities = myErpOrderService.filterAllMyErpOrder(filterErpOrderRequest);
+ if (erpOrderEntities != null && erpOrderEntities.size() > 0) {
+ return "单据" + thrOrderEntity.getBillNo() + "已于出入库单据关联,无法删除";
+ } else {
+ return null;
+ }
}
@RequestMapping("/udiwms/thrsys/order/delAll")
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderImportLogController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderImportLogController.java
index fa5a5de1..7bedd9d2 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderImportLogController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrOrderImportLogController.java
@@ -154,11 +154,20 @@ public class ThrOrderImportLogController {
continue;
}
// 滤过第一行标题
- for (int k = sheet.getFirstRowNum(); k <= sheet.getLastRowNum(); k++) {
+ row = sheet.getRow(0);
+ if ((row.getCell(0) == null || row.getCell(1) == null || row.getCell(2) == null
+ || row.getCell(3) == null || row.getCell(4) == null || row.getCell(5) == null|| row.getCell(6) == null) ||
+ (!"单据号".equals(row.getCell(0).getStringCellValue())
+ || !"单据日期".equals(row.getCell(1).getStringCellValue())
+ || !"往来单位ID".equals(row.getCell(2).getStringCellValue())
+ || !"往来单位名称".equals(row.getCell(3).getStringCellValue())
+ || !"单据类型".equals(row.getCell(4).getStringCellValue())
+ || !"单据状态".equals(row.getCell(5).getStringCellValue())
+ || !"产品ID".equals(row.getCell(6).getStringCellValue()))) {
+ return ResultVOUtils.error(500, "文件格式错误!");
+ }
+ for (int k = sheet.getFirstRowNum()+1; k <= sheet.getLastRowNum(); k++) {
row = sheet.getRow(k);
- if (row == null || row.getFirstCellNum() == k) {
- continue;
- }
ThrOrderImportDetailEntity corpImportDetailEntity = new ThrOrderImportDetailEntity();
Cell cell1 = row.getCell(0);
if (cell1 != null) {
@@ -189,9 +198,9 @@ public class ThrOrderImportLogController {
cell5.setCellType(CellType.STRING);
String billType = cell5.getStringCellValue();
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByName(billType);
- if(bussinessTypeEntity!=null){
+ if (bussinessTypeEntity != null) {
corpImportDetailEntity.setBillType(bussinessTypeEntity.getAction());
- }else
+ } else
corpImportDetailEntity.setBillType(billType);
@@ -217,20 +226,43 @@ public class ThrOrderImportLogController {
Cell cell9 = row.getCell(8);
if (cell9 != null) {
cell9.setCellType(CellType.STRING);
- corpImportDetailEntity.setProductDate(cell9.getStringCellValue());
+ corpImportDetailEntity.setSpec(cell9.getStringCellValue());
}
Cell cell10 = row.getCell(9);
if (cell10 != null) {
cell10.setCellType(CellType.STRING);
- corpImportDetailEntity.setExpireDate(cell10.getStringCellValue());
+ corpImportDetailEntity.setBatchNo(cell10.getStringCellValue());
}
Cell cell11 = row.getCell(10);
- corpImportDetailEntity.setCount((int) cell11.getNumericCellValue());
+ if (cell11 != null) {
+ cell11.setCellType(CellType.STRING);
+ corpImportDetailEntity.setProductDate(cell11.getStringCellValue());
+ }
Cell cell12 = row.getCell(11);
- corpImportDetailEntity.setReCount((int) cell12.getNumericCellValue());
+ if (cell12 != null) {
+ cell12.setCellType(CellType.STRING);
+ corpImportDetailEntity.setExpireDate(cell12.getStringCellValue());
+ }
+
+ Cell cell13 = row.getCell(12);
+ if (cell13 != null) {
+ cell13.setCellType(CellType.STRING);
+ String count = cell13.getStringCellValue();
+ if (count != null && !"".equals(count)) {
+ corpImportDetailEntity.setCount(Integer.parseInt(count));
+ }
+ }
+ Cell cell14 = row.getCell(13);
+ if (cell14 != null) {
+ cell14.setCellType(CellType.STRING);
+ String count = cell14.getStringCellValue();
+ if (count != null && !"".equals(count)) {
+ corpImportDetailEntity.setReCount(Integer.parseInt(count));
+ }
+ }
corpImportDetailEntity.setThirdSysFk(thirdSys);
corpImportDetailEntity.setGenKeyFk(genKey);
diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrProductsController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrProductsController.java
index 1f21653d..6e75b2bf 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrProductsController.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/controller/thrsys/ThrProductsController.java
@@ -4,11 +4,14 @@ import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.constant.BasicProcessStatus;
import com.glxp.api.admin.entity.thrsys.ThrProductsEntity;
import com.glxp.api.admin.entity.thrsys.ThrProductsImportLogEntity;
+import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.api.admin.req.inout.DeleteRequest;
import com.glxp.api.admin.req.thrsys.FilterThrProductsRequest;
import com.glxp.api.admin.req.thrsys.PostThrProductsRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.ErpProductsResponse;
+import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
+import com.glxp.api.admin.service.basic.UdiRelevanceService;
import com.glxp.api.admin.service.thrsys.ThrProductsImportLogService;
import com.glxp.api.admin.service.thrsys.ThrProductsService;
import com.glxp.api.admin.thread.ThrProductsDlService;
@@ -35,6 +38,8 @@ public class ThrProductsController {
private ThrProductsDlService thrProductsDlService;
@Resource
ThrProductsImportLogService thrProductsImportLogService;
+ @Resource
+ UdiRelevanceService udiRelevanceService;
@GetMapping("/udiwms/thrsys/getThrProducts")
@@ -61,11 +66,48 @@ public class ThrProductsController {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
- String id = deleteRequest.getId();
- thrProductsService.deleteById(id);
+ if (deleteRequest.getIds() != null && deleteRequest.getIds().size() > 0) {
+ for (String id : deleteRequest.getIds()) {
+ selectDetale(id);
+ }
+ } else {
+ String id = deleteRequest.getId();
+ String msg = selectDetale(id);
+ if (msg != null) {
+ return ResultVOUtils.error(500, msg);
+ }
+ }
return ResultVOUtils.success("删除成功");
}
+
+ public String selectDetale(String id) {
+ ThrProductsEntity thrProductsEntity = thrProductsService.selectById(id);
+ if (thrProductsEntity != null) {
+ FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
+ if ("thirdId".equals(thrProductsEntity.getThirdSysFk())) {
+ filterUdiInfoRequest.setThirdId(thrProductsEntity.getCode());
+ } else if ("thirdId1".equals(thrProductsEntity.getThirdSysFk())) {
+ filterUdiInfoRequest.setThirdId(thrProductsEntity.getCode());
+ } else if ("thirdId2".equals(thrProductsEntity.getThirdSysFk())) {
+ filterUdiInfoRequest.setThirdId(thrProductsEntity.getCode());
+ } else if ("thirdId3".equals(thrProductsEntity.getThirdSysFk())) {
+ filterUdiInfoRequest.setThirdId(thrProductsEntity.getCode());
+ } else if ("thirdId4".equals(thrProductsEntity.getThirdSysFk())) {
+ filterUdiInfoRequest.setThirdId(thrProductsEntity.getCode());
+ }
+ List udiRelevanceResponses = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest);
+ if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) {
+ return "该产品已与UDI码关联,无法删除!";
+ }
+ }
+ boolean b = thrProductsService.deleteById(id);
+ if (b)
+ return null;
+ else return "删除失败!";
+ }
+
+
@RequestMapping("/udiwms/thrsys/products/delAll")
public BaseResponse delAll() {
thrProductsService.deleteAll();
diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFModuleDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFModuleDao.java
new file mode 100644
index 00000000..caa31f9b
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFModuleDao.java
@@ -0,0 +1,26 @@
+package com.glxp.api.admin.dao.info;
+
+import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
+import com.glxp.api.admin.req.info.SystemPDFModuleRequest;
+import com.glxp.api.admin.req.info.SystemPDFModuleSaveRequest;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SystemPDFModuleDao {
+
+ List queryPage(SystemPDFModuleRequest systemPDFModuleRequest);
+
+ List listPDFModules();
+
+ SystemPDFModuleEntity findSystemPDFModule(SystemPDFModuleRequest systemPDFModuleRequest);
+
+ SystemPDFModuleEntity selectById(String id);
+
+ boolean updateById(SystemPDFModuleSaveRequest systemPDFModuleSaveRequest);
+
+ boolean insert(SystemPDFModuleEntity systemPDFModuleEntity);
+
+ boolean deleteById(Integer id);
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateDao.java
new file mode 100644
index 00000000..d0c1f1f8
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateDao.java
@@ -0,0 +1,26 @@
+package com.glxp.api.admin.dao.info;
+
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.req.info.SystemPDFTemplateRequest;
+import com.glxp.api.admin.req.info.SystemPDFTemplateSaveRequest;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SystemPDFTemplateDao {
+
+ List queryPage(SystemPDFTemplateRequest systemPDFTemplateRequest);
+
+ List listPDFTemplates();
+
+ SystemPDFTemplateEntity findSystemPDFTemplate(SystemPDFTemplateRequest systemPDFTemplateRequest);
+
+ SystemPDFTemplateEntity selectById(String id);
+
+ boolean updateById(SystemPDFTemplateSaveRequest systemPDFTemplateSaveRequest);
+
+ boolean insert(SystemPDFTemplateEntity systemPDFTemplateEntity);
+
+ boolean deleteById(Integer id);
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateRelevanceDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateRelevanceDao.java
new file mode 100644
index 00000000..2594093a
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/dao/info/SystemPDFTemplateRelevanceDao.java
@@ -0,0 +1,49 @@
+package com.glxp.api.admin.dao.info;
+
+import com.glxp.api.admin.entity.info.SystemPDFTemplateRelevanceEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+
+@Mapper
+public interface SystemPDFTemplateRelevanceDao {
+
+ /**
+ * 根据 customerId 查询
+ * @param customerId 传入的 customerId
+ * @return
+ */
+ List listByCustomerId(Long customerId);
+
+ /**
+ * 根据 多个 customerId 查询
+ * @param customerIds 传入的 customerIds
+ * @return
+ */
+ List listByCustomerIdIn(List customerIds);
+
+ /**
+ * 根据 template_id 查询 customer_id
+ * @param templateId 传入的 templateId
+ * @return
+ */
+ List listByTemplateId(int templateId);
+
+ /**
+ * 批量插入
+ * @param systemPDFTemplateRelevanceEntityList
+ * @return
+ */
+ int insertSystemPDFTemplateRelevanceAll(List systemPDFTemplateRelevanceEntityList);
+
+ boolean insert(SystemPDFTemplateRelevanceEntity systemPDFTemplateRelevanceEntity);
+
+
+ /**
+ * 根据 customerId 删除
+ * @param customerId
+ * @return
+ */
+ boolean deleteByCustomerId(Long customerId);
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFModuleEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFModuleEntity.java
new file mode 100644
index 00000000..c9a7a15e
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFModuleEntity.java
@@ -0,0 +1,18 @@
+package com.glxp.api.admin.entity.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFModuleEntity {
+
+ private int id;
+ private String name;
+ private String param;
+ private String fieldExplain;
+ private int templateId;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateEntity.java
new file mode 100644
index 00000000..4b7284b8
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateEntity.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.entity.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFTemplateEntity {
+
+ private int id;
+ private String name;
+ private int type;
+ private int module;
+ private String param;
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateRelevanceEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateRelevanceEntity.java
new file mode 100644
index 00000000..1fc86fd8
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/info/SystemPDFTemplateRelevanceEntity.java
@@ -0,0 +1,15 @@
+package com.glxp.api.admin.entity.info;
+
+import lombok.Data;
+
+/**
+ * 用户角色对应表
+ */
+@Data
+public class SystemPDFTemplateRelevanceEntity {
+ private int id;
+ private int template_id;
+ private Long customerId;
+ private int admin_id;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderDetailEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderDetailEntity.java
new file mode 100644
index 00000000..0b7b308f
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderDetailEntity.java
@@ -0,0 +1,20 @@
+package com.glxp.api.admin.entity.inout;
+
+import lombok.Data;
+
+@Data
+public class StockOrderDetailEntity {
+
+ private String id;
+ private String orderIdFk;
+ private String productId;
+ private String productName;
+ private String spec;
+ private String batchNo;
+ private String expireDate;
+ private String productDate;
+ private String count;
+ private String reCount;
+ private String sweepCount;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderEntity.java
new file mode 100644
index 00000000..e70033ad
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockOrderEntity.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.entity.inout;
+
+import lombok.Data;
+
+@Data
+public class StockOrderEntity {
+
+ 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 status2;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockQRCodeTextEntity.java b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockQRCodeTextEntity.java
new file mode 100644
index 00000000..e4057f34
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/entity/inout/StockQRCodeTextEntity.java
@@ -0,0 +1,24 @@
+package com.glxp.api.admin.entity.inout;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class StockQRCodeTextEntity {
+
+ private String id;
+ private String orderId;
+ private String detailId;
+ private String text;
+ private String textTag;
+ private String status;
+ private String param;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date create_time;
+ private Date update_time;
+
+ private String count;
+ private String reCount;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleRequest.java
new file mode 100644
index 00000000..72fc06d7
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleRequest.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.req.info;
+
+import com.glxp.api.admin.req.ListPageRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SystemPDFModuleRequest extends ListPageRequest {
+
+ private int id;
+ private String name;
+ private String param;
+ private String fieldExplain;
+ private int templateId;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleSaveRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleSaveRequest.java
new file mode 100644
index 00000000..caf4220d
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFModuleSaveRequest.java
@@ -0,0 +1,18 @@
+package com.glxp.api.admin.req.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFModuleSaveRequest {
+
+ private int id;
+ private String name;
+ private String param;
+ private String fieldExplain;
+ private int templateId;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateRequest.java
new file mode 100644
index 00000000..4227ee38
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateRequest.java
@@ -0,0 +1,24 @@
+package com.glxp.api.admin.req.info;
+
+import com.glxp.api.admin.req.ListPageRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SystemPDFTemplateRequest extends ListPageRequest {
+
+ private int id;
+ private String name;
+ private int type;
+ private int module;
+ private String param;
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateSaveRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateSaveRequest.java
new file mode 100644
index 00000000..60c8018c
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/info/SystemPDFTemplateSaveRequest.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.req.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFTemplateSaveRequest {
+
+ private int id;
+ private String name;
+ private int type;
+ private int module;
+ private String param;
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/inout/PostOrderRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/inout/PostOrderRequest.java
index 39ab54b8..791072e8 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/req/inout/PostOrderRequest.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/inout/PostOrderRequest.java
@@ -5,7 +5,6 @@ import lombok.Data;
import java.util.List;
-@Data
public class PostOrderRequest {
List postOrders;
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/inout/ScPostOrderRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/inout/ScPostOrderRequest.java
new file mode 100644
index 00000000..1f6bd402
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/inout/ScPostOrderRequest.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.req.inout;
+
+import com.glxp.api.admin.entity.inout.WarehouseEntity;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 扫码精灵扫码上传
+ */
+@Data
+public class ScPostOrderRequest {
+
+ List codes;
+ private String billType;
+ private String orderId;
+ private String fromCorpId;
+ private String fromCorp;
+ private String actor;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFCodeRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFCodeRequest.java
new file mode 100644
index 00000000..bc56a5a0
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFCodeRequest.java
@@ -0,0 +1,161 @@
+package com.glxp.api.admin.req.itextpdf;
+
+import lombok.Data;
+
+@Data
+public class InoutOrderDetailPDFCodeRequest {
+ private String orderId;
+ private SettingData settingData;
+
+ private String actionName;
+ private String fromCorp;
+ private String fromType;
+ private Long customerId;
+
+ public static class SettingData {
+ private boolean orderIdEnable;
+ private int orderIdWidth;
+ private boolean actionEnable;
+ private int actionWidth;
+ private boolean fromCorpEnable;
+ private int fromCorpWidth;
+ private boolean fromTypeEnable;
+ private int fromTypeWidth;
+
+ private boolean numberEnable;
+ private int numberWidth;
+ private boolean coNameEnable;
+ private int coNameWidth;
+ private boolean packSpecEnable;
+ private int packSpecWidth;
+ private boolean batchNoEnable;
+ private int batchNoWidth;
+ private boolean countEnable;
+ private int countWidth;
+ private boolean productCompanyEnable;
+ private int productCompanyWidth;
+ private boolean authCodeEnable;
+ private int authCodeWidth;
+
+ public boolean getOrderIdEnable() { return orderIdEnable; }
+ public void setOrderIdEnable(boolean orderIdEnable) {
+ this.orderIdEnable = orderIdEnable;
+ }
+ public int getOrderIdWidth() {
+ return orderIdWidth;
+ }
+ public void setOrderIdWidth(int orderIdWidth) {
+ this.orderIdWidth = orderIdWidth;
+ }
+
+ public boolean getActionEnable() { return actionEnable; }
+ public void setActionEnable(boolean actionEnable) {
+ this.actionEnable = actionEnable;
+ }
+ public int getActionWidth() {
+ return actionWidth;
+ }
+ public void setActionWidth(int actionWidth) {
+ this.actionWidth = actionWidth;
+ }
+
+ public boolean getFromCorpEnable() { return fromCorpEnable; }
+ public void setFromCorpEnable(boolean fromCorpEnable) {
+ this.fromCorpEnable = fromCorpEnable;
+ }
+ public int getFromCorpWidth() {
+ return fromCorpWidth;
+ }
+ public void setFromCorpWidth(int fromCorpWidth) {
+ this.fromCorpWidth = fromCorpWidth;
+ }
+
+ public boolean getFromTypeEnable() { return fromTypeEnable; }
+ public void setFromTypeEnable(boolean fromTypeEnable) {
+ this.fromTypeEnable = fromTypeEnable;
+ }
+ public int getFromTypeWidth() {
+ return fromTypeWidth;
+ }
+ public void setFromTypeWidth(int fromTypeWidth) {
+ this.fromTypeWidth = fromTypeWidth;
+ }
+
+ public boolean getNumberEnable() { return numberEnable; }
+ public void setNumberEnable(boolean numberEnable) {
+ this.numberEnable = numberEnable;
+ }
+ public int getNumberWidth() {
+ return numberWidth;
+ }
+ public void setNumberWidth(int numberWidth) {
+ this.numberWidth = numberWidth;
+ }
+
+ public boolean getCoNameEnable() { return coNameEnable; }
+ public void setCoNameEnable(boolean coNameEnable) {
+ this.coNameEnable = coNameEnable;
+ }
+ public int getCoNameWidth() {
+ return coNameWidth;
+ }
+ public void setCoNameWidth(int coNameWidth) {
+ this.coNameWidth = coNameWidth;
+ }
+
+ public boolean getPackSpecEnable() { return packSpecEnable; }
+ public void setPackSpecEnable(boolean packSpecEnable) {
+ this.packSpecEnable = packSpecEnable;
+ }
+ public int getPackSpecWidth() {
+ return packSpecWidth;
+ }
+ public void setPackSpecWidth(int packSpecWidth) {
+ this.packSpecWidth = packSpecWidth;
+ }
+
+ public boolean getBatchNoEnable() { return batchNoEnable; }
+ public void setBatchNoEnable(boolean batchNoEnable) {
+ this.batchNoEnable = batchNoEnable;
+ }
+ public int getBatchNoWidth() {
+ return batchNoWidth;
+ }
+ public void setBatchNoWidth(int batchNoWidth) {
+ this.batchNoWidth = batchNoWidth;
+ }
+
+ public boolean getCountEnable() { return countEnable; }
+ public void setCountEnable(boolean countEnable) {
+ this.countEnable = countEnable;
+ }
+ public int getCountWidth() {
+ return countWidth;
+ }
+ public void setCountWidth(int countWidth) {
+ this.countWidth = countWidth;
+ }
+
+ public boolean getProductCompanyEnable() { return productCompanyEnable; }
+ public void setProductCompanyEnable(boolean productCompanyEnable) {
+ this.productCompanyEnable = productCompanyEnable;
+ }
+ public int getProductCompanyWidth() {
+ return productCompanyWidth;
+ }
+ public void setProductCompanyWidth(int productCompanyWidth) {
+ this.productCompanyWidth = productCompanyWidth;
+ }
+
+ public boolean getAuthCodeEnable() { return authCodeEnable; }
+ public void setAuthCodeEnable(boolean authCodeEnable) {
+ this.authCodeEnable = authCodeEnable;
+ }
+ public int getAuthCodeWidth() {
+ return authCodeWidth;
+ }
+ public void setAuthCodeWidth(int authCodeWidth) {
+ this.authCodeWidth = authCodeWidth;
+ }
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFFileRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFFileRequest.java
new file mode 100644
index 00000000..1c3de5c2
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InoutOrderDetailPDFFileRequest.java
@@ -0,0 +1,18 @@
+package com.glxp.api.admin.req.itextpdf;
+
+import lombok.Data;
+
+@Data
+public class InoutOrderDetailPDFFileRequest {
+ private String orderId;
+
+ private String actionName;
+ private String fromCorp;
+ private String fromType;
+ private String actDate;
+ private Long customerId;
+
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InspectionPDFTemplateRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InspectionPDFTemplateRequest.java
new file mode 100644
index 00000000..1f4760d2
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/InspectionPDFTemplateRequest.java
@@ -0,0 +1,17 @@
+package com.glxp.api.admin.req.itextpdf;
+
+import lombok.Data;
+
+@Data
+public class InspectionPDFTemplateRequest {
+
+ private String queryId;
+
+ private String id;
+ private int type;
+ private int module;
+
+ private String orderId;
+ private Long customerId;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/StockQRCodeTextPDFTemplateRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/StockQRCodeTextPDFTemplateRequest.java
new file mode 100644
index 00000000..f1abfbdf
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/req/itextpdf/StockQRCodeTextPDFTemplateRequest.java
@@ -0,0 +1,19 @@
+package com.glxp.api.admin.req.itextpdf;
+
+import lombok.Data;
+
+@Data
+public class StockQRCodeTextPDFTemplateRequest {
+
+ private String id;
+ private String orderId;
+ private String billNo;
+ private String detailId;
+
+ private String actionName;
+ private String text;
+
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/basic/BasicThirdSysResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/basic/BasicThirdSysResponse.java
index 1b4a076a..6f70e5fb 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/res/basic/BasicThirdSysResponse.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/basic/BasicThirdSysResponse.java
@@ -4,8 +4,15 @@ import lombok.Data;
@Data
public class BasicThirdSysResponse {
+ public BasicThirdSysResponse() {
+
+ }
+
+ public BasicThirdSysResponse(String thirdId, String thirdName) {
+ this.thirdId = thirdId;
+ this.thirdName = thirdName;
+ }
- private String id;
private String thirdId;
private String thirdName;
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrBtResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrBtResponse.java
new file mode 100644
index 00000000..e979b464
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrBtResponse.java
@@ -0,0 +1,13 @@
+package com.glxp.api.admin.res.basic;
+
+import lombok.Data;
+
+@Data
+public class SrBtResponse {
+
+ private String mainAction;
+ private String action;
+ private String name;
+ private String thirdSysFk;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrtBasicUnitResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrtBasicUnitResponse.java
new file mode 100644
index 00000000..b9cc7723
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/basic/SrtBasicUnitResponse.java
@@ -0,0 +1,10 @@
+package com.glxp.api.admin.res.basic;
+
+import lombok.Data;
+
+@Data
+public class SrtBasicUnitResponse {
+
+ private String unitId;
+ private String unitName;
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleResponse.java
new file mode 100644
index 00000000..a46398fc
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleResponse.java
@@ -0,0 +1,20 @@
+package com.glxp.api.admin.res.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFModuleResponse {
+
+ private int id;
+ private String name;
+ private String param;
+ private String fieldExplain;
+ private int templateId;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+
+ private String templateName;
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleSelectResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleSelectResponse.java
new file mode 100644
index 00000000..21e4ca34
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFModuleSelectResponse.java
@@ -0,0 +1,12 @@
+package com.glxp.api.admin.res.info;
+
+import lombok.Data;
+
+@Data
+public class SystemPDFModuleSelectResponse {
+
+ private int id;
+ private String idStr;
+ private String name;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateResponse.java
new file mode 100644
index 00000000..b596411d
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateResponse.java
@@ -0,0 +1,21 @@
+package com.glxp.api.admin.res.info;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SystemPDFTemplateResponse {
+
+ private int id;
+ private String name;
+ private int type;
+ private int module;
+ private String param;
+ private String path;
+ private int rowCount;
+ private int qrcodeCount;
+ private String remark;
+ private Date create_time;
+ private Date update_time;
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateSelectResponse.java b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateSelectResponse.java
new file mode 100644
index 00000000..dcbe1f42
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/res/info/SystemPDFTemplateSelectResponse.java
@@ -0,0 +1,12 @@
+package com.glxp.api.admin.res.info;
+
+import lombok.Data;
+
+@Data
+public class SystemPDFTemplateSelectResponse {
+
+ private int id;
+ private String idStr;
+ private String name;
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFModuleService.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFModuleService.java
new file mode 100644
index 00000000..be713a66
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFModuleService.java
@@ -0,0 +1,26 @@
+package com.glxp.api.admin.service.info;
+
+
+import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
+import com.glxp.api.admin.req.info.SystemPDFModuleRequest;
+import com.glxp.api.admin.req.info.SystemPDFModuleSaveRequest;
+
+import java.util.List;
+
+
+public interface SystemPDFModuleService {
+
+ List queryPage(SystemPDFModuleRequest systemPDFModuleRequest);
+
+ List listPDFModules(Integer page, Integer limit);
+
+ SystemPDFModuleEntity findSystemPDFModule(SystemPDFModuleRequest systemPDFModuleRequest);
+
+ SystemPDFModuleEntity selectById(String id);
+
+ boolean updateById(SystemPDFModuleSaveRequest systemPDFModuleSaveRequest);
+
+ boolean insert(SystemPDFModuleEntity systemPDFModuleEntity);
+
+ boolean deleteById(Integer id);
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateRelevanceService.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateRelevanceService.java
new file mode 100644
index 00000000..ba113655
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateRelevanceService.java
@@ -0,0 +1,24 @@
+package com.glxp.api.admin.service.info;
+
+
+import com.glxp.api.admin.entity.info.SystemPDFTemplateRelevanceEntity;
+
+import java.util.List;
+
+public interface SystemPDFTemplateRelevanceService {
+
+ List listByCustomerId(Long customerId);
+
+ List listByCustomerIdIn(List customerIds);
+
+ List listByTemplateId(int templateId);
+
+ int insertSystemPDFTemplateRelevanceAll(List systemPDFTemplateRelevanceEntityList);
+
+ boolean insert(SystemPDFTemplateRelevanceEntity systemPDFTemplateRelevanceEntity);
+
+ int insertRolesCustomerIdAll(List templates, Long customerId);
+
+ boolean deleteByCustomerId(Long customerId);
+
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateService.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateService.java
new file mode 100644
index 00000000..67cfabd8
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/SystemPDFTemplateService.java
@@ -0,0 +1,26 @@
+package com.glxp.api.admin.service.info;
+
+
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.req.info.SystemPDFTemplateRequest;
+import com.glxp.api.admin.req.info.SystemPDFTemplateSaveRequest;
+
+import java.util.List;
+
+
+public interface SystemPDFTemplateService {
+
+ List queryPage(SystemPDFTemplateRequest systemPDFTemplateRequest);
+
+ List listPDFTemplates(Integer page, Integer limit);
+
+ SystemPDFTemplateEntity findSystemPDFTemplate(SystemPDFTemplateRequest systemPDFTemplateRequest);
+
+ SystemPDFTemplateEntity selectById(String id);
+
+ boolean updateById(SystemPDFTemplateSaveRequest systemPDFTemplateSaveRequest);
+
+ boolean insert(SystemPDFTemplateEntity systemPDFTemplateEntity);
+
+ boolean deleteById(Integer id);
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFModuleServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFModuleServiceImpl.java
new file mode 100644
index 00000000..1301c755
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFModuleServiceImpl.java
@@ -0,0 +1,62 @@
+package com.glxp.api.admin.service.info.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.glxp.api.admin.dao.info.SystemPDFModuleDao;
+import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
+import com.glxp.api.admin.req.info.SystemPDFModuleRequest;
+import com.glxp.api.admin.req.info.SystemPDFModuleSaveRequest;
+import com.glxp.api.admin.service.info.SystemPDFModuleService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class SystemPDFModuleServiceImpl implements SystemPDFModuleService {
+ @Resource
+ SystemPDFModuleDao systemPDFModuleDao;
+
+ @Override
+ public List queryPage(SystemPDFModuleRequest SystemPDFModuleRequest) {
+ int offset = (SystemPDFModuleRequest.getPage() - 1) * SystemPDFModuleRequest.getLimit();
+ PageHelper.offsetPage(offset, SystemPDFModuleRequest.getLimit());
+ List list = systemPDFModuleDao.queryPage(SystemPDFModuleRequest);
+ return list;
+ }
+
+ @Override
+ public List listPDFModules(Integer page, Integer limit) {
+ page = page != null && page > 0 ? page : 1;
+ limit = limit != null && limit > 0 && limit < 100 ? limit : 100;
+ int offset = (page - 1) * limit;
+ PageHelper.offsetPage(offset, limit);
+ List list = systemPDFModuleDao.listPDFModules();
+ return list;
+ }
+
+ @Override
+ public SystemPDFModuleEntity findSystemPDFModule(SystemPDFModuleRequest systemPDFModuleRequest) {
+ return systemPDFModuleDao.findSystemPDFModule(systemPDFModuleRequest);
+ }
+
+ @Override
+ public SystemPDFModuleEntity selectById(String id) {
+ return systemPDFModuleDao.selectById(id);
+ }
+
+ @Override
+ public boolean updateById(SystemPDFModuleSaveRequest systemPDFModuleSaveRequest) {
+
+ return systemPDFModuleDao.updateById(systemPDFModuleSaveRequest);
+ }
+
+ @Override
+ public boolean insert(SystemPDFModuleEntity systemPDFModuleEntity) {
+ return systemPDFModuleDao.insert(systemPDFModuleEntity);
+ }
+
+ @Override
+ public boolean deleteById(Integer id) {
+ return systemPDFModuleDao.deleteById(id);
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateRelevanceServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateRelevanceServiceImpl.java
new file mode 100644
index 00000000..facdfd2a
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateRelevanceServiceImpl.java
@@ -0,0 +1,104 @@
+package com.glxp.api.admin.service.info.impl;
+
+import com.glxp.api.admin.dao.info.SystemPDFTemplateRelevanceDao;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateRelevanceEntity;
+import com.glxp.api.admin.service.info.SystemPDFTemplateRelevanceService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class SystemPDFTemplateRelevanceServiceImpl implements SystemPDFTemplateRelevanceService {
+
+ @Resource
+ private SystemPDFTemplateRelevanceDao systemPDFTemplateRelevanceDao;
+
+ /**
+ * 根据 customerId 获取模板id
+ * @param customerId
+ * @return
+ */
+ @Override
+ public List listByCustomerId(Long customerId) {
+ return systemPDFTemplateRelevanceDao.listByCustomerId(customerId);
+ }
+
+ /**
+ * 根据多个 customerId 查询角色列表
+ * @param customerIds
+ * @return
+ */
+ @Override
+ public List listByCustomerIdIn(List customerIds) {
+ if (customerIds.isEmpty()) {
+ return Collections.emptyList();
+ }
+ return systemPDFTemplateRelevanceDao.listByCustomerIdIn(customerIds);
+ }
+
+ /**
+ * 根据 roleId 获取 customerId
+ * @param templateId
+ * @return
+ */
+ @Override
+ public List listByTemplateId(int templateId) {
+ return systemPDFTemplateRelevanceDao.listByTemplateId(templateId);
+ }
+
+ /**
+ * 批量插入
+ * @param systemPDFTemplateRelevanceEntityList
+ * @return
+ */
+ @Override
+ public int insertSystemPDFTemplateRelevanceAll(List systemPDFTemplateRelevanceEntityList) {
+
+ if (systemPDFTemplateRelevanceEntityList == null || systemPDFTemplateRelevanceEntityList.isEmpty()) {
+ return 0;
+ }
+
+ return systemPDFTemplateRelevanceDao.insertSystemPDFTemplateRelevanceAll(systemPDFTemplateRelevanceEntityList);
+ }
+
+ @Override
+ public boolean insert(SystemPDFTemplateRelevanceEntity systemPDFTemplateRelevanceEntity) {
+ return systemPDFTemplateRelevanceDao.insert(systemPDFTemplateRelevanceEntity);
+ }
+
+ /**
+ * 根据 模板ids 和 customerId 批量插入
+ * @param templates
+ * @param customerId
+ * @return
+ */
+ @Override
+ public int insertRolesCustomerIdAll(List templates, Long customerId) {
+
+ List systemPDFTemplateRelevanceEntityList = templates.stream().map(aLong -> {
+ SystemPDFTemplateRelevanceEntity systemPDFTemplateRelevanceEntity = new SystemPDFTemplateRelevanceEntity();
+ systemPDFTemplateRelevanceEntity.setTemplate_id(aLong);
+ systemPDFTemplateRelevanceEntity.setCustomerId(customerId);
+ return systemPDFTemplateRelevanceEntity;
+ }).collect(Collectors.toList());
+ if (!systemPDFTemplateRelevanceEntityList.isEmpty()) {
+ return insertSystemPDFTemplateRelevanceAll(systemPDFTemplateRelevanceEntityList);
+ }
+
+ return 0;
+ }
+
+ /**
+ * 根据 customerId 删除对应的模板关联
+ * @param customerId
+ * @return
+ */
+ @Override
+ public boolean deleteByCustomerId(Long customerId) {
+
+ return systemPDFTemplateRelevanceDao.deleteByCustomerId(customerId);
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateServiceImpl.java
new file mode 100644
index 00000000..70d81358
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/info/impl/SystemPDFTemplateServiceImpl.java
@@ -0,0 +1,62 @@
+package com.glxp.api.admin.service.info.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.glxp.api.admin.dao.info.SystemPDFTemplateDao;
+import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
+import com.glxp.api.admin.req.info.SystemPDFTemplateRequest;
+import com.glxp.api.admin.req.info.SystemPDFTemplateSaveRequest;
+import com.glxp.api.admin.service.info.SystemPDFTemplateService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class SystemPDFTemplateServiceImpl implements SystemPDFTemplateService {
+ @Resource
+ SystemPDFTemplateDao systemPDFTemplateDao;
+
+ @Override
+ public List queryPage(SystemPDFTemplateRequest SystemPDFTemplateRequest) {
+ int offset = (SystemPDFTemplateRequest.getPage() - 1) * SystemPDFTemplateRequest.getLimit();
+ PageHelper.offsetPage(offset, SystemPDFTemplateRequest.getLimit());
+ List list = systemPDFTemplateDao.queryPage(SystemPDFTemplateRequest);
+ return list;
+ }
+
+ @Override
+ public List listPDFTemplates(Integer page, Integer limit) {
+ page = page != null && page > 0 ? page : 1;
+ limit = limit != null && limit > 0 && limit < 100 ? limit : 100;
+ int offset = (page - 1) * limit;
+ PageHelper.offsetPage(offset, limit);
+ List list = systemPDFTemplateDao.listPDFTemplates();
+ return list;
+ }
+
+ @Override
+ public SystemPDFTemplateEntity findSystemPDFTemplate(SystemPDFTemplateRequest systemPDFTemplateRequest) {
+ return systemPDFTemplateDao.findSystemPDFTemplate(systemPDFTemplateRequest);
+ }
+
+ @Override
+ public SystemPDFTemplateEntity selectById(String id) {
+ return systemPDFTemplateDao.selectById(id);
+ }
+
+ @Override
+ public boolean updateById(SystemPDFTemplateSaveRequest systemPDFTemplateSaveRequest) {
+
+ return systemPDFTemplateDao.updateById(systemPDFTemplateSaveRequest);
+ }
+
+ @Override
+ public boolean insert(SystemPDFTemplateEntity systemPDFTemplateEntity) {
+ return systemPDFTemplateDao.insert(systemPDFTemplateEntity);
+ }
+
+ @Override
+ public boolean deleteById(Integer id) {
+ return systemPDFTemplateDao.deleteById(id);
+ }
+}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/thrsys/impl/ThrOrderDetailServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/thrsys/impl/ThrOrderDetailServiceImpl.java
index a8fe26c3..cc428160 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/service/thrsys/impl/ThrOrderDetailServiceImpl.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/service/thrsys/impl/ThrOrderDetailServiceImpl.java
@@ -58,6 +58,6 @@ public class ThrOrderDetailServiceImpl implements ThrOrderDetailService {
@Override
public boolean deleteAll() {
- return deleteAll();
+ return thrOrderDetailDao.deleteAll();
}
}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateErpDataTask.java b/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateErpDataTask.java
index 934af516..15df8495 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateErpDataTask.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateErpDataTask.java
@@ -51,7 +51,7 @@ public class BasicUpdateErpDataTask implements SchedulingConfigurer {
private void process() {
- logger.info("定时更新下载ERP产品信息");
+ logger.info("定时更新下载第三方产品信息");
SystemParamConfigEntity isUpdate = systemParamConfigService.selectByParamKey("erp_updateErpData");
if (isUpdate != null && "1".equals(isUpdate.getParamValue())) {
SystemParamConfigEntity thirdSys = systemParamConfigService.selectByParamKey("erp_updateErpData_thirdSys");
@@ -61,13 +61,19 @@ public class BasicUpdateErpDataTask implements SchedulingConfigurer {
} else
thirdSysId = "thirdId";
BasicThirdSysDetailEntity piDetailEntity = basicThirdSysDetailService.selectByKey("piQueryUrl", thirdSysId);
- BasicThirdSysDetailEntity invPiDetailEntity = basicThirdSysDetailService.selectByKey("invPiUrl", thirdSysId);
- if (piDetailEntity.getValue() != null && invPiDetailEntity.getValue() != null) {
- updateproductService.updateProduct(piDetailEntity.getValue(), invPiDetailEntity.getValue(),thirdSysId);
+
+ if (piDetailEntity.getFromType() == 0 && !piDetailEntity.getItrCache()) {
+ BasicThirdSysDetailEntity invPiDetailEntity = basicThirdSysDetailService.selectByKey("invPiUrl", thirdSysId);
+ if (piDetailEntity.getValue() != null && invPiDetailEntity.getValue() != null) {
+ updateproductService.updateProduct(piDetailEntity.getValue(), invPiDetailEntity.getValue(), thirdSysId);
+ } else {
+ logger.info("接口地址未设置");
+ }
} else {
- logger.info("接口地址未设置");
+ updateproductService.loadLocal(thirdSysId);
}
+
} else {
logger.info("暂未设置,不更新");
}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateproductService.java b/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateproductService.java
index 077211b1..2babf1ce 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateproductService.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/thread/BasicUpdateproductService.java
@@ -2,17 +2,20 @@ package com.glxp.api.admin.thread;
import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
+import com.glxp.api.admin.entity.thrsys.ThrProductsEntity;
import com.glxp.api.admin.httpclient.ErpBasicClient;
import com.glxp.api.admin.httpclient.ErpInvClient;
import com.glxp.api.admin.req.basic.CombineRequest;
import com.glxp.api.admin.req.basic.FilterErpGoodsRequest;
import com.glxp.api.admin.req.inventory.ErpOnhandRequest;
+import com.glxp.api.admin.req.thrsys.FilterThrProductsRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.ErpProductsResponse;
import com.glxp.api.admin.res.inventory.ErpInvProductResponse;
import com.glxp.api.admin.res.inventory.ErpOnHandResponse;
import com.glxp.api.admin.service.basic.UdiInfoService;
import com.glxp.api.admin.service.basic.UdiRelevanceService;
+import com.glxp.api.admin.service.thrsys.ThrProductsService;
import com.glxp.api.admin.util.CustomUtil;
import com.glxp.api.admin.util.DateUtil;
import com.glxp.api.common.res.BaseResponse;
@@ -33,7 +36,8 @@ public class BasicUpdateproductService {
UdiRelevanceService udiRelevanceService;
@Resource
UdiInfoService udiInfoService;
-
+ @Resource
+ ThrProductsService thrProductsService;
@Async
public void updateProduct(String productUrl, String onHandUrl, String thirdSysId) {
@@ -76,6 +80,49 @@ public class BasicUpdateproductService {
}
}
+ @Async
+ public void loadLocal(String thirdSysId) {
+ FilterThrProductsRequest filterThrInvProductsRequest = new FilterThrProductsRequest();
+ List thrProductsEntities = thrProductsService.filterThrProductsRequest(filterThrInvProductsRequest);
+ if (thrProductsEntities != null && thrProductsEntities.size() > 0) {
+ for (ThrProductsEntity thrProductsEntity : thrProductsEntities) {
+ UdiInfoEntity udiInfoEntity = new UdiInfoEntity();
+ udiInfoEntity.setNameCode(thrProductsEntity.getCode());
+ udiInfoEntity.setCpmctymc(thrProductsEntity.getName());
+ udiInfoEntity.setGgxh(thrProductsEntity.getSpec());
+ udiInfoEntity.setUuid(CustomUtil.getUUId());
+ udiInfoEntity.setYlqxzcrbarmc(thrProductsEntity.getManufactory());
+ udiInfoEntity.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo());
+ udiInfoService.insertUdiInfo(udiInfoEntity);
+ UdiRelevanceEntity udiRelevanceEntity1 = new UdiRelevanceEntity();
+ udiRelevanceEntity1.setUuid(udiInfoEntity.getUuid());
+
+
+ if ("thirdId".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName(thrProductsEntity.getName());
+ } else if ("thirdId1".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId1(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName1(thrProductsEntity.getName());
+ } else if ("thirdId2".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId4(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName4(thrProductsEntity.getName());
+ } else if ("thirdId3".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId3(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName3(thrProductsEntity.getName());
+ } else if ("thirdId4".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId4(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName4(thrProductsEntity.getName());
+ }
+
+ udiRelevanceEntity1.setThirdId(thrProductsEntity.getCode());
+ udiRelevanceEntity1.setThirdName(thrProductsEntity.getName());
+ udiRelevanceEntity1.setUpdateTime(DateUtil.getDateTime());
+ udiRelevanceService.insertUdiRelevance(udiRelevanceEntity1);
+ }
+ }
+ }
+
public int getInvmandoc(String invcode, int page, int limit, String productUrl, String onHandUrl, String thirdSysId) {
@@ -121,6 +168,24 @@ public class BasicUpdateproductService {
udiInfoService.insertUdiInfo(udiInfoEntity);
UdiRelevanceEntity udiRelevanceEntity1 = new UdiRelevanceEntity();
udiRelevanceEntity1.setUuid(udiInfoEntity.getUuid());
+
+ if ("thirdId".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId(onhandQueryResponse.getCode());
+ udiRelevanceEntity1.setThirdName(onhandQueryResponse.getName());
+ } else if ("thirdId1".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId1(onhandQueryResponse.getCode());
+ udiRelevanceEntity1.setThirdName1(onhandQueryResponse.getName());
+ } else if ("thirdId2".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId4(onhandQueryResponse.getCode());
+ udiRelevanceEntity1.setThirdName4(onhandQueryResponse.getName());
+ } else if ("thirdId3".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId3(onhandQueryResponse.getCode());
+ udiRelevanceEntity1.setThirdName3(onhandQueryResponse.getName());
+ } else if ("thirdId4".equals(thirdSysId)) {
+ udiRelevanceEntity1.setThirdId4(onhandQueryResponse.getCode());
+ udiRelevanceEntity1.setThirdName4(onhandQueryResponse.getName());
+ }
+
udiRelevanceEntity1.setThirdId(onhandQueryResponse.getCode());
udiRelevanceEntity1.setThirdName(onhandQueryResponse.getName());
udiRelevanceEntity1.setUpdateTime(DateUtil.getDateTime());
diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/ThrOrdersDlService.java b/api-admin/src/main/java/com/glxp/api/admin/thread/ThrOrdersDlService.java
index f02e044a..2eb0000e 100644
--- a/api-admin/src/main/java/com/glxp/api/admin/thread/ThrOrdersDlService.java
+++ b/api-admin/src/main/java/com/glxp/api/admin/thread/ThrOrdersDlService.java
@@ -119,6 +119,8 @@ public class ThrOrdersDlService {
rows.add(erpOrderResponse.getBillFlag());
rows.add(subErpOrder.getProductId());
rows.add(subErpOrder.getProductName());
+ rows.add(subErpOrder.getSpec());
+ rows.add(subErpOrder.getBatchNo());
rows.add(subErpOrder.getProductDate());
rows.add(subErpOrder.getExpireDate());
rows.add(subErpOrder.getCount() + "");
@@ -224,15 +226,16 @@ public class ThrOrdersDlService {
postThrOrderRequest.setGenKey(genKey);
postThrOrderRequest.setThirdSys(thrOrderExportRequest.getThirdSysFk());
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("smp_service_ip");
- if(systemParamConfigEntity!=null){
- String response = HttpClient.uCloudPost(systemParamConfigEntity.getParamValue()+"/udiwms/thrsys/postOrderDetail", postThrOrderRequest);
- BaseResponse baseResponse = JSONObject.parseObject(response, new TypeReference() {});
+ if (systemParamConfigEntity != null) {
+ String response = HttpClient.uCloudPost(systemParamConfigEntity.getParamValue() + "/udiwms/thrsys/postOrderDetail", postThrOrderRequest);
+ BaseResponse baseResponse = JSONObject.parseObject(response, new TypeReference() {
+ });
if (baseResponse.getCode() == 20000) {
thrOrderExportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_SUCCESS);
} else {
thrOrderExportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_FAIL);
}
- }else {
+ } else {
thrOrderExportLogEntity.setRemark("SMP服务IP地址未定义!");
thrOrderExportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_FAIL);
}
diff --git a/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFCellConfig.java b/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFCellConfig.java
new file mode 100644
index 00000000..877eb744
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFCellConfig.java
@@ -0,0 +1,18 @@
+package com.glxp.api.admin.util;
+
+import com.itextpdf.text.Font;
+import lombok.Data;
+
+@Data
+public class ITextPDFCellConfig {
+ private String key; //键
+ private String value; //值
+ private int keyWidth; //键宽度
+ private int valueWidth; //值宽度
+ private Font font; //字体,含中文的字符串必须添加,否则乱码
+ private int fixedHeight; //行高
+ private int totalColumn; //总宽度
+ private int cellMaxColumn; //单元格最大宽度
+ private int disableBorderSide; //单元格边框设置 0:不隐藏,7:隐藏左、上、下边框,13:隐藏上、左、右边框,15:隐藏全部。
+ private int horizontalAlignment; //设置水平位置 0:靠左,1:居中,2:靠右
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFUtils.java b/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFUtils.java
new file mode 100644
index 00000000..37e9baec
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/util/ITextPDFUtils.java
@@ -0,0 +1,1157 @@
+package com.glxp.api.admin.util;
+
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import com.glxp.api.admin.entity.inout.ErpOrderEntity;
+import com.glxp.api.admin.entity.inout.StockOrderDetailEntity;
+import com.glxp.api.admin.entity.inout.StockOrderEntity;
+import com.glxp.api.admin.req.itextpdf.InoutOrderDetailPDFCodeRequest;
+import com.glxp.api.admin.req.itextpdf.InoutOrderDetailPDFFileRequest;
+import com.glxp.api.admin.req.itextpdf.StockQRCodeTextPDFTemplateRequest;
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.*;
+import com.itextpdf.text.pdf.draw.LineSeparator;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.*;
+
+public class ITextPDFUtils {
+
+ private static int eIOSPDFInfoTotalColumn = 20;
+
+ /**
+ * 代码生成PDF测试
+ */
+ public static void exportPDFTest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ //告诉浏览器用什么软件可以打开此文件
+ response.setHeader("content-Type", "application/pdf");
+ //下载文件的默认名称
+// response.setHeader("Content-Disposition", "attachment;filename=XXX.pdf");//注释后可直接预览,不注释会直接下载
+ //设置中文
+ BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);
+
+ Document document = new Document();
+ PdfWriter.getInstance(document, response.getOutputStream());
+ // 打开文档
+ document.open();
+ //设置文档标题
+ document.addTitle("PDF");
+ //设置文档作者
+ document.addAuthor("作者");
+ document.addCreationDate();
+ //设置关键字
+ document.addKeywords("iText");
+ document.addLanguage("中文");
+ //表头
+ PdfPTable title = new PdfPTable(2);//表头行数要对应
+ title.addCell(new Paragraph("编号", fontChinese));
+ title.addCell(new Paragraph("名称", fontChinese));
+ document.add(title);
+
+ //插入数据
+ PdfPTable table = new PdfPTable(2);
+ table.addCell(new Paragraph("1", fontChinese));
+ table.addCell(new Paragraph("测试", fontChinese));
+ document.add(table);
+
+ document.close();
+ }
+
+ /**
+ * 模板文件导入导出PDF测试
+ */
+ public static void exportPDFFromTemplateFileTest(String filePath, HttpServletRequest request, HttpServletResponse response) {
+ try {
+ // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
+ String fileName = "C:/Users/陈进隆/Desktop/pdf_word.pdf";
+// String fileName = filePath;
+
+ //多个PDF页需要多个ByteArrayOutputStream支持数据的封装
+ List bosList = new ArrayList<>();
+ List readerList = new ArrayList();
+
+ // 使用中文字体
+ BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ ArrayList fontList = new ArrayList();
+ fontList.add(baseFont);
+
+ for (int i = 0; i < 1; i++) {
+ //以下三个都需新建,否则分页数据相同。
+ PdfReader reader = new PdfReader(fileName);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ PdfStamper stamper = new PdfStamper(reader, bos);
+
+ //这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
+ AcroFields form = stamper.getAcroFields();//获取模板上的预订的参数
+ form.setSubstitutionFonts(fontList);//设置中文字体
+
+ form.setField("orderId", "1233333333332 " + i);
+ form.setField("fromCorp", "医院");
+ form.setField("fromType", "网页端");
+ form.setField("actionName", "送货单");
+
+ //表格 一行数据是一个list
+ List list1 = new ArrayList();
+ list1.add("1");
+
+ List list2 = new ArrayList();
+ list2.add("2");
+
+ List list3 = new ArrayList();
+ list3.add("3");
+
+ List> listT = new ArrayList>();
+ listT.add(list1);
+ listT.add(list2);
+ listT.add(list3);
+
+ Map>> listMap = new HashMap>>();
+ listMap.put("number", listT);
+ listMap.put("numberList", listT);
+
+ pdfFileAddTableInColumn(listMap, form, stamper, baseFont, 10);
+
+ List list4 = new ArrayList();
+ list4.add("2020-01-01");
+
+ List list5 = new ArrayList();
+ list5.add("2018-01-012222222");
+
+ List list6 = new ArrayList();
+ list6.add("2019-01-01111111111111111111111111111111111111111");
+
+ listT = new ArrayList>();
+ listT.add(list4);
+ listT.add(list5);
+ listT.add(list6);
+
+ listMap = new HashMap>>();
+ listMap.put("date", listT);
+
+ pdfFileAddTableInColumn(listMap, form, stamper, baseFont, 10);
+
+ List list7 = new ArrayList();
+ list7.add("测试 1");
+
+ List list8 = new ArrayList();
+ list8.add("测试 244");
+
+ List list9 = new ArrayList();
+ list9.add("测试 333333测试测试测试测试测试测试测试测试");
+
+ listT = new ArrayList>();
+ listT.add(list7);
+ listT.add(list8);
+ listT.add(list9);
+
+ listMap = new HashMap>>();
+ listMap.put("name", listT);
+
+ pdfFileAddTableInColumn(listMap, form, stamper, baseFont, 10);
+
+ List stringList1 = new ArrayList<>();
+ List stringList2 = new ArrayList<>();
+ List stringList3 = new ArrayList<>();
+ for (int u = 0; u < 35; u++) {
+ stringList1.add("测试: " + u);
+ stringList2.add("测试: " + u);
+ stringList3.add("测试: " + u);
+ }
+ pdfFileAddTableInQRCode("qrcode", 1, stringList1, form, stamper);
+
+ pdfFileAddTableInQRCode("qrcodeList", 35, stringList2, form, stamper);
+
+ pdfFileAddTableInQRCode("qrcodeList2", 135, stringList3, form, stamper);
+
+// //表格 一行数据是一个list
+// List list1 = new ArrayList();
+// list1.add("序号");
+// list1.add("日期");
+//
+// List list2 = new ArrayList();
+// list2.add("100");
+// list2.add("2018-01-01");
+//
+// List list3 = new ArrayList();
+// list3.add("120");
+// list3.add("2019-01-01");
+//
+// List> listT = new ArrayList>();
+// listT.add(list1);
+// listT.add(list2);
+// listT.add(list3);
+//
+// Map>> listMapO = new HashMap>>();
+// listMapO.put("testLisst", listT);
+//
+// Map o = new HashMap();
+// o.put("list", listMapO);
+//
+// // 表格类
+// Map>> listMap = (Map>>) o.get("list");
+// for (String key : listMap.keySet()) {
+// List> lists = listMap.get(key);
+// int pageNo = form.getFieldPositions(key).get(0).page;
+// PdfContentByte pcb = stamper.getOverContent(pageNo);//获取文本域对应区域。
+// Rectangle signRect = form.getFieldPositions(key).get(0).position;//文本域位置信息,定义一个矩形的区域。
+// //表格位置
+// int column = lists.get(0).size();
+// int row = lists.size();
+// PdfPTable table = new PdfPTable(column);
+// float totalWidth = signRect.getRight() - signRect.getLeft() - 1;
+// int size = lists.get(0).size();
+// float width[] = new float[size];
+// for (int j = 0; j < size; j++) {
+// if (j == 0) {
+// width[j] = 60f;
+// } else {
+// width[j] = (totalWidth - 60) / (size - 1);
+// }
+// }
+// table.setTotalWidth(width);
+// table.setLockedWidth(true);//宽度锁定
+// table.setKeepTogether(true);
+// //实现单元格跨页显示
+// table.setSplitLate(false);
+// table.setSplitRows(true);
+// Font FontProve = new Font(baseFont, 10, 0);
+// //表格数据填写
+// for (int j = 0; j < row; j++) {
+// List tList = lists.get(j);
+// for (int k = 0; k < column; k++) {
+// Paragraph paragraph = new Paragraph(String.valueOf(tList.get(k)), FontProve);
+// PdfPCell cell = new PdfPCell(paragraph);
+// cell.setBorderWidth(1);
+// cell.setVerticalAlignment(Element.ALIGN_CENTER);
+// cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+// cell.setLeading(0, (float) 1.4);
+// table.addCell(cell);
+// }
+// }
+//
+// //将table添加到
+// table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), pcb);
+// }
+
+ //true代表生成的PDF文件不可编辑 必须要调用这个,否则文档不会生成的
+ stamper.setFormFlattening(true);
+ stamper.close();
+
+ reader = new PdfReader(bos.toByteArray());
+ bosList.add(bos);
+ readerList.add(reader);
+ }
+
+ ServletOutputStream outputStream = response.getOutputStream();
+ //访问网页可直接预览
+ Document doc = new Document();
+ PdfCopy copy = new PdfCopy(doc, outputStream);
+ doc.open();
+
+ for (int i = 0; i < readerList.size(); i++) {
+ PdfReader pdfReader = readerList.get(i);
+ doc.newPage();
+ copy.addDocument(readerList.get(i));
+// copy.addDocument(new PdfReader(bosList.get(i).toByteArray()));
+ }
+// doc.newPage();
+// copy.addDocument(reader);
+// doc.newPage();
+// copy.addDocument(new PdfReader(bos.toByteArray()));
+// doc.newPage();
+// copy.addDocument(new PdfReader(bos.toByteArray()));
+ copy.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 模板文件生成配货单二维码PDF 打印码
+ */
+ public static void exportStockQRCodeTextPDFFromTemplateFile(
+ StockQRCodeTextPDFTemplateRequest stockQRCodeTextPDFTemplateRequest,
+ HttpServletRequest request, HttpServletResponse response) {
+ try {
+ // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
+ String fileName = stockQRCodeTextPDFTemplateRequest.getPath();
+
+ //多个PDF页需要多个ByteArrayOutputStream支持数据的封装
+ List bosList = new ArrayList<>();
+ List readerList = new ArrayList();
+
+ // 使用中文字体
+ BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ ArrayList fontList = new ArrayList();
+ fontList.add(baseFont);
+
+ int page = stockQRCodeTextPDFTemplateRequest.getRowCount();
+
+ for (int i = 0; i < page; i++) {
+ //以下三个都需新建,否则分页数据相同。
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ PdfReader reader = new PdfReader(fileName);
+ PdfStamper stamper = new PdfStamper(reader, bos);
+
+ //这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
+ AcroFields form = stamper.getAcroFields();//获取模板上的预订的参数
+ form.setSubstitutionFonts(fontList);//设置中文字体
+
+ form.setField("code", stockQRCodeTextPDFTemplateRequest.getText());
+
+ form.setField("nowDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ form.setField("textPage", i + 1 + "");
+ form.setField("totalPage", page + "");
+
+ List qrcodeOneList = new ArrayList<>();
+ qrcodeOneList.add(stockQRCodeTextPDFTemplateRequest.getText());
+ pdfFileAddTableInQRCode("qrcode",
+ page, qrcodeOneList, form, stamper);
+
+ //true代表生成的PDF文件不可编辑 必须要调用这个,否则文档不会生成的
+ stamper.setFormFlattening(true);
+ stamper.close();
+
+ reader = new PdfReader(bos.toByteArray());
+ bosList.add(bos);
+ readerList.add(reader);
+ }
+
+ ServletOutputStream outputStream = response.getOutputStream();
+ //访问网页可直接预览
+ Document doc = new Document();
+ PdfCopy copy = new PdfCopy(doc, outputStream);
+ doc.open();
+ // 设置文档标题
+ doc.addTitle(stockQRCodeTextPDFTemplateRequest.getText());
+ for (int i = 0; i < readerList.size(); i++) {
+ PdfReader pdfReader = readerList.get(i);
+ doc.newPage();
+ copy.addDocument(readerList.get(i));
+ }
+ copy.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 模板文件生成配货单二维码PDF 打印订单
+ */
+ public static void exportStockOrderPDFFromTemplateFile(
+ StockQRCodeTextPDFTemplateRequest stockQRCodeTextPDFTemplateRequest,
+ StockOrderEntity stockOrderEntity, List stockOrderDetailEntityList,
+ HttpServletRequest request, HttpServletResponse response) {
+ try {
+ // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
+ String fileName = stockQRCodeTextPDFTemplateRequest.getPath();
+
+ //多个PDF页需要多个ByteArrayOutputStream支持数据的封装
+ List bosList = new ArrayList<>();
+ List readerList = new ArrayList();
+
+ // 使用中文字体
+ BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ ArrayList fontList = new ArrayList();
+ fontList.add(baseFont);
+
+ int rowCount = stockQRCodeTextPDFTemplateRequest.getRowCount();
+ int page = rowCount < stockOrderDetailEntityList.size() ? (int) Math.ceil(stockOrderDetailEntityList.size() / rowCount) : 1;
+ int listI = 0;
+ int countTotal = 0;
+ int reCountTotal = 0;
+ for (int i = 0; i < stockOrderDetailEntityList.size(); i++) {
+ StockOrderDetailEntity stockOrderDetailEntity = stockOrderDetailEntityList.get(i);
+ countTotal = countTotal + Integer.parseInt(stockOrderDetailEntity.getCount());
+ reCountTotal = reCountTotal + Integer.parseInt(stockOrderDetailEntity.getReCount());
+ }
+
+ for (int i = 0; i < page; i++) {
+ //以下三个都需新建,否则分页数据相同。
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ PdfReader reader = new PdfReader(fileName);
+ PdfStamper stamper = new PdfStamper(reader, bos);
+
+ //这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
+ AcroFields form = stamper.getAcroFields();//获取模板上的预订的参数
+ form.setSubstitutionFonts(fontList);//设置中文字体
+
+ form.setField("billNo", stockOrderEntity.getBillNo());
+ form.setField("billdate", stockOrderEntity.getBilldate());
+ form.setField("corpId", stockOrderEntity.getCorpId());
+ form.setField("corpName", stockOrderEntity.getCorpName());
+ form.setField("actionName", stockQRCodeTextPDFTemplateRequest.getActionName());
+
+ String typeName = "";
+ if (StringUtils.isNotBlank(stockOrderEntity.getType())) {
+ switch (stockOrderEntity.getType()) {
+ case "1":
+ typeName = "预入库";
+ break;
+ case "2":
+ typeName = "普通采购";
+ break;
+ default:
+ typeName = "";
+ break;
+ }
+ }
+ form.setField("type", typeName);
+
+ String sourceTypeName = "";
+ if (StringUtils.isNotBlank(stockOrderEntity.getSourceType())) {
+ switch (stockOrderEntity.getSourceType()) {
+ case "1":
+ sourceTypeName = "本地网页新增";
+ break;
+ default:
+ sourceTypeName = "";
+ break;
+ }
+ }
+ form.setField("sourceType", sourceTypeName);
+ form.setField("nowDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ form.setField("textPage", i + 1 + "");
+ form.setField("totalPage", page + "");
+ form.setField("countTotal", countTotal + "");
+ form.setField("reCountTotal", reCountTotal + "");
+
+// List qrcodeOneList = new ArrayList<>();
+// qrcodeOneList.add("text");//TODO 待定
+// pdfFileAddTableInQRCode("qrcode",
+// stockQRCodeTextPDFTemplateRequest.getQrcodeCount(), qrcodeOneList, form, stamper);
+// List stringList1 = new ArrayList<>();
+// for (int u = 0; u < 100; u++) {
+// stringList1.add("测试: " + u);
+// }
+// pdfFileAddTableInQRCode("qrcodeList",
+// stockQRCodeTextPDFTemplateRequest.getQrcodeCount(), stringList1, form, stamper);
+
+ List> numberList = new ArrayList>();
+ List> productIdList = new ArrayList>();
+ List> productNameList = new ArrayList>();
+ List> specList = new ArrayList>();
+ List> batchNoList = new ArrayList>();
+ List> productDateList = new ArrayList>();
+ List> expireDateList = new ArrayList>();
+ List> countList = new ArrayList>();
+ List> reCountList = new ArrayList>();
+
+ int countSubtotal = 0;
+ int reCountSubtotal = 0;
+
+ for (int k = 0; k < rowCount && listI < stockOrderDetailEntityList.size(); k++) {
+ ++listI;
+ //序号
+ List list1 = new ArrayList();
+ list1.add(listI + "");
+ numberList.add(list1);
+
+ StockOrderDetailEntity stockOrderDetailEntity = stockOrderDetailEntityList.get(listI - 1);
+ //产品ID
+ List list2 = new ArrayList();
+ list2.add(stockOrderDetailEntity.getProductId());
+ productIdList.add(list2);
+ //产品名称
+ List list3 = new ArrayList();
+ list3.add(stockOrderDetailEntity.getProductName());
+ productNameList.add(list3);
+ //包装规格
+ List list4 = new ArrayList();
+ list4.add(stockOrderDetailEntity.getSpec());
+ specList.add(list4);
+ //批次号
+ List list5 = new ArrayList();
+ list5.add(stockOrderDetailEntity.getBatchNo() + "");
+ batchNoList.add(list5);
+ //生产日期
+ List list6 = new ArrayList();
+ list6.add(stockOrderDetailEntity.getProductDate() + "");
+ productDateList.add(list6);
+ //失效日期
+ List list7 = new ArrayList();
+ list7.add(stockOrderDetailEntity.getExpireDate() + "");
+ expireDateList.add(list7);
+ //订单数量
+ List list8 = new ArrayList();
+ countSubtotal = countSubtotal + Integer.parseInt(stockOrderDetailEntity.getCount());
+ list8.add(stockOrderDetailEntity.getCount() + "");
+ countList.add(list8);
+ //配货数量
+ List list9 = new ArrayList();
+ reCountSubtotal = reCountSubtotal + Integer.parseInt(stockOrderDetailEntity.getReCount());
+ list9.add(stockOrderDetailEntity.getReCount() + "");
+ reCountList.add(list9);
+ }
+
+ form.setField("countSubtotal", countSubtotal + "");
+ form.setField("reCountSubtotal", reCountSubtotal + "");
+
+ Map>> listMap = new HashMap>>();
+ listMap.put("numberList", numberList);
+ listMap.put("productIdList", productIdList);
+ listMap.put("productNameList", productNameList);
+ listMap.put("specList", specList);
+ listMap.put("batchNoList", batchNoList);
+ listMap.put("productDateList", productDateList);
+ listMap.put("expireDateList", expireDateList);
+ listMap.put("countList", countList);
+ listMap.put("reCountList", reCountList);
+
+ pdfFileAddTableInColumn(listMap, form, stamper, baseFont, stockQRCodeTextPDFTemplateRequest.getRowCount());
+
+ //true代表生成的PDF文件不可编辑 必须要调用这个,否则文档不会生成的
+ stamper.setFormFlattening(true);
+ stamper.close();
+
+ reader = new PdfReader(bos.toByteArray());
+ bosList.add(bos);
+ readerList.add(reader);
+ }
+
+ ServletOutputStream outputStream = response.getOutputStream();
+ //访问网页可直接预览
+ Document doc = new Document();
+ PdfCopy copy = new PdfCopy(doc, outputStream);
+ doc.open();
+ // 设置文档标题
+ doc.addTitle(stockQRCodeTextPDFTemplateRequest.getBillNo());
+ for (int i = 0; i < readerList.size(); i++) {
+ PdfReader pdfReader = readerList.get(i);
+ doc.newPage();
+ copy.addDocument(readerList.get(i));
+ }
+ copy.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+
+ /**
+ * 导入模板文件并导出PDF
+ */
+ public static void exportOrderDetailPDFFromTemplateFile(
+ InoutOrderDetailPDFFileRequest inoutOrderDetailPDFFileRequest, List erpOrderEntityList,
+ HttpServletRequest request, HttpServletResponse response) {
+ try {
+ // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
+ String fileName = inoutOrderDetailPDFFileRequest.getPath();
+
+ //多个PDF页需要多个ByteArrayOutputStream支持数据的封装
+ List bosList = new ArrayList<>();
+ List readerList = new ArrayList();
+
+ // 使用中文字体
+ BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ ArrayList fontList = new ArrayList();
+ fontList.add(baseFont);
+
+ int rowCount = inoutOrderDetailPDFFileRequest.getRowCount();
+ int page = rowCount < erpOrderEntityList.size() ? (int) Math.ceil(erpOrderEntityList.size() / rowCount) : 1;
+ int listI = 0;
+ int countTotal = 0;
+ for (int i = 0; i < erpOrderEntityList.size(); i++) {
+ ErpOrderEntity erpOrderEntity = erpOrderEntityList.get(i);
+ countTotal = countTotal + erpOrderEntity.getCount();
+ }
+
+ for (int i = 0; i < page; i++) {
+ //以下三个都需新建,否则分页数据相同。
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ PdfReader reader = new PdfReader(fileName);
+ PdfStamper stamper = new PdfStamper(reader, bos);
+
+ //这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
+ AcroFields form = stamper.getAcroFields();//获取模板上的预订的参数
+ form.setSubstitutionFonts(fontList);//设置中文字体
+
+ form.setField("orderId", inoutOrderDetailPDFFileRequest.getOrderId());
+ form.setField("fromCorp", inoutOrderDetailPDFFileRequest.getFromCorp());
+ form.setField("fromType", inoutOrderDetailPDFFileRequest.getFromType());
+ form.setField("actionName", inoutOrderDetailPDFFileRequest.getActionName());
+ form.setField("actDate", inoutOrderDetailPDFFileRequest.getActDate());
+ form.setField("nowDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ form.setField("textPage", i + 1 + "");
+ form.setField("totalPage", page + "");
+ form.setField("countTotal", countTotal + "");
+
+ List stringList1 = new ArrayList<>();
+ for (int u = 0; u < 100; u++) {
+ stringList1.add("测试: " + u);
+ }
+ pdfFileAddTableInQRCode("qrcodeList",
+ inoutOrderDetailPDFFileRequest.getQrcodeCount(), stringList1, form, stamper);
+
+ List> numberList = new ArrayList>();
+ List> coNameList = new ArrayList>();
+ List> packSpecList = new ArrayList>();
+ List> batchNoList = new ArrayList>();
+ List> countList = new ArrayList>();
+ List> productCompanyList = new ArrayList>();
+ List> authCodeList = new ArrayList>();
+
+ int countSubtotal = 0;
+
+ for (int k = 0; k < rowCount && listI < erpOrderEntityList.size(); k++) {
+ ++listI;
+ //序号
+ List list1 = new ArrayList();
+ list1.add(listI + "");
+ numberList.add(list1);
+
+ ErpOrderEntity erpOrderEntity = erpOrderEntityList.get(listI - 1);
+ //产品通用名
+ List list2 = new ArrayList();
+ list2.add(erpOrderEntity.getCoName());
+ coNameList.add(list2);
+ //包装规格
+ List list3 = new ArrayList();
+ list3.add(erpOrderEntity.getPackSpec());
+ packSpecList.add(list3);
+ //批次号
+ List list4 = new ArrayList();
+ list4.add(erpOrderEntity.getBatchNo());
+ batchNoList.add(list4);
+ //扫码数量
+ List list5 = new ArrayList();
+ countSubtotal = countSubtotal + erpOrderEntity.getCount();
+ list5.add(erpOrderEntity.getCount() + "");
+ countList.add(list5);
+ //生产企业
+ List list6 = new ArrayList();
+ list6.add(erpOrderEntity.getProductCompany() + "");
+ productCompanyList.add(list6);
+ //批准文号
+ List list7 = new ArrayList();
+ list7.add(erpOrderEntity.getAuthCode() + "");
+ authCodeList.add(list7);
+ }
+
+ form.setField("countSubtotal", countSubtotal + "");
+
+ Map>> listMap = new HashMap>>();
+ listMap.put("numberList", numberList);
+ listMap.put("coNameList", coNameList);
+ listMap.put("packSpecList", packSpecList);
+ listMap.put("batchNoList", batchNoList);
+ listMap.put("countList", countList);
+ listMap.put("productCompanyList", productCompanyList);
+ listMap.put("authCodeList", authCodeList);
+
+ pdfFileAddTableInColumn(listMap, form, stamper, baseFont, inoutOrderDetailPDFFileRequest.getRowCount());
+
+ //true代表生成的PDF文件不可编辑 必须要调用这个,否则文档不会生成的
+ stamper.setFormFlattening(true);
+ stamper.close();
+
+ reader = new PdfReader(bos.toByteArray());
+ bosList.add(bos);
+ readerList.add(reader);
+ }
+
+ ServletOutputStream outputStream = response.getOutputStream();
+ //访问网页可直接预览
+ Document doc = new Document();
+ PdfCopy copy = new PdfCopy(doc, outputStream);
+ doc.open();
+ // 设置文档标题
+ doc.addTitle(inoutOrderDetailPDFFileRequest.getOrderId());
+ for (int i = 0; i < readerList.size(); i++) {
+ PdfReader pdfReader = readerList.get(i);
+ doc.newPage();
+ copy.addDocument(readerList.get(i));
+// copy.addDocument(new PdfReader(bosList.get(i).toByteArray()));
+ }
+ copy.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 为导入的模板文件相应字段文本域填入表格
+ *
+ * @param listMap 待生成数据:Map>>
+ * key为{文本域字段},value为对应的{文本域List}。
+ * {文本域List}内{二级List}数量为行数,{二级List}内的字符串数量为列数。
+ *
+ * ---------(文本域字段)-----(文本域List)---------
+ * - Map>> -
+ * - 列1 列2 列3 -
+ * - 行1:List [String, String, String] -
+ * - 行2:List [String, String, String] -
+ * - 行3:List [String, String, String] -
+ * ----------------------------------------------
+ *
+ * @param form 表单
+ * @param stamper 模板
+ * @param baseFont 字体
+ * @param rowCount 行数
+ */
+ private static void pdfFileAddTableInColumn(
+ Map>> listMap, AcroFields form,
+ PdfStamper stamper, BaseFont baseFont, int rowCount) {
+ // 表格类
+ for (String key : listMap.keySet()) {
+ List> lists = listMap.get(key);//获取文本域字段对应List
+ if (form.getFieldPositions(key) == null) continue;//判断模板是否有设置该字段。
+ int pageNo = form.getFieldPositions(key).get(0).page;
+ PdfContentByte pcb = stamper.getOverContent(pageNo);//获取文本域对应区域。
+ Rectangle signRect = form.getFieldPositions(key).get(0).position;//文本域位置信息,定义一个矩形的区域。
+ //表格位置
+ int row = lists.size();//行数,为二级List数量,几个List代表几行。
+ int column = lists.get(0).size();//列数,为二级List内字符串数量,几个String代表几列。
+ PdfPTable table = new PdfPTable(column);//设置每行列数
+ float totalWidth = signRect.getRight() - signRect.getLeft() - 1;//获取总宽
+ float totalHeight = signRect.getTop() - signRect.getBottom();//获取总高
+ int size = lists.get(0).size();//列数
+ float[] width = new float[size];
+
+ float signRectHeight = signRect.getHeight();
+ float signRectWidth = signRect.getWidth();
+
+ int rowHeight = (int) Math.ceil(signRectHeight / rowCount);//高度 / 行数
+ int fontSize = (int) Math.ceil(rowHeight * 0.5);//字体大小 = 行高的50%
+
+ for (int i = 0; i < size; i++) {
+ if (size == 1) {
+ width[i] = totalWidth;//单列 宽度等于总宽度
+ } else {
+ if (i == 0) {//多列 宽度计算
+ width[i] = 60f;
+ } else {//后面的列宽度平均
+ width[i] = (totalWidth - 60) / (size - 1);
+ }
+ }
+ }
+ try {
+ table.setTotalWidth(width);//设置每列宽度
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
+ table.setLockedWidth(true);//宽度锁定
+ table.setKeepTogether(true);
+ //实现单元格跨页显示
+ table.setSplitLate(false);
+ table.setSplitRows(true);
+ //表格数据填写
+ for (int i = 0; i < row; i++) {
+ List tList = lists.get(i);
+ for (int k = 0; k < column; k++) {
+ fontSize = 12;
+ if (tList.get(k).length() / 2 * fontSize > signRectWidth) {
+ fontSize = 8;
+ }
+// if (tList.get(k).length() * fontSize > signRectWidth) {
+//
+// fontSize = (int) Math.ceil(signRectWidth / tList.get(k).length());//宽度 / 字数
+// }
+// if (fontSize < 12) fontSize = 12;
+// else if (fontSize > 48) fontSize = 48;
+
+ Font FontProve = new Font(baseFont, fontSize, 0);
+ Paragraph paragraph = new Paragraph(String.valueOf(tList.get(k)), FontProve);
+ PdfPCell cell = new PdfPCell(paragraph);
+ setStyle(cell, 1, rowHeight);
+ cell.setBorderWidth(0);//边框宽度
+ table.addCell(cell);
+ }
+ }
+
+ //将table添加到pdf对应区域
+ table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), pcb);
+ }
+ }
+
+ /**
+ * 为导入的模板文件相应字段文本域设置二维码
+ *
+ * @param key 字段名
+ * @param qrcodeCount 二维码数量
+ * @param contentList 二维码内容 List
+ * @param form 表单
+ * @param stamper 模板
+ */
+ private static void pdfFileAddTableInQRCode(
+ String key, int qrcodeCount, List contentList,
+ AcroFields form, PdfStamper stamper) {
+ // 表格类
+ if (qrcodeCount < 1 || contentList.size() < 1) return;//判断二维码数量。
+ qrcodeCount = Math.min(qrcodeCount, contentList.size());
+ if (form.getFieldPositions(key) == null) return;//判断模板是否有设置该字段。
+ int pageNo = form.getFieldPositions(key).get(0).page;
+ PdfContentByte pcb = stamper.getOverContent(pageNo);//获取文本域对应区域。
+ Rectangle signRect = form.getFieldPositions(key).get(0).position;//文本域位置信息,定义一个矩形区域。
+ float signRectHeight = signRect.getHeight();
+ float signRectWidth = signRect.getWidth();
+ float signRectArea = signRectHeight * signRectWidth;//总面积
+ float imageArea = signRectArea / qrcodeCount;//二维码面积
+ int imageSideLength = (int) Math.floor(Math.sqrt(imageArea));//开方
+ if (qrcodeCount == 1) {//如果是单图,使用文本域最小边作为二维码边长。
+ imageSideLength = (int) Math.floor(Math.min(signRectWidth, signRectHeight));
+ }
+
+ //表格位置
+ int column = qrcodeCount <= 1 ? 1 : (int) Math.floor(signRectWidth / imageSideLength);//每行的列数
+ int row = 1;
+ if (column < qrcodeCount) {//总数大于每行列数,计算行数。
+ DecimalFormat df = new DecimalFormat("0.00");
+ double d = Double.parseDouble(df.format((double) qrcodeCount / column));
+ row = (int) Math.ceil(d);
+ }
+ PdfPTable table = new PdfPTable(column);//设置每行列数
+ float cellWidth = signRectWidth / column;//列宽度,总宽度除以每行列数,如果直接除以图片宽度的话,图片位置会偏左。
+ int rowHeight = (int) Math.floor(signRectHeight / row);//行高,总高除以行数。
+ int imgSize = (int) Math.floor(Math.min(cellWidth, rowHeight) * 2);//宽和高哪个小选哪个作为二维码的边长。
+// imgSize = 100;
+ float[] width = new float[column];
+ for (int i = 0; i < column; i++) {
+ width[i] = cellWidth;
+ }
+ try {
+ table.setTotalWidth(width);//设置每列宽度
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
+ table.setLockedWidth(true);//宽度锁定
+ table.setKeepTogether(true);//设置段落内容是否在一起,设置为true的话,不会把段落写到下一页
+ //实现单元格跨页显示
+ table.setSplitLate(false);
+ table.setSplitRows(true);
+
+ int nowQRCodeCount = 0;
+ //表格数据填写
+ for (int j = 0; j < row; j++) {
+ for (int k = 0; k < column; k++, nowQRCodeCount++) {
+ try {
+ Image image = null;
+ if (nowQRCodeCount < qrcodeCount) {
+ //生成PNG格式的二维码图片,以byte[]形式表示,宽和高都是 xxx 像素
+ byte[] bytes = QrCodeUtil.generatePng(contentList.get(nowQRCodeCount), imgSize, imgSize);
+ image = Image.getInstance(bytes);
+ }//每一行的列都要设置内容,否则该行错位或不显示。
+ PdfPCell cell = new PdfPCell(image, true);
+ setStyle(cell, 1, rowHeight);
+ cell.setBorderWidth(0);//边框宽度//超过总数的内容设置为空图片。
+ table.addCell(cell);
+ } catch (BadElementException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ //将table添加到pdf对应区域
+ table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), pcb);
+ }
+
+ /**
+ * 使用代码的方式根据设置好的模板数据生成PDF
+ */
+ public static void exportInoutOrderSuccessPDF(
+ InoutOrderDetailPDFCodeRequest inoutOrderDetailPDFCodeRequest, List erpOrderEntityList,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ //告诉浏览器用什么软件可以打开此文件
+ response.setHeader("content-Type", "application/pdf");
+
+ //设置中文
+ BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+ Font fontChineseSize12 = new Font(bfChinese, 12, Font.NORMAL);
+ Font fontChineseSize10 = new Font(bfChinese, 10, Font.NORMAL);
+
+ Document document = new Document(PageSize.A4);
+
+ PdfWriter.getInstance(document, response.getOutputStream());
+ // 打开文档
+ document.open();
+ // 设置文档标题
+ document.addTitle(inoutOrderDetailPDFCodeRequest.getOrderId());
+ // 添加一个内容段落
+// document.add(new Paragraph("P D F 测 试", fontChineseSize12));
+ //设置关键字
+ document.addKeywords("iText");
+ document.addLanguage("中文");
+
+ PdfPTable table = new PdfPTable(eIOSPDFInfoTotalColumn);//总列数
+ table.setWidthPercentage(100); // 宽度100%填充
+ table.setSpacingBefore(10f); // 前间距
+ table.setSpacingAfter(10f); // 后间距
+
+ ITextPDFCellConfig iTextPDFCellConfig = new ITextPDFCellConfig();
+ iTextPDFCellConfig.setKeyWidth(4);
+ iTextPDFCellConfig.setFont(fontChineseSize12);
+ iTextPDFCellConfig.setFixedHeight(20);
+ iTextPDFCellConfig.setTotalColumn(eIOSPDFInfoTotalColumn);
+ iTextPDFCellConfig.setCellMaxColumn(12);
+ iTextPDFCellConfig.setDisableBorderSide(15);
+ iTextPDFCellConfig.setHorizontalAlignment(1);
+
+// iTextPDFCellConfig.setValue("订 单 详 情");
+// PdfPTable titleTable = new PdfPTable(table);
+// setITextPDFSegmentationCell(0, titleTable, iTextPDFCellConfig);
+// document.add(titleTable);
+
+ // 段落
+ Paragraph paragraph = new Paragraph("订 单 详 情", fontChineseSize12);
+ paragraph.setAlignment(1); //设置文字居中 0靠左 1,居中 2,靠右
+ paragraph.setIndentationLeft(12); //设置左缩进
+ paragraph.setIndentationRight(12); //设置右缩进
+// paragraph.setFirstLineIndent(24); //设置首行缩进
+ paragraph.setLeading(20f); //行间距
+// paragraph.setSpacingBefore(5f); //设置段落上空白
+// paragraph.setSpacingAfter(10f); //设置段落下空白
+ document.add(paragraph);
+
+ //直线
+ Paragraph p1 = new Paragraph();
+ p1.add(new Chunk(new LineSeparator()));
+ document.add(p1);
+
+ InoutOrderDetailPDFCodeRequest.SettingData settingData = inoutOrderDetailPDFCodeRequest.getSettingData();
+
+ int useColspan = 0;
+ if (settingData.getOrderIdEnable()) {
+ iTextPDFCellConfig.setKey("订单ID:");
+ iTextPDFCellConfig.setValue(inoutOrderDetailPDFCodeRequest.getOrderId());
+ iTextPDFCellConfig.setValueWidth(settingData.getOrderIdWidth());
+ useColspan = setITextPDFKeyValueCell(
+ useColspan, table, iTextPDFCellConfig);
+ }
+
+ if (settingData.getActionEnable()) {
+ iTextPDFCellConfig.setKey("业务类型:");
+ iTextPDFCellConfig.setValue(inoutOrderDetailPDFCodeRequest.getActionName());
+ iTextPDFCellConfig.setValueWidth(settingData.getActionWidth());
+ useColspan = setITextPDFKeyValueCell(
+ useColspan, table, iTextPDFCellConfig);
+ }
+
+ if (settingData.getFromCorpEnable()) {
+ iTextPDFCellConfig.setKey("往来单位:");
+ iTextPDFCellConfig.setValue(inoutOrderDetailPDFCodeRequest.getFromCorp());
+ iTextPDFCellConfig.setValueWidth(settingData.getFromCorpWidth());
+ useColspan = setITextPDFKeyValueCell(
+ useColspan, table, iTextPDFCellConfig);
+ }
+
+ if (settingData.getFromTypeEnable()) {
+ iTextPDFCellConfig.setKey("订单来源:");
+ iTextPDFCellConfig.setValue(inoutOrderDetailPDFCodeRequest.getFromType());
+ iTextPDFCellConfig.setValueWidth(settingData.getFromTypeWidth());
+ useColspan = setITextPDFKeyValueCell(
+ useColspan, table, iTextPDFCellConfig);
+ }
+
+ iTextPDFCellConfig.setValue(" ");
+ useColspan = setITextPDFSegmentationCell(useColspan, table, iTextPDFCellConfig);
+
+ iTextPDFCellConfig.setFont(fontChineseSize10);
+
+ if (settingData.getNumberEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getNumberWidth());
+ iTextPDFCellConfig.setValue("序号");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getCoNameEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getCoNameWidth());
+ iTextPDFCellConfig.setValue("产品通用名");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getPackSpecEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getPackSpecWidth());
+ iTextPDFCellConfig.setValue("包装规格");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getBatchNoEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getBatchNoWidth());
+ iTextPDFCellConfig.setValue("批次号");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getCountEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getCountWidth());
+ iTextPDFCellConfig.setValue("扫码数量");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getProductCompanyEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getProductCompanyWidth());
+ iTextPDFCellConfig.setValue("生产企业");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getAuthCodeEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getAuthCodeWidth());
+ iTextPDFCellConfig.setValue("批准文号");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+
+ iTextPDFCellConfig.setFixedHeight(40);
+
+ for (int i = 0; i < erpOrderEntityList.size(); i++) {
+ ErpOrderEntity erpOrderEntity = erpOrderEntityList.get(i);
+
+ if (settingData.getNumberEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getNumberWidth());
+ iTextPDFCellConfig.setValue(i + "");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getCoNameEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getCoNameWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getCoName());
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getPackSpecEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getPackSpecWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getPackSpec());
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getBatchNoEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getBatchNoWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getBatchNo());
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getCountEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getCountWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getCount() + "");
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getProductCompanyEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getProductCompanyWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getProductCompany());
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ if (settingData.getAuthCodeEnable()) {
+ iTextPDFCellConfig.setValueWidth(settingData.getAuthCodeWidth());
+ iTextPDFCellConfig.setValue(erpOrderEntity.getAuthCode());
+ setITextPDFTableCell(table, iTextPDFCellConfig);
+ }
+ }
+
+ document.add(table);
+
+ document.close();
+ }
+
+ /**
+ * 生成表格键值对及剩余宽度填充。
+ *
+ * @param useColspan 当前行已使用宽度/列数
+ * @param table 表格
+ * @param iTextPDFCellConfig 单元格配置
+ * @return 返回已使用当前行已使用宽度/列数
+ */
+ private static int setITextPDFKeyValueCell(
+ int useColspan, PdfPTable table, ITextPDFCellConfig iTextPDFCellConfig) {
+
+ //判断所需宽度是否超过剩余宽度,超过就填充剩余宽度。
+ if (iTextPDFCellConfig.getKeyWidth() + iTextPDFCellConfig.getValueWidth() > iTextPDFCellConfig.getTotalColumn() - useColspan) {
+ // 空格 填充
+ PdfPCell cellFill = new PdfPCell(new Phrase(" "));
+ cellFill.setColspan(iTextPDFCellConfig.getTotalColumn() - useColspan); // 所占列数
+ setStyle(cellFill, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ cellFill.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ table.addCell(cellFill);
+ useColspan = 0;
+ }
+
+ PdfPCell cell1 = new PdfPCell(new Phrase(iTextPDFCellConfig.getKey(), iTextPDFCellConfig.getFont()));
+ cell1.setColspan(iTextPDFCellConfig.getKeyWidth()); // 所占列数
+ setStyle(cell1, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ cell1.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ table.addCell(cell1);
+
+ PdfPCell cell2 = new PdfPCell(new Phrase(iTextPDFCellConfig.getValue(), iTextPDFCellConfig.getFont()));
+ cell2.setColspan(iTextPDFCellConfig.getValueWidth()); // 所占列数
+ setStyle(cell2, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ cell2.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ table.addCell(cell2);
+
+ useColspan = useColspan + iTextPDFCellConfig.getKeyWidth() + iTextPDFCellConfig.getValueWidth();
+
+ //判断使用宽度是否超过单个最大宽度,并小于总宽度,超过就填充剩余宽度。
+ if (useColspan > iTextPDFCellConfig.getCellMaxColumn() && useColspan != iTextPDFCellConfig.getTotalColumn()) {
+ // 空格 填充
+ PdfPCell cellFill = new PdfPCell(new Phrase(" "));
+ cellFill.setColspan(iTextPDFCellConfig.getTotalColumn() - useColspan); // 所占列数
+ setStyle(cellFill, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ cellFill.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ table.addCell(cellFill);
+ useColspan = 0;
+ }
+ useColspan = useColspan == iTextPDFCellConfig.getTotalColumn() ? 0 : useColspan;
+
+ return useColspan;
+ }
+
+ /**
+ * 生成表格分割行及剩余宽度填充。
+ *
+ * @param useColspan 当前行已使用宽度/列数
+ * @param table 表格
+ * @param iTextPDFCellConfig 单元格配置
+ * @return 返回已使用当前行已使用宽度/列数
+ */
+ private static int setITextPDFSegmentationCell(
+ int useColspan, PdfPTable table, ITextPDFCellConfig iTextPDFCellConfig) {
+
+ //判断最后是否还有剩余,有就填充。
+ if (useColspan > 0) {
+ // 空格 填充
+ PdfPCell cellFill = new PdfPCell(new Phrase(" ", iTextPDFCellConfig.getFont()));
+ cellFill.setColspan(iTextPDFCellConfig.getTotalColumn() - useColspan); // 所占列数
+ setStyle(cellFill, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ cellFill.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ table.addCell(cellFill);
+ useColspan = 0;
+ }
+ // 分割行
+ PdfPCell cell = new PdfPCell(new Phrase(iTextPDFCellConfig.getValue(), iTextPDFCellConfig.getFont()));
+ cell.setColspan(iTextPDFCellConfig.getTotalColumn()); // 所占列数
+ cell.disableBorderSide(iTextPDFCellConfig.getDisableBorderSide());
+ setStyle(cell, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ table.addCell(cell);
+
+ return useColspan;
+ }
+
+ /**
+ * 生成表格单元格
+ *
+ * @param table 表格
+ * @param iTextPDFCellConfig 单元格配置
+ * @return 返回已使用当前行已使用宽度/列数
+ */
+ private static void setITextPDFTableCell(PdfPTable table, ITextPDFCellConfig iTextPDFCellConfig) {
+
+ PdfPCell cell = new PdfPCell(new Phrase(iTextPDFCellConfig.getValue(), iTextPDFCellConfig.getFont()));
+ cell.setColspan(iTextPDFCellConfig.getValueWidth()); // 所占列数
+ setStyle(cell, iTextPDFCellConfig.getHorizontalAlignment(), iTextPDFCellConfig.getFixedHeight());
+ table.addCell(cell);
+ }
+
+ /**
+ * 设置样式
+ *
+ * @param cell
+ */
+ private static void setStyle(PdfPCell cell, int horizontalAlignment, int fixedHeight) {
+ cell.setFixedHeight(fixedHeight);//行高
+ if (horizontalAlignment == 0) {
+ cell.setHorizontalAlignment(Element.ALIGN_LEFT);//设置水平靠左
+ } else {
+ cell.setHorizontalAlignment(Element.ALIGN_CENTER);//设置水平居中
+ }
+ cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
+ cell.setBorderWidth(1);//边框宽度
+ cell.setLeading(0, (float) 1.0);////设置行间距
+ }
+}
\ No newline at end of file
diff --git a/api-admin/src/main/java/com/glxp/api/admin/util/QRCodeUtil.java b/api-admin/src/main/java/com/glxp/api/admin/util/QRCodeUtil.java
new file mode 100644
index 00000000..f8e7fe36
--- /dev/null
+++ b/api-admin/src/main/java/com/glxp/api/admin/util/QRCodeUtil.java
@@ -0,0 +1,211 @@
+package com.glxp.api.admin.util;
+import cn.hutool.core.util.StrUtil;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import com.itextpdf.xmp.impl.Base64;
+import lombok.experimental.UtilityClass;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import java.awt.*;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.HashMap;
+
+/**
+ * QRCodeUtil
+ *
+ * @author lvhaosir6
+ * @version 1.0.0
+ * @date 2020/7/8
+ */
+@Slf4j
+@UtilityClass
+public class QRCodeUtil {
+ /**
+ * 默认宽度
+ */
+ private static final Integer WIDTH = 140;
+ /**
+ * 默认高度
+ */
+ private static final Integer HEIGHT = 140;
+
+ /**
+ * LOGO 默认宽度
+ */
+ private static final Integer LOGO_WIDTH = 22;
+ /**
+ * LOGO 默认高度
+ */
+ private static final Integer LOGO_HEIGHT = 22;
+
+ /**
+ * 图片格式
+ */
+ private static final String IMAGE_FORMAT = "png";
+ private static final String CHARSET = "utf-8";
+ /**
+ * 原生转码前面没有 data:image/png;base64 这些字段,返回给前端是无法被解析
+ */
+ private static final String BASE64_IMAGE = "data:image/png;base64,%s";
+
+ /**
+ * 生成二维码,使用默认尺寸
+ *
+ * @param content 内容
+ * @return
+ */
+ public String getBase64QRCode(String content) {
+ return getBase64Image(content, WIDTH, HEIGHT, null, null, null);
+ }
+
+ /**
+ * 生成二维码,使用默认尺寸二维码,插入默认尺寸logo
+ *
+ * @param content 内容
+ * @param logoUrl logo地址
+ * @return
+ */
+ public String getBase64QRCode(String content, String logoUrl) {
+ return getBase64Image(content, WIDTH, HEIGHT, logoUrl, LOGO_WIDTH, LOGO_HEIGHT);
+ }
+
+ /**
+ * 生成二维码
+ *
+ * @param content 内容
+ * @param width 二维码宽度
+ * @param height 二维码高度
+ * @param logoUrl logo 在线地址
+ * @param logoWidth logo 宽度
+ * @param logoHeight logo 高度
+ * @return
+ */
+ public String getBase64QRCode(String content, Integer width, Integer height, String logoUrl, Integer logoWidth, Integer logoHeight) {
+ return getBase64Image(content, width, height, logoUrl, logoWidth, logoHeight);
+ }
+
+ private String getBase64Image(String content, Integer width, Integer height, String logoUrl, Integer logoWidth, Integer logoHeight) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ BufferedImage bufferedImage = crateQRCode(content, width, height, logoUrl, logoWidth, logoHeight);
+ try {
+ ImageIO.write(bufferedImage, IMAGE_FORMAT, os);
+ } catch (IOException e) {
+ log.error("[生成二维码,错误{}]", e);
+ }
+ // 转出即可直接使用
+ return String.format(BASE64_IMAGE, Base64.encode(os.toByteArray()));
+ }
+
+
+ /**
+ * 生成二维码
+ *
+ * @param content 内容
+ * @param width 二维码宽度
+ * @param height 二维码高度
+ * @param logoUrl logo 在线地址
+ * @param logoWidth logo 宽度
+ * @param logoHeight logo 高度
+ * @return
+ */
+ private BufferedImage crateQRCode(String content, Integer width, Integer height, String logoUrl, Integer logoWidth, Integer logoHeight) {
+ if (StrUtil.isNotBlank(content)) {
+ ServletOutputStream stream = null;
+ HashMap hints = new HashMap<>(4);
+ // 指定字符编码为utf-8
+ hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
+ // 指定二维码的纠错等级为中级
+ hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
+ // 设置图片的边距
+ hints.put(EncodeHintType.MARGIN, 2);
+ try {
+ QRCodeWriter writer = new QRCodeWriter();
+ BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
+ BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+ for (int x = 0; x < width; x++) {
+ for (int y = 0; y < height; y++) {
+ bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
+ }
+ }
+ if (StrUtil.isNotBlank(logoUrl)) {
+ insertLogo(bufferedImage, width, height, logoUrl, logoWidth, logoHeight);
+ }
+ return bufferedImage;
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (stream != null) {
+ try {
+ stream.flush();
+ stream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 二维码插入logo
+ *
+ * @param source 二维码
+ * @param width 二维码宽度
+ * @param height 二维码高度
+ * @param logoUrl logo 在线地址
+ * @param logoWidth logo 宽度
+ * @param logoHeight logo 高度
+ * @throws Exception
+ */
+ private void insertLogo(BufferedImage source, Integer width, Integer height, String logoUrl, Integer logoWidth, Integer logoHeight) throws Exception {
+ // logo 源可为 File/InputStream/URL
+ Image src = ImageIO.read(new URL(logoUrl));
+ // 插入LOGO
+ Graphics2D graph = source.createGraphics();
+ int x = (width - logoWidth) / 2;
+ int y = (height - logoHeight) / 2;
+ graph.drawImage(src, x, y, logoWidth, logoHeight, null);
+ Shape shape = new RoundRectangle2D.Float(x, y, logoWidth, logoHeight, 6, 6);
+ graph.setStroke(new BasicStroke(3f));
+ graph.draw(shape);
+ graph.dispose();
+ }
+
+
+ /**
+ * 获取二维码
+ *
+ * @param content 内容
+ * @param output 输出流
+ * @throws IOException
+ */
+ public void getQRCode(String content, OutputStream output) throws IOException {
+ BufferedImage image = crateQRCode(content, WIDTH, HEIGHT, null, null, null);
+ ImageIO.write(image, IMAGE_FORMAT, output);
+ }
+
+ /**
+ * 获取二维码
+ *
+ * @param content 内容
+ * @param logoUrl logo资源
+ * @param output 输出流
+ * @throws Exception
+ */
+ public void getQRCode(String content, String logoUrl, OutputStream output) throws Exception {
+ BufferedImage image = crateQRCode(content, WIDTH, HEIGHT, logoUrl, LOGO_WIDTH, LOGO_HEIGHT);
+ ImageIO.write(image, IMAGE_FORMAT, output);
+ }
+
+}
\ No newline at end of file
diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/BussinessTypeDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/BussinessTypeDao.xml
index 4ce3dd82..73c2eefe 100644
--- a/api-admin/src/main/resources/mybatis/mapper/basic/BussinessTypeDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/basic/BussinessTypeDao.xml
@@ -31,10 +31,10 @@
AND name LIKE concat(#{name},'%')
- AND action LIKE concat(#{action},'%')
+ AND `action` LIKE concat(#{action},'%')
- AND action LIKE concat(#{mainAction},'%')
+ AND mainAction LIKE concat(#{mainAction},'%')
AND basic_third_sys.enabled =#{enabled}
diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/CorpExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/CorpExportLogDao.xml
index 0f2df686..a11c41a2 100644
--- a/api-admin/src/main/resources/mybatis/mapper/basic/CorpExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/basic/CorpExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/CorpImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/CorpImportLogDao.xml
index c064a30b..458d6a89 100644
--- a/api-admin/src/main/resources/mybatis/mapper/basic/CorpImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/basic/CorpImportLogDao.xml
@@ -17,7 +17,7 @@
AND status = #{status}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoExportLogDao.xml
index d10ec581..05837caf 100644
--- a/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoImportLogDao.xml
index 6721bccc..20e9c5d7 100644
--- a/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/basic/UdiInfoImportLogDao.xml
@@ -20,7 +20,7 @@
AND thirdSysFk = #{thirdSysFk}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFModuleDao.xml b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFModuleDao.xml
new file mode 100644
index 00000000..b011e371
--- /dev/null
+++ b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFModuleDao.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ UPDATE system_pdf_module
+
+ name=#{name},
+ param=#{param},
+ fieldExplain=#{fieldExplain},
+ remark=#{remark},
+ templateId=#{templateId},
+ create_time=#{create_time},
+ update_time=#{update_time},
+
+ WHERE id=#{id}
+
+
+
+ insert INTO system_pdf_module(name,param,fieldExplain,remark,templateId,create_time,update_time
+ ) values
+ (
+ #{name},
+ #{param},
+ #{fieldExplain},
+ #{templateId},
+ #{remark},
+ #{create_time},
+ #{update_time}
+ )
+
+
+
+
+
+ delete from system_pdf_module where id = #{id}
+
+
\ No newline at end of file
diff --git a/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateDao.xml b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateDao.xml
new file mode 100644
index 00000000..1d1aaa18
--- /dev/null
+++ b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateDao.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ UPDATE system_pdf_template
+
+ name=#{name},
+ type=#{type},
+ module=#{module},
+ param=#{param},
+ path=#{path},
+ rowCount=#{rowCount},
+ qrcodeCount=#{qrcodeCount},
+ remark=#{remark},
+ create_time=#{create_time},
+ update_time=#{update_time},
+
+ WHERE id=#{id}
+
+
+
+ insert INTO system_pdf_template(name,
+ type,module,param,path,rowCount,qrcodeCount,remark,create_time,update_time
+ ) values
+ (
+ #{name},
+ #{type},
+ #{module},
+ #{param},
+ #{path},
+ #{rowCount},
+ #{qrcodeCount},
+ #{remark},
+ #{create_time},
+ #{update_time}
+ )
+
+
+
+
+
+ delete from system_pdf_template where id = #{id}
+
+
\ No newline at end of file
diff --git a/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateRelevanceDao.xml b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateRelevanceDao.xml
new file mode 100644
index 00000000..4b08d1bc
--- /dev/null
+++ b/api-admin/src/main/resources/mybatis/mapper/info/SystemPDFTemplateRelevanceDao.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO system_pdf_template_relevance
+ (template_id, customerId)
+ VALUES
+
+
+ (#{item.template_id}, #{item.customerId})
+
+
+
+
+
+ INSERT INTO system_pdf_template_relevance
+ (template_id,customerId,admin_id)
+ values
+ (
+ #{template_id},
+ #{customerId},
+ #{admin_id}
+ )
+
+
+
+ delete from system_pdf_template_relevance where customerId = #{customerId}
+
+
+
\ No newline at end of file
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpExportLogDao.xml
index 01643803..60cec696 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpImportLogDao.xml
index e6411a21..89801e13 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrCorpImportLogDao.xml
@@ -17,7 +17,7 @@
AND status = #{status}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsExportLogDao.xml
index 47d68535..1bfa2c67 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsImportLogDao.xml
index 72931891..9a222d09 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrInvProductsImportLogDao.xml
@@ -17,7 +17,7 @@
AND status = #{status}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderExportLogDao.xml
index 45eb81b1..41c06c0a 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderImportLogDao.xml
index 51a66f06..62bd0c6e 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrOrderImportLogDao.xml
@@ -17,7 +17,7 @@
AND status = #{status}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsExportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsExportLogDao.xml
index d6dab2d8..c9a8fa7f 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsExportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsExportLogDao.xml
@@ -17,7 +17,7 @@
AND `type` = #{type}
-
+ ORDER BY updateTime DESC
diff --git a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsImportLogDao.xml b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsImportLogDao.xml
index f9dc01f8..af6cea0f 100644
--- a/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsImportLogDao.xml
+++ b/api-admin/src/main/resources/mybatis/mapper/thrsys/ThrProductsImportLogDao.xml
@@ -17,7 +17,7 @@
AND status = #{status}
-
+ ORDER BY updateTime DESC