package fi.rim.fromPlugin; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.form.control.Button; import kd.bos.form.control.Control; import kd.bos.form.control.EntryGrid; import kd.bos.form.control.events.RowClickEventListener; import kd.bos.form.control.events.TabSelectEvent; import kd.bos.form.control.events.TabSelectListener; import kd.bos.form.control.events.UploadListener; import kd.bos.msgjet.MsgSendFactory; import kd.bos.orm.util.CollectionUtils; import kd.imc.rim.common.constant.InputInvoiceTypeEnum; import kd.imc.rim.common.helper.ExcelHelper; import kd.imc.rim.common.invoice.fpzs.FpzsMainService; import kd.imc.rim.common.invoice.query.AttachQueryService; import kd.imc.rim.common.invoice.verify.VerifyStatisticsService; import kd.imc.rim.common.invoice.verify.VerifyUtil; import kd.imc.rim.common.license.LicenseFormPlugin; import kd.imc.rim.common.service.InvoiceAutoFillBillService; import kd.imc.rim.common.service.InvoiceLog; import kd.imc.rim.common.utils.BigDecimalUtil; import kd.imc.rim.common.utils.CacheHelper; import java.util.EventObject; import java.util.Iterator; import java.util.Map; public class FpzsMainEXPlugin extends LicenseFormPlugin implements RowClickEventListener, UploadListener, TabSelectListener { private static final String BTN_IMPORT = "btn_import"; @Override public void tabSelected(TabSelectEvent tabSelectEvent) {} public void initialize() { EntryGrid entryGrid = (EntryGrid)this.getView().getControl("operate_entry"); entryGrid.addRowClickListener(this); EntryGrid entryGridAttach = (EntryGrid)this.getView().getControl("operate_entry_attach"); entryGridAttach.addRowClickListener(this); Button excelDownload = (Button)this.getView().getControl("excel_download"); excelDownload.addClickListener(this); Button importButton = (Button)this.getView().getControl("btn_import"); importButton.addClickListener(this); Button uploadFile = (Button)this.getView().getControl("upload_file"); uploadFile.addUploadListener(this); Button uploadInvoiceAttach = (Button)this.getView().getControl("upload_invoice_attach"); uploadInvoiceAttach.addUploadListener(this); Button uploadInvoiceAttachUnimport = (Button)this.getView().getControl("upload_invoice_attach2"); uploadInvoiceAttachUnimport.addUploadListener(this); } public void click(EventObject evt) { Control properties = (Control)evt.getSource(); String clickKey = properties.getKey(); if ("excel_download".equals(clickKey)) { ExcelHelper.downloadTemplate(this, "templates", "发票查验模板.xlsx"); } else if ("btn_import".equals(clickKey)) { Map param = FpzsMainService.getCustomParam(this); Object linkKey = param.get("linkKey"); int attachTotal = this.getModel().getEntryRowCount("attach_grid_entry"); JSONObject returnData = new JSONObject(); JSONArray attachData = new JSONArray(); String billId = "billId"; if (!CollectionUtils.isEmpty(param)) { billId = (String)param.get("billId"); } AttachQueryService attachQueryService = new AttachQueryService(); String entityId = (String)param.get("entityId"); String resource = (String)param.get("resource"); JSONArray attachCacheArray = new JSONArray(); String key; for(int i = 0; i < attachTotal; ++i) { String serialNo = (String)this.getModel().getValue("serial_no3", i); String attachId = (String)this.getModel().getValue("attachid", i); JSONObject attach = new JSONObject(true); attach.put("serialNo", serialNo); attach.put("attachId", attachId); attach.put("attachType", (String)this.getModel().getValue("attach_type", i)); key = (String)this.getModel().getValue("attach_name", i); attach.put("attachName", key); String fileExtension = (String)this.getModel().getValue("file_extension", i); attach.put("fileExtension", fileExtension); attach.put("originalFileName", key + '.' + fileExtension); attach.put("attachNo", (String)this.getModel().getValue("attach_no", i)); attach.put("attachUrl", (String)this.getModel().getValue("attach_path", i)); attach.put("remark", (String)this.getModel().getValue("attach_remark", i)); attach.put("attachIcon", (String)this.getModel().getValue("attach_icon", i)); attach.put("uploadDate", this.getModel().getValue("upload_date", i)); Object pkValue = this.getModel().getValue("attach_category_grid"); Object pkValue2 = this.getModel().getValue("attach_categoryid"); attach.put("expenseId", billId); DynamicObject attachCategory = (DynamicObject)this.getModel().getValue("attach_category_grid", i); if (attachCategory != null) { attach.put("attachCategory", attachCategory.getLong("id")); } attachCacheArray.add(attach); JSONObject dataJson = new JSONObject(); dataJson.put("serialNo", serialNo); dataJson.put("attachId", attachId); dataJson.put("attachUrl", (String)this.getModel().getValue("attach_path", i)); dataJson.put("attachType", (String)this.getModel().getValue("attach_type", i)); dataJson.put("attachNo", (String)this.getModel().getValue("attach_no", i)); dataJson.put("attachName", (String)this.getModel().getValue("attach_name", i)); dataJson.put("remark", (String)this.getModel().getValue("attach_remark", i)); dataJson.put("attachSize", this.getModel().getValue("attach_size", i)); dataJson.put("attachIcon", this.getModel().getValue("attach_icon", i)); dataJson.put("uploadDate", this.getModel().getValue("upload_date", i)); attachData.add(dataJson); } attachQueryService.addFpzsAttach(billId, entityId, resource, attachCacheArray); returnData.put("attachData", attachData); JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId()); JSONArray invoiceData = new JSONArray(); JSONArray invoiceVerifyData = new JSONArray(); Iterator iterator = dataJson.keySet().iterator(); while(iterator.hasNext()) { key = (String)iterator.next(); JSONObject invoice = dataJson.getJSONObject(key); invoiceVerifyData.add(invoice); String errorLevel = invoice.getString("errorLevel"); String invoiceType = invoice.getString("invoiceType"); String serialNo = invoice.getString("serialNo"); VerifyUtil.updateDataStatus(errorLevel, serialNo, InputInvoiceTypeEnum.getInvoiceTypeByAwsType(invoiceType), Boolean.TRUE); if (!FpzsMainService.isFilter(invoice) && !invoice.isEmpty()) { if (!"expense_pc".equals(param.get("resource"))) { invoice.remove("validateMessage_html"); } invoiceData.add(invoice); } } this.saveVerifyResult(invoiceVerifyData); if (attachTotal < 1 && invoiceData.isEmpty()) { this.getView().showTipNotification("不存在符合导入单据的发票,请检查是否已采集发票或采集的发票是否合规", 3000); return; } returnData.put("invoiceData", invoiceData);//发票助手导入单据的数据 Object pushType = param.get("pushType"); InvoiceLog.insertExpenseLog("发票助手导入单据", String.valueOf(param.get("billId")), String.valueOf(param.get("billNo")), returnData.toJSONString()); if (pushType != null) { if ("socket".equals(pushType.toString())) { MsgSendFactory.getSender().send(linkKey.toString(), returnData.toJSONString()); } else if ("poll".equals(pushType.toString())) { CacheHelper.put("rim_push:" + linkKey, returnData.toJSONString(), 120); } } else { InvoiceAutoFillBillService iafbs = new InvoiceAutoFillBillService(); iafbs.autoFill(this.getView(), returnData); this.getView().returnDataToParent(returnData); this.getView().close(); } } } private void saveVerifyResult(JSONArray invoices) { if (!CollectionUtils.isEmpty(invoices)) { Map param = FpzsMainService.getCustomParam(this); VerifyStatisticsService.asyncSaveVerifyStatistics(invoices, BigDecimalUtil.transDecimal(param.get("orgId")).longValue(), (String)param.get("userId")); } } }