package grand; import foundation.action.ActionProvider; import foundation.ai.KingdeeAIProvider; import foundation.dao.DataPackage; import foundation.dao.DataSource; import foundation.dao.Filter; import foundation.dao.PackageItem; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; import foundation.data.object.EntitySaver; public class ImplantHandler extends ActionProvider { @Override protected void publishMethod() { //1. 更新植入单明细状态 addMethod("updateDetailBookCode"); //2. 更新植入单明细状态 addMethod("invalidInvoice"); //3. 植入单提交校验发票 addMethod("checkInvoice"); } public void updateDetailBookCode() throws Exception { DataPackage dataPackage = dataReader.getDataPackage(); DataPackage host = dataPackage.getHost(); PackageItem detailItem = host.getItem("so_implant_detail"); String bookCode = context.getStepParam(); DataObject dataObject = detailItem.getDataObject(); EntitySet details = detailItem.getEntitySet(DataSource.DB); EntitySaver saver = null; for (Entity entity : details) { saver = dataObject.createEntitySaver(entity); saver.set("book_code", bookCode); saver.update(); } } public void refreshStateInvoice() throws Exception { DataPackage dataPackage = dataReader.getDataPackage(); String invoiceState = context.getStepParam(); DataPackage host = dataPackage.getHost(); PackageItem invoiceItem = host.getItem("so_implant_invoice"); Entity masterEntity = dataPackage.getMasterEntity(); DataObject dataObject = invoiceItem.getDataObject(); EntitySet invoices = dataObject.getTableEntitySet(new Filter("implant_id", host.getMasterId())); String typeCode = masterEntity.getString("type_code"); if (!invalidInvoiceCheck(typeCode)) { return ; } EntitySaver saver = null; for (Entity entity : invoices) { if (entity.getBoolean("is_alive")) { saver = dataObject.createEntitySaver(entity); saver.set("is_alive", invoiceState); saver.update(); } } } public boolean invalidInvoiceCheck(String typeCode) throws Exception { boolean invalidInvoiceCheck = false; if ("alter_invoice".equalsIgnoreCase(typeCode) || "whole".equalsIgnoreCase(typeCode) ) { invalidInvoiceCheck = true; } return invalidInvoiceCheck; } public void distinctCheck() throws Exception { DataPackage dataPackage = dataReader.getDataPackage(); dataPackage.loadOneDataFromDB(); PackageItem invoiceItem = dataPackage.getItem("so_implant_invoice"); EntitySet entitySet = invoiceItem.getEntitySet(DataSource.DB); if (entitySet.size() > 0 ) { Entity entity = entitySet.getEntity(0); boolean invalidInvoiceCheck = KingdeeAIProvider.distinctCheck(entity.getString("code"), entity.getString("number")); if (!invalidInvoiceCheck) { context.terminateTask(); dataWriter.reportOneError("distinctCheck", "发票已上报"); } } } }