|
@@ -64,6 +64,8 @@ import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static java.util.Comparator.comparing;
|
|
|
+
|
|
|
public class HandInReceiveTicketPlugin extends AbstractFormPlugin implements RowClickEventListener {
|
|
|
|
|
|
private static Log log = LogFactory.getLog(HandInReceiveTicketPlugin.class);
|
|
@@ -402,7 +404,7 @@ public class HandInReceiveTicketPlugin extends AbstractFormPlugin implements Row
|
|
|
|
|
|
byte[] bytes = PrintServiceHelper.mergeMultiPdf(mergeArray);//拼接文件流
|
|
|
|
|
|
- String fileName = String.format("单据%s电子回单文件文件预览");
|
|
|
+ String fileName = String.format("单据%s电子回单文件文件预览",selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_NUMBER));
|
|
|
TempFileCache tfc = CacheFactory.getCommonCacheFactory().getTempFileCache();
|
|
|
// 设置临时文件有效时间
|
|
|
String tempUrl = tfc.saveAsFullUrl(fileName + ".pdf", bytes, 60 * 60 * 2);//文件流生成临时文件
|
|
@@ -466,23 +468,28 @@ public class HandInReceiveTicketPlugin extends AbstractFormPlugin implements Row
|
|
|
String checkMsg = checkSelectSingle();
|
|
|
switch (operateKey){
|
|
|
case HandInReceiveTicketConstant.OPERATE.MERGEPRINT:
|
|
|
- if(!StringUtils.isEmpty(checkMsg)){
|
|
|
- getView().showTipNotification(checkMsg);
|
|
|
- args.setCancel(true);
|
|
|
- return;
|
|
|
- }
|
|
|
+// if(!StringUtils.isEmpty(checkMsg)){
|
|
|
+// getView().showTipNotification(checkMsg);
|
|
|
+// args.setCancel(true);
|
|
|
+// return;
|
|
|
+// }
|
|
|
beforeDoPrint(args);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
protected void beforeDoPrint(BeforeDoOperationEventArgs args){
|
|
|
- DynamicObject billInfo = getSelectBillInfo(ErReimBurseBillConstant.KEY_BILLSTATUS);
|
|
|
+ List<DynamicObject> selectRows = getSelectRows();
|
|
|
List<String> status = Arrays.asList("E", "F", "G");
|
|
|
- if(!status.contains(billInfo.getString(ErReimBurseBillConstant.KEY_BILLSTATUS))){
|
|
|
- getView().showTipNotification(String.format("单据%s打印失败:只有审核通过、等待付款、已付款状态的单据允许打印。",billInfo.getString(ErReimBurseBillConstant.KEY_BILLNO)));
|
|
|
- args.setCancel(true);
|
|
|
- return;
|
|
|
+
|
|
|
+ for(DynamicObject selectRow : selectRows){
|
|
|
+ DynamicObject billInfo = BusinessDataServiceHelper.loadSingle(selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_BILLID),
|
|
|
+ selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_FORMID), ErReimBurseBillConstant.KEY_BILLSTATUS);
|
|
|
+ if(!status.contains(billInfo.getString(ErReimBurseBillConstant.KEY_BILLSTATUS))){
|
|
|
+ getView().showTipNotification(String.format("单据%s打印失败:只有审核通过、等待付款、已付款状态的单据允许打印。",billInfo.getString(ErReimBurseBillConstant.KEY_BILLNO)));
|
|
|
+ args.setCancel(true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -560,15 +567,23 @@ public class HandInReceiveTicketPlugin extends AbstractFormPlugin implements Row
|
|
|
}
|
|
|
|
|
|
protected void doMergetPrint() {
|
|
|
- DynamicObject selectRow = getSelectRows().get(0);
|
|
|
- Object companyId = selectRow.getDynamicObject(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_COMPANY).getPkValue();
|
|
|
- String formId = selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_FORMID);
|
|
|
- String billId = selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_BILLID);
|
|
|
- // 通过打印配置获取单据打印信息
|
|
|
- List<MergePrintEntity> printPdfConfig = ReceiveTicketUtils.getPrintPdfConfig(formId,Long.valueOf(billId),companyId);
|
|
|
- log.info(String.format("获取的打印信息为:%s", JSON.toJSONString(printPdfConfig)));
|
|
|
- String printFileName = String.format("%s报销信息打印",selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_NUMBER));
|
|
|
- String previewUrl = ReceiveTicketUtils.mergePrintPdf(getView(), printPdfConfig, printFileName);
|
|
|
+
|
|
|
+ List<DynamicObject> selectRows = getSelectRows();
|
|
|
+
|
|
|
+ List<MergePrintEntity> allPrintEntity = new ArrayList<>();
|
|
|
+
|
|
|
+ for(DynamicObject selectRow : selectRows){
|
|
|
+ Object companyId = selectRow.getDynamicObject(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_COMPANY).getPkValue();
|
|
|
+ String formId = selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_FORMID);
|
|
|
+ String billId = selectRow.getString(HandInReceiveTicketConstant.SCANBILLENTRY.KEY_NCKD_BILLID);
|
|
|
+ // 通过打印配置获取单据打印信息
|
|
|
+ List<MergePrintEntity> printPdfConfig = ReceiveTicketUtils.getPrintPdfConfig(formId,Long.valueOf(billId),companyId);
|
|
|
+ printPdfConfig.sort(comparing(MergePrintEntity::getIndex));
|
|
|
+ allPrintEntity.addAll(printPdfConfig);
|
|
|
+ }
|
|
|
+ log.info(String.format("获取的打印信息为:%s", JSON.toJSONString(allPrintEntity)));
|
|
|
+ String printFileName = String.format("报销信息打印");
|
|
|
+ String previewUrl = ReceiveTicketUtils.mergePrintPdf(getView(), allPrintEntity, printFileName);
|
|
|
getView().openUrl(previewUrl);
|
|
|
getView().showSuccessNotification("打印成功。");
|
|
|
}
|