Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java =================================================================== diff -u -r28312 -r29011 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 28312) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 29011) @@ -2,15 +2,18 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.time.DateUtils; import com.forgon.Constants; import com.forgon.component.grid.GridManager; @@ -21,6 +24,7 @@ import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; @@ -29,6 +33,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.invoicemanager.MaterialInvoice; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; @@ -39,6 +44,7 @@ import com.forgon.security.model.User; import com.forgon.tools.MathTools; import com.forgon.tools.SqlBuilder; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; @@ -180,6 +186,68 @@ sql += String.format(" and %s ", SqlBuilder.build_IN_Statement("po.invoicePlanType", SqlBuilder.IN, applyType.split(Constants.IDS_SEPARATOR_COMMA))); } + //根据时间过滤 + String startTime = sqlWhereParamMap.get("startTime"); + String endTime = sqlWhereParamMap.get("endTime"); + //如果开始时间为空则取当天的开始时间或者取当月的开始时间(看配置) + if (StringUtils.isBlank(startTime)) { + boolean startDateIsToday = CssdUtils.getSystemSetConfigByNameBool("startDateIsToday"); + if (startDateIsToday) { + Calendar date = Calendar.getInstance(Locale.CHINA); + date.set(Calendar.HOUR_OF_DAY, 0); + date.set(Calendar.MINUTE, 0); + date.set(Calendar.SECOND, 0); + startTime = date.getTimeInMillis() + ""; + } else { + Date date = DateUtils.setDays(new Date(), 1); + startTime = date.getTime() + ""; + } + } + //如果结束时间为空则取当前时间 + if (StringUtils.isBlank(endTime)) { + endTime = System.currentTimeMillis() + ""; + } + if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { + String start; + String end; + start = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(startTime))); + end = dateQueryAdapter.dateAdapter(new java.sql.Date(Long.parseLong(endTime))); + sql += String.format(" AND (po.sendTime >= %s and po.sendTime < %s) ", start, end); + } + + //按申请科室 + String applyDepartmentCode = sqlWhereParamMap.get("applyDepartmentCode"); + if (StringUtils.isNotBlank(applyDepartmentCode)) { + sql += String.format(" and po.departCoding='%s' ", applyDepartmentCode); + } + + //按结算科室 + String settleAccountsDepartmentCode = sqlWhereParamMap.get("settleAccountsDepartmentCode"); + if (StringUtils.isNotBlank(settleAccountsDepartmentCode)) { + sql += String.format(" and po.settleAccountsDepartCoding='%s' ", settleAccountsDepartmentCode); + } + + //按物品 + String goodsType = sqlWhereParamMap.get("goodsType"); + String goodsId = sqlWhereParamMap.get("goodsId"); + if (StringUtils.isNotBlank(goodsType) && DatabaseUtil.isPoIdValid(goodsId)) { + String idSql = ""; + if (TousseItem.TYPE_DIPOSABLE_GOODS.equals(goodsType)) { + idSql = String.format(" select i.invoiceID from InvoiceItem i where i.diposable = '%s' and i.disposableGoodsId = %s", InvoiceItem.DIPOSABLE_YES, goodsId); + } else { + idSql = String.format(" select i.invoiceID from InvoiceItem i where i.diposable = '%s' and i.tousseDefinitionId = %s", InvoiceItem.DIPOSABLE_NO, goodsId); + } + sql += String.format(" and po.id in( %s ) ", idSql); + } + + //是否已打印 + String isPrint = sqlWhereParamMap.get("print"); + if (StringUtils.isNotBlank(isPrint)) { + if (!"all".equals(isPrint)) { + sql += " AND po.isPrint = '" + isPrint + "'"; + } + } + String json = gridManager.renderGrid(parameterMap, Invoice.class.getSimpleName(), sql, new String[] { "invoicePlan", "returnedTousseItems",