This commit is contained in:
parent
2828519f1c
commit
384afc6429
|
|
@ -20,6 +20,7 @@ import cn.hangtag.module.oms.dal.mysql.productinfo.ProductInfoMapper;
|
|||
import cn.hangtag.module.oms.serialnumber.CodingRulesUtils;
|
||||
import cn.hangtag.module.oms.service.customer.CustomerService;
|
||||
import cn.hangtag.module.oms.service.productinfo.ProductInfoService;
|
||||
import cn.hangtag.module.oms.util.PDFUtils;
|
||||
import cn.hangtag.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.hangtag.module.system.service.user.AdminUserService;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
|
|
@ -209,9 +210,11 @@ public class DeliveryOrderServiceImpl implements DeliveryOrderService {
|
|||
@Override
|
||||
public void generatePdf(HttpServletResponse response, List<Long> ids) throws IOException {
|
||||
List<String> delFiles = new ArrayList<>();
|
||||
List<File> files = new ArrayList<>();
|
||||
List<File> mergePdfFiles = new ArrayList<>();
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
List<DeliveryOrderDO> deliveryOrders = deliveryOrderMapper.selectList(DeliveryOrderDO::getId, ids);
|
||||
for (DeliveryOrderDO deliveryOrder : deliveryOrders) {
|
||||
List<File> files = new ArrayList<>();
|
||||
List<DeliveryOrderEntryDO> entrys = getDeliveryOrderEntryListByParentId(deliveryOrder.getId());
|
||||
List<List<DeliveryOrderEntryDO>> split = ListUtil.split(entrys, 6);
|
||||
int pageIndex = 1;
|
||||
|
|
@ -219,7 +222,6 @@ public class DeliveryOrderServiceImpl implements DeliveryOrderService {
|
|||
String htmlContent = generateHtmlContent(deliveryOrder, entrys2,pageIndex);
|
||||
|
||||
//docker生成路径
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
String fileName = StrUtil.format(pathUrl + "/DeliveryOrder_{}", deliveryOrder.getBillno() + "_" + pageIndex);
|
||||
//主宿机生成路径
|
||||
String fileName2 = StrUtil.format(pdfPath + "/DeliveryOrder_{}", deliveryOrder.getBillno() + "_" + pageIndex);
|
||||
|
|
@ -245,14 +247,24 @@ public class DeliveryOrderServiceImpl implements DeliveryOrderService {
|
|||
delFiles.add(templatePath);
|
||||
pageIndex++;
|
||||
}
|
||||
|
||||
try {
|
||||
String mergePdfFileName = StrUtil.format(pathUrl + "/DeliveryOrders_{}.pdf", deliveryOrder.getBillno());
|
||||
PDFUtils.mergePdf(files,mergePdfFileName);
|
||||
mergePdfFiles.add(FileUtil.file(mergePdfFileName));
|
||||
delFiles.add(mergePdfFileName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
|
||||
|
||||
String zipFileName = StrUtil.format(pathUrl + "/DeliveryOrder_{}", new Date().getTime());
|
||||
|
||||
// 压缩到的位置
|
||||
File zipFile = new File(zipFileName + ".zip");
|
||||
|
||||
ZipUtil.zip(zipFile, false, files.toArray(new File[files.size()]));
|
||||
ZipUtil.zip(zipFile, false, mergePdfFiles.toArray(new File[mergePdfFiles.size()]));
|
||||
|
||||
//downloadZip(zipFile,response);
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ import cn.hangtag.module.oms.service.product.ProductPriceService;
|
|||
import cn.hangtag.module.oms.service.productinfo.ProductInfoService;
|
||||
import cn.hangtag.module.oms.service.salecontract.SaleContractService;
|
||||
import cn.hangtag.module.oms.service.saleordersku.SaleOrderSkuService;
|
||||
import cn.hangtag.module.oms.util.PDFUtils;
|
||||
import cn.hangtag.module.system.dal.dataobject.brand.UserBrandDO;
|
||||
import cn.hangtag.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.hangtag.module.system.dal.mysql.brand.UserBrandMapper;
|
||||
|
|
@ -175,6 +176,9 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
@Value("${oms.partybAddress}")
|
||||
private String partybAddress;
|
||||
|
||||
@Value("${oms.phone}")
|
||||
private String phone;
|
||||
|
||||
@Value("${pdfPath}")
|
||||
private String pdfPath;
|
||||
|
||||
|
|
@ -515,12 +519,25 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
pageIndex++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
String zipFileName = StrUtil.format(pathUrl + "/SaleContract_{}0", new Date().getTime());
|
||||
|
||||
List<File> mergePdfFiles = new ArrayList<>();
|
||||
try {
|
||||
String mergePdfFileName = StrUtil.format(pathUrl + "/SaleContracts_{}.pdf", saleOrder.getBillno());
|
||||
PDFUtils.mergePdf(files,mergePdfFileName);
|
||||
mergePdfFiles.add(FileUtil.file(mergePdfFileName));
|
||||
delFiles.add(mergePdfFileName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 压缩到的位置
|
||||
File zipFile = new File(zipFileName + ".zip");
|
||||
ZipUtil.zip(zipFile, false, files.toArray(new File[files.size()]));
|
||||
ZipUtil.zip(zipFile, false, mergePdfFiles.toArray(new File[mergePdfFiles.size()]));
|
||||
|
||||
|
||||
//发送消息
|
||||
|
|
@ -676,7 +693,7 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
context.setVariable("bizDate", DateUtil.date(saleContract.getBizdate()).toDateStr());
|
||||
context.setVariable("customerNo", customer.getNumber());
|
||||
context.setVariable("headUserName", saleContract.getHead());
|
||||
context.setVariable("phone", saleContract.getPhone());
|
||||
context.setVariable("phone", phone);
|
||||
context.setVariable("fax", saleContract.getFax());
|
||||
context.setVariable("clerk", saleContract.getClerk());
|
||||
context.setVariable("saleOrderNo", saleContract.getCustomerBuyNo());
|
||||
|
|
@ -736,21 +753,23 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
@Override
|
||||
public void generatePdf(HttpServletResponse response, List<Long> ids) throws IOException {
|
||||
List<String> delFiles = new ArrayList<>();
|
||||
List<File> files = new ArrayList<>();
|
||||
|
||||
List<File> mergePdfFiles = new ArrayList<>();
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
List<SaleOrderDO> saleOrders = saleOrderMapper.selectList(SaleOrderDO::getId, ids);
|
||||
for (SaleOrderDO saleOrder : saleOrders) {
|
||||
List<SaleOrderEntryDO> entrys = getSaleOrderEntryListByParentId(saleOrder.getId());
|
||||
SaleContractSaveReqVO saleContractVO = toSaleContractVO(saleOrder, entrys);
|
||||
SaleContractDO saleContract = BeanUtils.toBean(saleContractVO, SaleContractDO.class);
|
||||
List<SaleContractEntryDO> saleContractEntrys = BeanUtils.toBean(saleContractVO.getSaleContractEntrys(), SaleContractEntryDO.class);
|
||||
|
||||
List<File> files = new ArrayList<>();
|
||||
List<List<SaleContractEntryDO>> split = ListUtil.split(saleContractEntrys, 6);
|
||||
int pageIndex = 1;
|
||||
for (List<SaleContractEntryDO> saleContractEntryDOS : split) {
|
||||
String htmlContent = generateHtmlContent(saleContract, saleContractEntryDOS,pageIndex);
|
||||
|
||||
//docker生成路径
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
|
||||
String fileName = StrUtil.format(pathUrl + "/SaleContract_{}", saleOrder.getBillno()+"_"+pageIndex);
|
||||
//主宿机生成路径
|
||||
String fileName2 = StrUtil.format(pdfPath + "/SaleContract_{}", saleOrder.getBillno()+"_"+pageIndex);
|
||||
|
|
@ -775,14 +794,22 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
delFiles.add(templatePath);
|
||||
pageIndex++;
|
||||
}
|
||||
|
||||
try {
|
||||
String mergePdfFileName = StrUtil.format(pathUrl + "/SaleContracts_{}.pdf", saleOrder.getBillno());
|
||||
PDFUtils.mergePdf(files,mergePdfFileName);
|
||||
mergePdfFiles.add(FileUtil.file(mergePdfFileName));
|
||||
delFiles.add(mergePdfFileName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
String pathUrl = System.getProperty("user.dir") + "/pdffile";
|
||||
String zipFileName = StrUtil.format(pathUrl + "/SaleContract_{}", new Date().getTime());
|
||||
|
||||
// 压缩到的位置
|
||||
File zipFile = new File(zipFileName + ".zip");
|
||||
|
||||
ZipUtil.zip(zipFile, false, files.toArray(new File[files.size()]));
|
||||
ZipUtil.zip(zipFile, false, mergePdfFiles.toArray(new File[mergePdfFiles.size()]));
|
||||
|
||||
//downloadZip(zipFile,response);
|
||||
|
||||
|
|
@ -1428,7 +1455,11 @@ public class SaleOrderServiceImpl implements SaleOrderService {
|
|||
if (FuncUtil.isEmpty(billno)) {
|
||||
billno = getNewContractCode2();
|
||||
}*/
|
||||
saveReqVO.setBillno(saleOrder.getSaleContractCode());
|
||||
String saleContractCodePrefix = saleOrder.getSaleContractCodePrefix();
|
||||
if(saleContractCodePrefix==null){
|
||||
saleContractCodePrefix = "";
|
||||
}
|
||||
saveReqVO.setBillno(saleContractCodePrefix+saleOrder.getSaleContractCode());
|
||||
saveReqVO.setCustomerId(saleOrder.getCustomerId());
|
||||
saveReqVO.setCustomerName(customer.getName());
|
||||
saveReqVO.setCustomerBuyNo(saleOrder.getContractCode());
|
||||
|
|
|
|||
|
|
@ -186,73 +186,73 @@ public class StatementAccountServiceImpl implements StatementAccountService {
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void generateStatementAccountData() {
|
||||
//查询当月数据,按客户分组创建对账单
|
||||
LambdaQueryWrapper<DeliveryOrderDO> lambdaQueryWrapperx = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapperx.between(DeliveryOrderDO::getDate, DateUtil.beginOfMonth(DateUtil.date()),DateUtil.endOfMonth(DateUtil.date()));
|
||||
List<DeliveryOrderDO> deliveryOrders = deliveryOrderMapper.selectList(lambdaQueryWrapperx);
|
||||
Map<Long,List<DeliveryOrderDO>> groupCustomerMap = new HashMap<>();
|
||||
|
||||
for (DeliveryOrderDO deliveryOrder : deliveryOrders) {//按客户分组
|
||||
if(groupCustomerMap.containsKey(deliveryOrder.getCustomerId())){
|
||||
List<DeliveryOrderDO> list = groupCustomerMap.get(deliveryOrder.getCustomerId());
|
||||
list.add(deliveryOrder);
|
||||
groupCustomerMap.put(deliveryOrder.getCustomerId(), list);
|
||||
}else {
|
||||
groupCustomerMap.put(deliveryOrder.getCustomerId(), Stream.of(deliveryOrder).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
|
||||
for (Long customerId : groupCustomerMap.keySet()) {
|
||||
List<DeliveryOrderDO> deliveryOrders2 = groupCustomerMap.get(customerId);
|
||||
List<StatementAccountEntryDO> listentrys = new ArrayList<>();
|
||||
for (DeliveryOrderDO deliveryOrder : deliveryOrders2) {
|
||||
//创建对账单
|
||||
StatementAccountSaveReqVO saveReqVO = new StatementAccountSaveReqVO();
|
||||
boolean isAdd = true;
|
||||
//查询是否存在重复数据
|
||||
LambdaQueryWrapper<StatementAccountDO> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper2.eq(StatementAccountDO::getCustomerId,customerId);
|
||||
lambdaQueryWrapper2.between(StatementAccountDO::getDate, DateUtil.beginOfMonth(DateUtil.date()),DateUtil.endOfMonth(DateUtil.date()));
|
||||
List<StatementAccountDO> statementAccounts2 = statementAccountMapper.selectList(lambdaQueryWrapper2);
|
||||
if(!statementAccounts2.isEmpty()){
|
||||
StatementAccountDO statementAccountDO = statementAccounts2.get(0);
|
||||
saveReqVO.setId(statementAccountDO.getId());
|
||||
saveReqVO.setBillno(statementAccountDO.getBillno());
|
||||
saveReqVO.setCustomerId(statementAccountDO.getCustomerId());
|
||||
saveReqVO.setDate(statementAccountDO.getDate());
|
||||
isAdd = false;
|
||||
}else {
|
||||
DateTime date = DateUtil.beginOfMonth(new Date(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()));
|
||||
saveReqVO.setBillno(getNewBillNo());
|
||||
saveReqVO.setDate(date.toLocalDateTime());
|
||||
}
|
||||
saveReqVO.setCustomerId(deliveryOrder.getCustomerId());
|
||||
List<DeliveryOrderEntryDO> deliveryOrderEntrys = deliveryOrderService.getDeliveryOrderEntryListByParentId(deliveryOrder.getId());
|
||||
for (DeliveryOrderEntryDO deliveryOrderEntry : deliveryOrderEntrys) {
|
||||
StatementAccountEntryDO saveEntry = new StatementAccountEntryDO();
|
||||
saveEntry.setSaleContractNo(deliveryOrder.getSaleContractNo());
|
||||
saveEntry.setOrderDate(deliveryOrder.getSaleorderDate());
|
||||
saveEntry.setDeliveryNo(deliveryOrder.getBillno());
|
||||
saveEntry.setDeliveryDate(deliveryOrder.getDate());
|
||||
saveEntry.setMaterialId(deliveryOrderEntry.getMaterialId());
|
||||
saveEntry.setMaterialCode(deliveryOrderEntry.getMaterialNumber());
|
||||
saveEntry.setMaterialName(deliveryOrderEntry.getMaterialName());
|
||||
saveEntry.setQty(deliveryOrderEntry.getQty());
|
||||
saveEntry.setPrice(deliveryOrderEntry.getPrice());
|
||||
saveEntry.setCurrency(deliveryOrderEntry.getCurrency());
|
||||
saveEntry.setAmount(deliveryOrderEntry.getPrice().multiply(BigDecimal.valueOf(deliveryOrderEntry.getQty())).setScale(2, RoundingMode.HALF_UP));
|
||||
saveEntry.setContact(deliveryOrder.getContact());
|
||||
saveEntry.setUnit(deliveryOrderEntry.getUnit());
|
||||
listentrys.add(saveEntry);
|
||||
}
|
||||
saveReqVO.setStatementAccountEntrys(listentrys);
|
||||
if(!isAdd){
|
||||
updateStatementAccount(saveReqVO);
|
||||
}else {
|
||||
createStatementAccount(saveReqVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
// //查询当月数据,按客户分组创建对账单
|
||||
// LambdaQueryWrapper<DeliveryOrderDO> lambdaQueryWrapperx = new LambdaQueryWrapper<>();
|
||||
// lambdaQueryWrapperx.between(DeliveryOrderDO::getDate, DateUtil.beginOfMonth(DateUtil.date()),DateUtil.endOfMonth(DateUtil.date()));
|
||||
// List<DeliveryOrderDO> deliveryOrders = deliveryOrderMapper.selectList(lambdaQueryWrapperx);
|
||||
// Map<Long,List<DeliveryOrderDO>> groupCustomerMap = new HashMap<>();
|
||||
//
|
||||
// for (DeliveryOrderDO deliveryOrder : deliveryOrders) {//按客户分组
|
||||
// if(groupCustomerMap.containsKey(deliveryOrder.getCustomerId())){
|
||||
// List<DeliveryOrderDO> list = groupCustomerMap.get(deliveryOrder.getCustomerId());
|
||||
// list.add(deliveryOrder);
|
||||
// groupCustomerMap.put(deliveryOrder.getCustomerId(), list);
|
||||
// }else {
|
||||
// groupCustomerMap.put(deliveryOrder.getCustomerId(), Stream.of(deliveryOrder).collect(Collectors.toList()));
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (Long customerId : groupCustomerMap.keySet()) {
|
||||
// List<DeliveryOrderDO> deliveryOrders2 = groupCustomerMap.get(customerId);
|
||||
// List<StatementAccountEntryDO> listentrys = new ArrayList<>();
|
||||
// for (DeliveryOrderDO deliveryOrder : deliveryOrders2) {
|
||||
// //创建对账单
|
||||
// StatementAccountSaveReqVO saveReqVO = new StatementAccountSaveReqVO();
|
||||
// boolean isAdd = true;
|
||||
// //查询是否存在重复数据
|
||||
// LambdaQueryWrapper<StatementAccountDO> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
|
||||
// lambdaQueryWrapper2.eq(StatementAccountDO::getCustomerId,customerId);
|
||||
// lambdaQueryWrapper2.between(StatementAccountDO::getDate, DateUtil.beginOfMonth(DateUtil.date()),DateUtil.endOfMonth(DateUtil.date()));
|
||||
// List<StatementAccountDO> statementAccounts2 = statementAccountMapper.selectList(lambdaQueryWrapper2);
|
||||
// if(!statementAccounts2.isEmpty()){
|
||||
// StatementAccountDO statementAccountDO = statementAccounts2.get(0);
|
||||
// saveReqVO.setId(statementAccountDO.getId());
|
||||
// saveReqVO.setBillno(statementAccountDO.getBillno());
|
||||
// saveReqVO.setCustomerId(statementAccountDO.getCustomerId());
|
||||
// saveReqVO.setDate(statementAccountDO.getDate());
|
||||
// isAdd = false;
|
||||
// }else {
|
||||
// DateTime date = DateUtil.beginOfMonth(new Date(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()));
|
||||
// saveReqVO.setBillno(getNewBillNo());
|
||||
// saveReqVO.setDate(date.toLocalDateTime());
|
||||
// }
|
||||
// saveReqVO.setCustomerId(deliveryOrder.getCustomerId());
|
||||
// List<DeliveryOrderEntryDO> deliveryOrderEntrys = deliveryOrderService.getDeliveryOrderEntryListByParentId(deliveryOrder.getId());
|
||||
// for (DeliveryOrderEntryDO deliveryOrderEntry : deliveryOrderEntrys) {
|
||||
// StatementAccountEntryDO saveEntry = new StatementAccountEntryDO();
|
||||
// saveEntry.setSaleContractNo(deliveryOrder.getSaleContractNo());
|
||||
// saveEntry.setOrderDate(deliveryOrder.getSaleorderDate());
|
||||
// saveEntry.setDeliveryNo(deliveryOrder.getBillno());
|
||||
// saveEntry.setDeliveryDate(deliveryOrder.getDate());
|
||||
// saveEntry.setMaterialId(deliveryOrderEntry.getMaterialId());
|
||||
// saveEntry.setMaterialCode(deliveryOrderEntry.getMaterialNumber());
|
||||
// saveEntry.setMaterialName(deliveryOrderEntry.getMaterialName());
|
||||
// saveEntry.setQty(deliveryOrderEntry.getQty());
|
||||
// saveEntry.setPrice(deliveryOrderEntry.getPrice());
|
||||
// saveEntry.setCurrency(deliveryOrderEntry.getCurrency());
|
||||
// saveEntry.setAmount(deliveryOrderEntry.getPrice().multiply(BigDecimal.valueOf(deliveryOrderEntry.getQty())).setScale(2, RoundingMode.HALF_UP));
|
||||
// saveEntry.setContact(deliveryOrder.getContact());
|
||||
// saveEntry.setUnit(deliveryOrderEntry.getUnit());
|
||||
// listentrys.add(saveEntry);
|
||||
// }
|
||||
// saveReqVO.setStatementAccountEntrys(listentrys);
|
||||
// if(!isAdd){
|
||||
// updateStatementAccount(saveReqVO);
|
||||
// }else {
|
||||
// createStatementAccount(saveReqVO);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package cn.hangtag.module.oms.util;
|
||||
|
||||
import org.apache.pdfbox.multipdf.PDFMergerUtility;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* JDK1.8 PDF合并工具 PDFBox
|
||||
*/
|
||||
public class PDFUtils {
|
||||
|
||||
/**
|
||||
* 合并多个PDF文件到新文件
|
||||
* @param sourceFiles 待合并pdf路径集合
|
||||
* @param targetPath 输出pdf路径
|
||||
* @throws Exception IO、文件解析异常
|
||||
*/
|
||||
public static void mergePdf(List<File> sourceFiles, String targetPath) throws Exception {
|
||||
PDFMergerUtility merger = new PDFMergerUtility();
|
||||
merger.setDestinationFileName(targetPath);
|
||||
|
||||
for (File file : sourceFiles) {
|
||||
if (!file.exists() || file.length() <= 0) {
|
||||
throw new RuntimeException("PDF文件不存在或为空:" + file.getPath());
|
||||
}
|
||||
merger.addSource(file);
|
||||
}
|
||||
// 执行合并,传null使用默认内存流
|
||||
merger.mergeDocuments(null);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue