/* * 获取对象列表 */ public Object[] getElements(Context context, STableStatus tablestatus) { GetGoodsSplitBillListKey key = new GetGoodsSplitBillListKey(tablestatus.getBeginIndex(), tablestatus.getPageSize(), false); if (CheckIsNull.isNotEmpty(tablestatus.getSortColumn())) { key.setSortField(getSortField(tablestatus.getSortColumn())); key.setSortType(getSortType(tablestatus.getSortDirection())); } key.setStatus(new GoodsSplitStatus[] {GoodsSplitStatus.Approvaling}); key.setSearchText(searchText.getText()); key.setBeginTime(context.find(QueryTerm.class, queryTermList.getText()).getStartTime()); key.setEndTime(context.find(QueryTerm.class, queryTermList.getText()).getEndTime()); ListEntity<GoodsSplitItem> entity = context.find(ListEntity.class, key); List<GoodsSplitItem> itemList = entity.getItemList(); // if (CheckIsNull.isEmpty(itemList)) { // countLabel.setText("0"); // return null; // } GoodsSplitItem[] items = new GoodsSplitItem[itemList.size()]; for (int i = 0; i < itemList.size(); i++) { items[i] = itemList.get(i); itemMap.put(items[i].getRECID().toString(), items[i]); } int size = items.length; if (tablestatus.getPageNo() != STableStatus.FIRSTPAGE) { String preSize = countLabel.getText(); if (StringHelper.isNotEmpty(preSize)) { size += Integer.parseInt(preSize); } } countLabel.setText(String.valueOf(size)); // countLabel.setText("" + items.length); countLabel.getParent().getParent().layout(); return items; }
/** 对一个入库单实体添加基础数据 */ private void fillEntity(Context context, Instorage entity, String type) { Login login = context.find(Login.class); Employee emp = context.find(Employee.class, login.getEmployeeId()); entity.setRECID(context.newRECID()); entity.setSheetType(type); entity.setCreateDate(new Date().getTime()); if (CheckIsNull.isNotEmpty(entity.getPartnerId())) { Partner partner = context.find(Partner.class, entity.getPartnerId()); if (null != partner) { entity.setPartnerName(partner.getName()); entity.setPartnerShortName(partner.getShortName()); entity.setPartnerCode(partner.getCode()); } } Store store = context.find(Store.class, entity.getStoreId()); if (null != store) { entity.setStoreName(store.getName()); entity.setStoreNamePY(PinyinHelper.getLetter(store.getName())); } if (CheckingInType.Irregular.getCode().equals(type) || CheckingInType.Kit.getCode().equals(type)) { entity.setCreatorId(login.getEmployeeId()); entity.setCreator(emp.getName()); } }
/** * @param context * @param key * @param list */ private static void inventoryProvider( Context context, ReportCommonKey key, List<ReportResult> list) { List<InventoryInfo> glist = context.getList(InventoryInfo.class, new GetExceptionInventoryKey()); Set<GUID> set = new HashSet<GUID>(); for (InventoryInfo gi : glist) { set.add(gi.getGoodsItemId()); } for (GUID id : set) { GoodsInventorySumKey sumkey = new GoodsInventorySumKey(); sumkey.setGoodsItemId(id); GoodsInventorySum gi = context.find(GoodsInventorySum.class, sumkey); ReportResult rr = new ReportResult(); GoodsItem item = context.find(GoodsItem.class, id); rr.setTargetValue(GoodsItemEnum.GoodsName, item.getGoodsName()); rr.setTargetValue(GoodsItemEnum.GoodsAttr, item.getPropertiesWithoutUnit()); rr.setTargetValue(GoodsItemEnum.GoodsUnit, item.getGoodsUnit()); double inventoryAmount = gi.getTotalAmount(); double deliveryingCount = gi.getTotalToDeliverCount(); double iventoryCount = gi.getTotalCount(); double iventoryDifference = iventoryCount - deliveryingCount; rr.setTargetValue(GoodsItemEnum.InventoryCount, iventoryCount); rr.setTargetValue(GoodsItemEnum.InventoryDifference, iventoryDifference); rr.setTargetValue(GoodsItemEnum.InventoryAmount, inventoryAmount); rr.setOrderObj(GoodsItemEnum.InventoryCount); list.add(rr); } ComparatorUtils.sort(list, "orderObj", false); }
/** 保存明细数据 */ private void addDetails(Context context, Instorage entity, List<InstorageItem> detailList) throws Exception { if (null == detailList || detailList.isEmpty()) { throw new Exception("生成入库单失败(明细数据缺失)"); } for (InstorageItem det : detailList) { det.setSheetId(entity.getRECID()); det.setId(context.newRECID()); context.handle(new InstorageItemTask(det), Method.INSERT); } }
@Override protected void handle(Context context, CheckinSheetTask task) throws Throwable { InsertSqlBuilder ib = new InsertSqlBuilder(context); ib.setTable(ERPTableNames.Inventory.CheckinSheet.getTableName()); ib.addColumn("RECID", ib.guid, task.getEntity().getRECID()); ib.addColumn("sheetNo", ib.STRING, task.getEntity().getSheetNo()); ib.addColumn("sheetType", ib.STRING, task.getEntity().getSheetType()); ib.addColumn("partnerId", ib.guid, task.getEntity().getPartnerId()); ib.addColumn("partnerName", ib.STRING, task.getEntity().getPartnerName()); ib.addColumn("namePY", ib.STRING, task.getEntity().getNamePY()); ib.addColumn("partnerShortName", ib.STRING, task.getEntity().getPartnerShortName()); ib.addColumn("relaBillsId", ib.guid, task.getEntity().getRelaBillsId()); ib.addColumn("relaBillsNo", ib.STRING, task.getEntity().getRelaBillsNo()); ib.addColumn("storeId", ib.guid, task.getEntity().getStoreId()); ib.addColumn("storeName", ib.STRING, task.getEntity().getStoreName()); ib.addColumn("storeNamePY", ib.STRING, task.getEntity().getStoreNamePY()); ib.addColumn("goodsFrom", ib.STRING, task.getEntity().getGoodsFrom()); ib.addColumn("remark", ib.STRING, task.getEntity().getRemark()); ib.addColumn("buyPerson", ib.STRING, task.getEntity().getBuyPerson()); ib.addColumn("buyDate", ib.DATE, task.getEntity().getBuyDate()); ib.addColumn("amount", ib.DOUBLE, task.getEntity().getAmount()); ib.addColumn("askedAmount", ib.DOUBLE, task.getEntity().getAskedAmount()); ib.addColumn("paidAmount", ib.DOUBLE, task.getEntity().getPaidAmount()); ib.addColumn("disAmount", ib.DOUBLE, task.getEntity().getDisAmount()); ib.addColumn("checkinDate", ib.DATE, task.getEntity().getCheckinDate()); ib.addColumn("checkinPerson", ib.guid, task.getEntity().getCheckinPerson()); ib.addColumn("checkinPersonName", ib.STRING, task.getEntity().getCheckinPersonName()); ib.addColumn("deptId", ib.guid, task.getEntity().getDeptId()); ib.addColumn("creatorId", ib.guid, task.getEntity().getCreatorId()); ib.addColumn("creator", ib.STRING, task.getEntity().getCreator()); if (null != task.getEntity().getDeptId()) { Department depart = context.find(Department.class, task.getEntity().getDeptId()); if (null != depart) { ib.addColumn("deptName", ib.STRING, depart.getName()); } else { throw new Exception("获取用户部门信息出错!"); } } if (null != task.getEntity().getPartnerId()) { Partner p = context.find(Partner.class, task.getEntity().getPartnerId()); ib.addColumn("partnerCode", ib.STRING, p.getCode()); } if (ib.execute() == 1) { doSaveDetails(context, task); task.setSuccess(true); } if (task.getEntity().getSheetType().equals(CheckingInType.Joint.getCode()) || task.getEntity().getSheetType().equals(CheckingInType.RealGoods.getCode()) || task.getEntity().getSheetType().equals(CheckingInType.Kit.getCode())) { return; } writeJointRecord(context, task); }
@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 handle(Context context, InstoAddTask task) throws Throwable { if (null == task.getEntity()) { return; } fillEntity(context, task.getEntity(), CheckingInType.Purchase.getCode()); task.getEntity().setStatus(CheckingInStatus.None.getCode()); InstorageTask it = new InstorageTask(); it.setInstorageEntity(task.getEntity()); context.handle(it, Method.INSERT); addDetails(context, task.getEntity(), task.getDetailList()); // 采购在途 modfiyCountOnWay(context, task, false); CheckingInEvent event = new CheckingInEvent(); event.setCheckInSheetId(task.getEntity().getRECID()); context.dispatch(event); }
@Override protected void occur(Context context, ApprovalConfigChangedEvent event) throws Throwable { OrderEnum orderEnum = OrderEnum.getOrderEnum(event.getMode()); if (null != orderEnum) { BillsExamineChangeTask task = new BillsExamineChangeTask(orderEnum, BillsConstant.getTenantsGuid(context)); task.setCause(BillsConstant.FLOW_CAUSE); context.handle(task); } }
@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)); } } } }
/** * 联营交易信息 * * @param context * @param task * @throws Exception */ private void writeJointRecord(Context context, CheckinSheetTask sheet) throws Exception { List<JointVentureTaskItem> items = new ArrayList<JointVentureTaskItem>(); for (CheckInSheetItem det : sheet.getItems()) { JointVentureTaskItem item = new JointVentureTaskItem(); item.setGoodsId(det.getGoodsId()); item.setSheetId(sheet.getEntity().getRECID()); item.setSheetNo(sheet.getEntity().getSheetNo()); item.setCount(DoubleUtil.sub(0, det.getRealCount())); items.add(item); } context.handle(new CreateJointVentureTask(items)); }
@Override protected void handle(Context context, ChangeCheckinRealAmount task) throws Throwable { UpdateSqlBuilder ub = new UpdateSqlBuilder(context); double amount = task.getAmount(); if (amount < 0) { amount = DoubleUtil.sub(0, amount); } ub.setTable(ERPTableNames.Inventory.CheckinSheet.getTableName()); ub.addExpression("value", ub.DOUBLE, amount, "paidAmount = t.paidAmount+@value"); ub.addCondition("id", ub.guid, task.getId(), "t.RECID=@id"); ub.addCondition("xxx", ub.STRING, "a", "t.amount-t.paidAmount>=@value"); int count = ub.execute(); if (0 == count) { throw new Exception("付款金额超出入库金额,请核对!"); } CheckInBaseInfo info = context.find(CheckInBaseInfo.class, task.getId()); if (info.getAmount() == info.getPaidAmount()) { context.dispatch( new CheckInSheetAmountBalanceCompleteEvent(info.getRelaBillsId(), info.getSheetType())); } }
@Override protected void occur(Context context, GoodsStatusChangeEvent event) throws Throwable { this.event = event; GoodsItem gi = context.find(GoodsItem.class, event.goodsItemId); if (GoodsStatus.STOP_SALE == gi.getStatus()) { new PromotionStopSql(context).executeUpdate(); new PromotionDelSql(context).executeUpdate(); } else if (GoodsStatus.ON_SALE == gi.getStatus()) { new PromotionIssueSql(context).executeUpdate(); new PromotionOutOfDateSql(context).executeUpdate(); } }
/** 查询未布布公告 */ private List<NoticeItem> findNoticeItemList(Context context, STableStatus tablestatus) { FindNoticeItemListKey key = new FindNoticeItemListKey(); // 查询未发布公告 key.setType(FindNoticeItemListKey.NOT_RELEASE); // 搜索字符串 if (StringHelper.isNotEmpty(searchNoticeText.getText()) && !searchNoticeText.getText().trim().equals("输入搜索内容")) { key.setSearchText(searchNoticeText.getText().trim()); } LoginInfo loginInfo = context.get(LoginInfo.class); // 非Boss只查询自已的公告,设置创建人GUID if (!loginInfo.hasAuth(Auth.Boss)) { key.setCreateGuid(loginInfo.getEmployeeInfo().getId()); } // 排序 key.setSortCloumName(tablestatus.getSortColumn()); key.setSortType( SSortDirection.ASC == tablestatus.getSortDirection() ? SortType.Asc : SortType.Desc); List<NoticeItem> noticeItemList = context.getList(NoticeItem.class, key); return noticeItemList; }
/** * 更新采购在途 * * @param b */ private void modfiyCountOnWay(Context context, InstoAddTask data, boolean isPri) { for (InstorageItem det : data.getDetailList()) { GUID store = data.getEntity().getStoreId(); if (isPri) { store = InstoConstant.PROVIDERSOTRE; return; } InventoryOnWayTask task = new InventoryOnWayTask(store, det.getGoodsId()); task.setOnWayCount(det.getCount()); context.handle(task); } }
/* * 生成付款记录 * * @param task * * @param context */ public void createPayBills(Context context, CheckInSheet sheet) { long today = new Date().getTime(); CreatePaymentTask task = new CreatePaymentTask(); CreatePaymentTask.Item item = task .new Item( sheet.getRECID(), sheet.getSheetNo(), sheet.getRelaBillsId(), sheet.getRelaBillsNo(), today, sheet.getAmount(), sheet.getAmount(), 0d); task.setId(context.newRECID()); task.setAmount(sheet.getAmount()); task.setPartnerId(sheet.getPartnerId()); task.setPartnerName(sheet.getPartnerName()); task.setPayDate(today); task.setPaymentType(PaymentType.PAY_CGFK.getCode()); task.setRemark(sheet.getRemark()); task.setItems(new Item[] {item}); context.handle(task); }
@SuppressWarnings("deprecation") @Override protected void occur(Context context, DealingAmountChanageEvent event) throws Throwable { DealingItem di = context.find(DealingItem.class, event.getDealingItemId()); double amount = di.getRealAmount(); DealingsType type = DealingsType.getEnum(di.getBillsType()); if (amount == 0 && (DealingsType.CUS_TZYS == type || DealingsType.CUS_INIT == type)) { // || DealingsType.CUS_THRK == type)){ amount = -di.getPlanAmount(); } if (0 != amount) { OrderUtil.subAlreadyUseCredit(context, di.getPartnerId(), amount); } }
@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; }
@SuppressWarnings("unchecked") public Object[] getElements(Context context, STableStatus tablestatus) { // GetCustomerListKey key = new // GetCustomerListKey(PartnerStatus.Potential); if (!StringUtils.isEmpty(tablestatus.getSortColumn())) { key.setSortField(SortField.valueOf(tablestatus.getSortColumn())); if (tablestatus.getSortDirection() == SSortDirection.ASC) { key.setSortType(SortType.Asc); } else { key.setSortType(SortType.Desc); } } ListEntity<CustomerItem> listEntity = context.find(ListEntity.class, key); if (listEntity != null) { countLabel.setText(String.valueOf(listEntity.getItemList().size())); return listEntity.getItemList().toArray(); } countLabel.setText("0"); return null; }
@SuppressWarnings("unchecked") @Override public Object[] getElements(Context context, STableStatus tablestatus) { GetOnlineReturnListKey key = new GetOnlineReturnListKey( tablestatus.getBeginIndex(), tablestatus.getPageSize(), true, OnlineReturnTab.Approving); key.setSearchText(search.getText()); OnlineReturnListEntity listEntity = context.find(OnlineReturnListEntity.class, key); if (null == listEntity) return null; // int size = listEntity.getItemList().size(); // if (tablestatus.getPageNo() != STableStatus.FIRSTPAGE) { // String preSize = countLabel.getText(); // if (StringHelper.isNotEmpty(preSize)) { // size += Integer.parseInt(preSize); // } // } countLabel.setText(listEntity.getTotalCount() + ""); return listEntity.getItemList().toArray(); }
/** * @param context * @param key * @param list */ @SuppressWarnings("unchecked") private static void salesProvider(Context context, ReportCommonKey key, List<ReportResult> list) { Login login = context.find(Login.class); QuerySqlBuilder qb = new QuerySqlBuilder(context); qb.addTable("SA_REPORT_GOODS_SALE_DATE", "t1"); qb.addArgs("comNo", qb.guid, login.getTenantId()); qb.addEquals("t1.tenantId", "@comNo"); List<Enum> targets = key.getTargets(); qb.addColumn("t1.goodsItemId", "goodsItemId"); if (targets.indexOf(GoodsItemEnum.SalesAmount) >= 0) { qb.addColumn("sum(t1.ordAmount)", "ordAmounts"); } if (targets.indexOf(GoodsItemEnum.SalesCount) >= 0) { qb.addColumn("sum(t1.ordCount)", "ordCount1"); } if (targets.indexOf(GoodsItemEnum.SalesReturnAmount) >= 0) { if (targets.indexOf(GoodsItemEnum.SalesAmount) < 0) { qb.addArgs("zero", qb.INT, 0); qb.addGreaterThan("t1.rtnAmount", "@zero"); } qb.addColumn("sum(t1.rtnAmount)", "rtnAmounts"); } if (targets.indexOf(GoodsItemEnum.OutStoreCount) >= 0) { qb.addColumn("sum(t1.outstoAmount)", "outstoAmount1"); } if (targets.indexOf(GoodsItemEnum.ReceiptAmount) >= 0) { qb.addColumn("sum(t1.receiptAmount)", "receiptAmount1"); } Map<GUID, ReportResult> ymap = null; if (targets.indexOf(GoodsItemEnum.SalesAmount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.SalesCount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.SalesReturnAmount_HuanBi) >= 0) { ymap = getYearDoubleMap_Sales(context, key, login); } for (Condition con : key.getConditions()) { if ("month".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("month", qb.INT, con.getValue()); qb.addEquals("t1.monthNo", "@month"); } else if ("thismonth".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("month", qb.INT, ReportDateUtils.getMonthNo(new Date())); qb.addEquals("t1.monthNo", "@month"); } else if ("season".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("season", qb.INT, con.getValue()); qb.addEquals("t1.quarter", "@season"); } else { } } qb.addGroupBy("t1.goodsItemId"); if (CheckIsNull.isNotEmpty(key.getOrderTarget()) && GoodsItemEnum.getTarget(key.getOrderTarget()) == GoodsItemEnum.SalesAmount) { String column = "ordAmounts"; if (key.isOrderDesc()) { column = column + " desc"; } qb.addOrderBy(column); } else if (CheckIsNull.isNotEmpty(key.getOrderTarget()) && GoodsItemEnum.getTarget(key.getOrderTarget()) == GoodsItemEnum.SalesReturnAmount) { String column = "rtnAmounts"; if (key.isOrderDesc()) { column = column + " desc"; } qb.addOrderBy(column); } Condition depCon = ReportUtils.findCondition("DepartmentId", key.getConditions()); if (AuthUtils.isBoss(context, login.getEmployeeId()) && null == depCon) { } else if (AuthUtils.isManager(context, login.getEmployeeId()) || null != depCon) { GUID deptId = null; if (null == depCon) { Employee emp = context.find(Employee.class, login.getEmployeeId()); deptId = emp.getDepartmentId(); } else { deptId = (GUID) depCon.getValue(); } Department dep = context.find(Department.class, deptId); List<String> argslist = new ArrayList<String>(); int i = 0; for (Department d : dep.getDescendants(context)) { argslist.add("@" + "deptId" + i); qb.addArgs("deptId" + i, qb.guid, d.getId()); i++; } qb.addIn("t1.deptGuid", argslist); } else if (AuthUtils.isSales(context, login.getEmployeeId())) { qb.addArgs("userId", qb.guid, login.getEmployeeId()); qb.addEquals("t1.orderPerson", "@userId"); } RecordSet rs = null; if (key.getMaxCount() == 0) { rs = qb.getRecord(); } else { rs = qb.getRecordLimit(0, key.getMaxCount()); } while (rs.next()) { ReportResult rr = new ReportResult(); int index = 0; GUID goodsItemId = rs.getFields().get(index++).getGUID(); rr.setTargetValue(GoodsItemEnum.Id, goodsItemId); GoodsItem item = context.find(GoodsItem.class, goodsItemId); rr.setTargetValue(GoodsItemEnum.GoodsName, item.getGoodsName()); rr.setTargetValue(GoodsItemEnum.GoodsAttr, item.getPropertiesWithoutUnit()); rr.setTargetValue(GoodsItemEnum.GoodsUnit, item.getGoodsUnit()); if (targets.indexOf(GoodsItemEnum.SalesAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.SalesAmount, value); } if (targets.indexOf(GoodsItemEnum.SalesCount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.SalesCount, value); } if (targets.indexOf(GoodsItemEnum.SalesReturnAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.SalesReturnAmount, value); } if (targets.indexOf(GoodsItemEnum.OutStoreCount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.OutStoreCount, value); } if (targets.indexOf(GoodsItemEnum.ReceiptAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.ReceiptAmount, value); } if (targets.indexOf(GoodsItemEnum.SalesAmount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.SalesCount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.SalesReturnAmount_OfYear) >= 0) { ReportResult tt = ymap.get(goodsItemId); if (tt != null) { rr.setTargetValue( GoodsItemEnum.SalesAmount_OfYear, tt.getTargetValue(GoodsItemEnum.SalesAmount_OfYear)); rr.setTargetValue( GoodsItemEnum.SalesCount_OfYear, tt.getTargetValue(GoodsItemEnum.SalesCount_OfYear)); rr.setTargetValue( GoodsItemEnum.SalesReturnAmount_OfYear, tt.getTargetValue(GoodsItemEnum.SalesReturnAmount_OfYear)); } } list.add(rr); } }
/** * @param context * @param key * @param list */ @SuppressWarnings("unchecked") private static void purchaseProvider( Context context, ReportCommonKey key, List<ReportResult> list) { Tenant tenant = context.find(Tenant.class); QuerySqlBuilder qb = new QuerySqlBuilder(context); qb.addTable("SA_REPORT_GOODS_BUY_DATE", "t2"); qb.addArgs("comNo", qb.guid, tenant.getId()); qb.addEquals("t2.tenantId", "@comNo"); List<Enum> targets = key.getTargets(); qb.addColumn("t2.goodsItemId", "goodsItemId"); if (targets.indexOf(GoodsItemEnum.PurchaseAmount) >= 0) { qb.addColumn("sum(t2.ordAmount)", "ordAmounts"); } if (targets.indexOf(GoodsItemEnum.PurchaseCount) >= 0) { qb.addColumn("sum(t2.ordCount)", "ordCount2"); } if (targets.indexOf(GoodsItemEnum.PurchaseReturnAmount) >= 0) { qb.addColumn("sum(t2.rtnAmount)", "rtnAmounts"); } if (targets.indexOf(GoodsItemEnum.InStoreCount) >= 0) { qb.addColumn("sum(t2.outstoAmount)", "outstoAmount2"); } if (targets.indexOf(GoodsItemEnum.PayAmount) >= 0) { qb.addColumn("sum(t2.receiptAmount)", "receiptAmount2"); } Map<GUID, ReportResult> ymap = null; if (targets.indexOf(GoodsItemEnum.PurchaseAmount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.PurchaseCount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.PurchaseReturnAmount_OfYear) >= 0) { ymap = getYearDoubleMapPurchase(context, key, tenant); } for (Condition con : key.getConditions()) { if ("month".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("month", qb.INT, con.getValue()); qb.addEquals("t2.monthNo", "@month"); } else if ("season".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("season", qb.INT, con.getValue()); qb.addEquals("t2.quarter", "@season"); } else { } } qb.addGroupBy("t2.goodsItemId"); if (CheckIsNull.isNotEmpty(key.getOrderTarget()) && GoodsItemEnum.getTarget(key.getOrderTarget()) == GoodsItemEnum.PurchaseAmount) { String column = "ordAmounts"; if (key.isOrderDesc()) { column = column + " desc"; } qb.addOrderBy(column); } else if (CheckIsNull.isNotEmpty(key.getOrderTarget()) && GoodsItemEnum.getTarget(key.getOrderTarget()) == GoodsItemEnum.PurchaseReturnAmount) { String column = "rtnAmounts"; if (key.isOrderDesc()) { column = column + " desc"; } qb.addOrderBy(column); } RecordSet rs = null; if (key.getMaxCount() == 0) { rs = qb.getRecord(); } else { rs = qb.getRecordLimit(0, key.getMaxCount()); } while (rs.next()) { ReportResult rr = new ReportResult(); int index = 0; GUID goodsItemId = rs.getFields().get(index++).getGUID(); rr.setTargetValue(GoodsItemEnum.Id, goodsItemId); GoodsItem item = context.find(GoodsItem.class, goodsItemId); rr.setTargetValue(GoodsItemEnum.GoodsName, item.getGoodsName()); rr.setTargetValue(GoodsItemEnum.GoodsAttr, item.getPropertiesWithoutUnit()); rr.setTargetValue(GoodsItemEnum.GoodsUnit, item.getGoodsUnit()); if (targets.indexOf(GoodsItemEnum.PurchaseAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.PurchaseAmount, value); } if (targets.indexOf(GoodsItemEnum.PurchaseCount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.PurchaseCount, value); } if (targets.indexOf(GoodsItemEnum.PurchaseReturnAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.PurchaseReturnAmount, value); } if (targets.indexOf(GoodsItemEnum.InStoreCount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.InStoreCount, value); } if (targets.indexOf(GoodsItemEnum.PayAmount) >= 0) { Object value = rs.getFields().get(index++).getObject(); rr.setTargetValue(GoodsItemEnum.PayAmount, value); } if (targets.indexOf(GoodsItemEnum.PurchaseAmount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.PurchaseCount_OfYear) >= 0 || targets.indexOf(GoodsItemEnum.PurchaseReturnAmount_OfYear) >= 0) { ReportResult tt = ymap.get(goodsItemId); if (tt != null) { rr.setTargetValue( GoodsItemEnum.PurchaseAmount_OfYear, tt.getTargetValue(GoodsItemEnum.PurchaseAmount_OfYear)); rr.setTargetValue( GoodsItemEnum.PurchaseCount_OfYear, tt.getTargetValue(GoodsItemEnum.PurchaseCount_OfYear)); rr.setTargetValue( GoodsItemEnum.PurchaseReturnAmount_OfYear, tt.getTargetValue(GoodsItemEnum.PurchaseReturnAmount_OfYear)); } } list.add(rr); } }
/** * @param context * @param key * @param login * @return */ private static Map<GUID, ReportResult> getYearDoubleMap_Sales( Context context, ReportCommonKey key, Login login) { QuerySqlBuilder qb = new QuerySqlBuilder(context); qb.addTable("SA_REPORT_GOODS_SALE_DATE", "t"); qb.addArgs("comNo", qb.guid, login.getTenantId()); qb.addEquals("t.tenantId", "@comNo"); String dateKey = null, dateValue = null; int year = 0; for (Condition con : key.getConditions()) { if ("month".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("month", qb.INT, con.getValue()); year = Integer.parseInt((con.getValue() + "").substring(0, 4)); dateKey = "t.monthNo"; dateValue = "@month"; } else if ("season".toUpperCase().equals(con.getConditionColumn().toUpperCase())) { qb.addArgs("season", qb.INT, con.getValue()); year = Integer.parseInt((con.getValue() + "").substring(0, 4)); dateKey = "t.quarter"; dateValue = "@season"; } } qb.addLessThanOrEquals(dateKey, dateValue); qb.addArgs("year", qb.INT, year); qb.addEquals("t.yearNo", "@year"); qb.addColumn("t.goodsItemId", "id"); qb.addColumn("sum(t.ordAmount)", "ordAmount"); qb.addColumn("sum(t.ordCount)", "receiptAmount"); qb.addColumn("sum(t.rtnAmount)", "rtnAmount"); qb.addGroupBy("t.goodsItemId"); Condition depCon = ReportUtils.findCondition("DepartmentId", key.getConditions()); if (AuthUtils.isBoss(context, login.getEmployeeId()) && null == depCon) { } else if (AuthUtils.isManager(context, login.getEmployeeId()) || null != depCon) { GUID deptId = null; if (null == depCon) { Employee emp = context.find(Employee.class, login.getEmployeeId()); deptId = emp.getDepartmentId(); } else { deptId = (GUID) depCon.getValue(); } Department dep = context.find(Department.class, deptId); List<String> argslist = new ArrayList<String>(); int i = 0; for (Department d : dep.getDescendants(context)) { argslist.add("@" + "deptId" + i); qb.addArgs("deptId" + i, qb.guid, d.getId()); i++; } qb.addIn("t.deptGuid", argslist); } else if (AuthUtils.isSales(context, login.getEmployeeId())) { qb.addArgs("userId", qb.guid, login.getEmployeeId()); qb.addEquals("t.orderPerson", "@userId"); } RecordSet rs = qb.getRecord(); Map<GUID, ReportResult> map = new HashMap<GUID, ReportResult>(); while (rs.next()) { GUID id = rs.getFields().get(0).getGUID(); ReportResult rr = new ReportResult(); rr.setTargetValue(GoodsItemEnum.SalesAmount_OfYear, rs.getFields().get(1).getDouble()); rr.setTargetValue(GoodsItemEnum.SalesCount_OfYear, rs.getFields().get(2).getDouble()); rr.setTargetValue(GoodsItemEnum.SalesReturnAmount_OfYear, rs.getFields().get(3).getDouble()); map.put(id, rr); } return map; }