Переглянути джерело

1.收退换打印功能增加批量单据打印功能。
2.修复查看电子回单报错

tanya 6 днів тому
батько
коміт
a1e8264c32

+ 1 - 1
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/util/ReceiveTicketUtils.java

@@ -50,7 +50,7 @@ public class ReceiveTicketUtils {
      */
     public static String mergePrintPdf(IFormView view , List<MergePrintEntity> tplNumberList , String fileName){
         List<byte[]> mergeArray = new ArrayList<>();
-        tplNumberList.sort(comparing(MergePrintEntity::getIndex));
+
 
         for (MergePrintEntity print : tplNumberList) {
             if(StringUtils.isEmpty(print.getFormId()) || CollectionUtils.isEmpty(print.getPkIds())) {

+ 35 - 20
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/HandInReceiveTicketPlugin.java

@@ -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("打印成功。");
     }