@Override protected void occur(Context context, CheckInEvent event) throws Throwable { if (CheckIsNull.isEmpty(event.getRelaOrderId()) || CheckIsNull.isEmpty(event.getType())) { throw new Throwable("相关单据编号和入库类型不能为空"); } OrderInfo info = null; BillsEnum billsEnum = null; switch (event.getType()) { // Purchase("01", "采购入库"), // // Irregular("02", "零星采购"), // // Return("03", "销售退货"), // // RetailReturn("04","零售退货"), // Other("05", "其他入库"); case Purchase: info = context.find(PurchaseOrderInfo.class, event.getRelaOrderId()); billsEnum = BillsEnum.PURCHASE; break; case Return: info = context.find(SaleCancel.class, event.getRelaOrderId()); billsEnum = BillsEnum.SALE_CANCEL; break; // case DirectSupply: // info = context.find(PurchaseOrderInfo.class, event.getRelaOrderId()); // billsEnum = BillsEnum.PURCHASE; // break; default: return; } if (CheckIsNull.isEmpty(info)) { throw new Throwable("相关单据编号在订单中不存在"); } StatusEnum newstatus = InventoryDataUtil.getOrderStatusByIn(context, event.getRelaOrderId()); if (!newstatus.isThis(info.getStatus())) { OrderUtil.modifystatus( billsEnum, context, info.getRECID(), newstatus, StatusEnum.getstatus(info.getStatus())); // 全部出库完成出库 if (newstatus == StatusEnum.Store_All) { if (BillsEnum.PURCHASE == billsEnum) { context.dispatch( new PurchaseOrderChangedEvent(info.getRECID(), ChangedType.StoreFinish)); } else { context.dispatch(new SalesReturnChangedEvent(info.getRECID(), ChangedType.StoreFinish)); } } } }
@Override protected void occur(Context context, CheckOutEvent event) throws Throwable { if (CheckIsNull.isEmpty(event.getRelaOrderId()) || CheckIsNull.isEmpty(event.getType())) { throw new Throwable("相关单据编号和出库类型不能为空"); } OrderInfo info = null; BillsEnum billsEnum = null; switch (event.getType()) { // Sales("01", "销售出库"), // // Return("02", "采购退货"), // // Retail("03", "零售出库"), // // Kit("04", "其他出库"); case Sales: info = context.find(SaleOrderInfo.class, event.getRelaOrderId()); billsEnum = BillsEnum.SALE; break; case Return: info = context.find(PurchaseCancel.class, event.getRelaOrderId()); billsEnum = BillsEnum.PURCHASE_CANCEL; break; default: return; } if (CheckIsNull.isEmpty(info)) { throw new Throwable("相关单据编号在订单中不存在"); } StatusEnum newstatus = InventoryDataUtil.getOrderStatusByOut(context, event.getRelaOrderId()); if (!newstatus.isThis(info.getStatus())) { OrderUtil.modifystatus( billsEnum, context, info.getRECID(), newstatus, StatusEnum.getstatus(info.getStatus())); // 全部出库完成出库 if (newstatus == StatusEnum.Store_All) { if (BillsEnum.SALE == billsEnum) { context.dispatch(new SalesOrderChangedEvent(info.getRECID(), ChangedType.StoreFinish)); } else { context.dispatch( new PurchaseReturnChangedEvent(info.getRECID(), ChangedType.StoreFinish)); } } } }
@Override protected void provide(Context context, ReportCommonKey key, List<ReportResult> list) throws Throwable { SubjectEnum subject = key.getSubject(); if (null == subject) { return; } if (CheckIsNull.isEmpty(key.getTargets())) { return; } switch (subject) { case GoodsItem: GoodsSubjectProvider.provide(context, key, list); break; case DateTime: DateTimeProvider.provide(context, key, list); break; /** 客户 */ case Customer: CustomerSubjectProvider.provide(context, key, list); break; /** 客户并销售人员 */ case Customer_Employee: Customer_EmployeeSubjectProvider.provide(context, key, list); break; /** 供应商 */ case Supplier: SupplierSubjectProvider.provide(context, key, list); break; /** 员工 */ case Employee: EmployeeSubjectProvider.provide(context, key, list); break; /** 部门 */ case Department: DepartmentSubjectProvider.provide(context, key, list); break; /** 地区 */ case Area: AreaSubjectProvider.provide(context, key, list); break; /** 库存台账 */ case InventoryBook: InventorySubjectProvider.provide(context, key, list); break; /** 公司 */ case Company: TenantSubjectProvider.provide(context, key, list); break; } }
@SuppressWarnings("unchecked") @Override protected ReportChartDatas provide(Context context, ReportCommonKey key) throws Throwable { List<ReportResult> list = context.getList(ReportResult.class, key); if (CheckIsNull.isEmpty(key.getOrderTarget())) { return null; } Enum target = null; SubjectEnum subject = null; if (key.isDateColumn()) { subject = SubjectEnum.DateTime; target = ReportTargetUtil.getTarget(subject, key.getOrderTarget()); } else { subject = key.getSubject(); target = ReportTargetUtil.getTarget(subject, "Id"); } ReportChartDatas datas = new ReportChartDatas(list, target); return datas; }