Fisheye: Tag 23729 refers to a dead (removed) revision in file `ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsInstanceView.js'.
Fisheye: No comparison available. Pass `N' to diff?
Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java
===================================================================
diff -u -r23727 -r23729
--- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 23727)
+++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 23729)
@@ -3288,7 +3288,7 @@
ExpensiveGoodsInstance.class.getSimpleName(), expensiveGoodsInstanceSql);
if(CollectionUtils.isNotEmpty(expensiveGoodsInstanceList)){
for (ExpensiveGoodsInstance expensiveGoodsInstance : expensiveGoodsInstanceList) {
- if(expensiveGoodsInstance.getUseRecord()!=null|| expensiveGoodsInstance.getExpensiveGoodsBillId()!=null){
+ if(expensiveGoodsInstance.getUseRecord()!=null|| expensiveGoodsInstance.getExpensiveGoodsBill()!=null){
invoicePlanList.remove(invoicePlan);
break;
}
Index: ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js
===================================================================
diff -u -r23640 -r23729
--- ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js (.../portalPage.js) (revision 23640)
+++ ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js (.../portalPage.js) (revision 23729)
@@ -455,7 +455,7 @@
//只显示高值耗材的几个图标和高级视图(因为需要登录时提示有关的告警信息,所以系统告警图标也需要显示)
if(itemId == 'expensiveGoodsApplication' || itemId == 'expensiveGodownEntryPurchase' || itemId == 'expensiveGodownEntryPrepareIn'
|| itemId == 'expensiveInvoicePlan' || itemId == 'expensiveInvoice' || itemId == 'expensiveBill' || itemId == 'expensiveStockTake'
- || itemId == 'useRecord' || itemId == 'myUnFinishedTask' || itemId == 'myFinishedTask' || itemId == 'expensiveEnterpriseView' || itemId == 'systemWarning'){
+ || itemId == 'useRecord' || itemId == 'myUnFinishedTask' || itemId == 'myFinishedTask' || itemId == 'expensiveGoodsInstanceView' || itemId == 'expensiveEnterpriseView' || itemId == 'systemWarning'){
var itemLinkUrl = encodeURI(item['itemLinkUrl']);
returnContent += '
';
returnContent += '
';
Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsTableManager.java
===================================================================
diff -u -r22353 -r23729
--- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsTableManager.java (.../ExpensiveGoodsTableManager.java) (revision 22353)
+++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsTableManager.java (.../ExpensiveGoodsTableManager.java) (revision 23729)
@@ -4,23 +4,33 @@
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
+import java.util.Collection;
import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import net.sf.json.JSONObject;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
import org.apache.commons.lang.StringUtils;
import org.directwebremoting.util.Logger;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONArray;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.forgon.Constants;
import com.forgon.component.grid.GridManager;
import com.forgon.databaseadapter.service.DateQueryAdapter;
+import com.forgon.directory.acegi.tools.AcegiHelper;
+import com.forgon.directory.model.BarcodeDevice;
+import com.forgon.directory.vo.LoginUserData;
import com.forgon.disinfectsystem.basedatamanager.supplier.service.ExpensiveGoodsSupplierManager;
import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager;
import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager;
@@ -32,16 +42,27 @@
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsStock;
import com.forgon.disinfectsystem.entity.basedatamanager.datasynchronization.HisMaterialDefinition;
import com.forgon.disinfectsystem.entity.basedatamanager.datasynchronization.HisMaterialType;
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer;
import com.forgon.disinfectsystem.entity.basedatamanager.supplier.ExpensiveGoodsSupplier;
import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse;
+import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance;
+import com.forgon.disinfectsystem.entity.invoicemanager.Invoice;
+import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan;
import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO;
+import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
+import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsInstanceManager;
import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager;
import com.forgon.disinfectsystem.expensiveGoods.util.ExpensiveGoodsUtils;
+import com.forgon.disinfectsystem.idpredicate.IDOperators;
import com.forgon.systemsetting.model.HttpOption;
import com.forgon.systemsetting.service.HttpOptionManager;
import com.forgon.tools.SpringBeanManger;
+import com.forgon.tools.SqlBuilder;
import com.forgon.tools.hibernate.ObjectDao;
import com.forgon.tools.util.SqlUtils;
+import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
@Service
public class ExpensiveGoodsTableManager {
@@ -58,8 +79,10 @@
private SupplyRoomConfigManager supplyRoomConfigManager;
- private ExpensiveGoodsSupplierManager expensiveGoodsSupplierManager;
+ private BarcodeManager barcodeManager;
+ private ExpensiveGoodsInstanceManager expensiveGoodsInstanceManager;
+
public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) {
this.dateQueryAdapter = dateQueryAdapter;
}
@@ -88,10 +111,14 @@
this.supplyRoomConfigManager = supplyRoomConfigManager;
}
- public void setExpensiveGoodsSupplierManager(
- ExpensiveGoodsSupplierManager expensiveGoodsSupplierManager) {
- this.expensiveGoodsSupplierManager = expensiveGoodsSupplierManager;
+ public void setBarcodeManager(BarcodeManager barcodeManager) {
+ this.barcodeManager = barcodeManager;
}
+
+ public void setExpensiveGoodsInstanceManager(
+ ExpensiveGoodsInstanceManager expensiveGoodsInstanceManager) {
+ this.expensiveGoodsInstanceManager = expensiveGoodsInstanceManager;
+ }
/**
* 查找高值耗材库存
@@ -159,37 +186,6 @@
null);
}
- public String findExpensiveGoodsInstanceTableList(
- Map> parameterMap) {
- Map sqlWhereParamMap = gridManager
- .getParamFromView(parameterMap);
-
- // 关键字查询-》把小写字母转换成大写字母
- if (!parameterMap.get("grid_search_query").isEmpty()) {
- List keyList = parameterMap.get("grid_search_query");
- List queryKey = new ArrayList(keyList.size());
- for (int i = 0; i < keyList.size(); i++) {
- queryKey.add(((String) keyList.get(i)).toUpperCase());
- }
- parameterMap.put("grid_search_query", queryKey);
- }
- String type = sqlWhereParamMap.get("type");
- String sql = "where 1=1";
-
- if (StringUtils.isNotBlank(type)) {
- sql = String.format(" where %s", SqlUtils.getStringFieldPredicate("expensiveGoods.type", type));
- } else {
- sql += " and 1=1";
- }
- if(!supplyRoomConfigManager.isExpensiveGoodsSupplyRoomUser()){
- sql += " and " + SqlUtils.getNonStringFieldInCollectionsPredicate("po.warehouseID", wareHouseManager.getCurrentUserOrgUnitWarehouseIds());
- }
- return gridManager.renderGrid(parameterMap,
- ExpensiveGoodsInstance.class.getSimpleName(), sql,
- null);
- }
-
-
// 高值耗材使用记录
public String findExpensiveDisposableGoodsUseRecordList(
Map> parameterMap) {
@@ -267,8 +263,344 @@
filterProperties);
return json;
}
+
+ //高值耗材实例查询
+ public String findExpensiveGoodsInstanceTableList(Map> parameterMap) {
+ Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap);
+ // 关键字查询-》把小写字母转换成大写字母
+ if (!parameterMap.get("grid_search_query").isEmpty()) {
+ List keyList = parameterMap.get("grid_search_query");
+ List queryKey = new ArrayList(keyList.size());
+ for (int i = 0; i < keyList.size(); i++) {
+ queryKey.add(((String) keyList.get(i)).toUpperCase());
+ }
+ parameterMap.put("grid_search_query", queryKey);
+ }
+ String type = sqlWhereParamMap.get("type");
+ String sql = "where 1=1";
+
+ if (StringUtils.isNotBlank(type)) {
+ sql = String.format(" where %s", SqlUtils.getStringFieldPredicate("expensiveGoods.type", type));
+ } else {
+ sql += " and 1=1";
+ }
+ if(!supplyRoomConfigManager.isExpensiveGoodsSupplyRoomUser()){
+ sql += " and " + SqlUtils.getNonStringFieldInCollectionsPredicate("po.warehouseID", wareHouseManager.getCurrentUserOrgUnitWarehouseIds());
+ }
+ return gridManager.renderGrid(parameterMap,
+ ExpensiveGoodsInstance.class.getSimpleName(), sql,
+ null);
+ }
+
+////////////////////////实例查询//////////////////////////////////////////////////
/**
+ * 把参数endTime加上秒(前台传回来的值只到分),然后根据数据库对应数据是否为date类型来判断是否需要进行适配
+ * @param startTime
+ * @param isDateType 数据库字段是否为date类型
+ * @return
+ */
+ private String parseStartTime(String startTime, boolean isDateType){
+ String startString = startTime+":00";
+ if(isDateType){
+ return dateQueryAdapter.dateAdapter(startString);
+ }else{
+ return startString;
+ }
+ }
+
+ /**
+ * 把参数endTime加1min之后转换为对应的数据库的yyyy-MM-dd HH:mm:00格式的日期数据返回
+ * @param endTime 结束时间
+ * @param isDateType 数据库字段是否为date类型
+ * @return
+ */
+ private String parseEndTime(String endTime, boolean isDateType){
+ Date date = null;
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ try
+ {
+ date = sdf.parse(endTime);
+ }
+ catch (Exception e)
+ {
+// logger.debug("解析时间出错");
+ }
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+
+ calendar.add(Calendar.MINUTE, +1); //推后1min
+ Date end = calendar.getTime();
+ String endString = sdf.format(end)+":00";
+ if(isDateType){
+ return dateQueryAdapter.dateAdapter(endString);
+ }else{
+ return endString;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public String findExpensiveGoodsInstanceTableList2(Map> parameterMap) {
+ Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap);
+
+ /***********过滤条件********/
+ StringBuilder sqlBuilder = new StringBuilder(" WHERE 1=1 ");
+ //1、条码条件
+ //条码()
+ String barcodeSearch = sqlWhereParamMap.get("barcodeSearch");
+ //条码集合(用户启用多次扫描模式并且不是第一次扫描条码时才有值,此时要按照此条码集合查询)
+ String barcodes = sqlWhereParamMap.get("barcodes");
+ if(StringUtils.isNotBlank(barcodeSearch)){
+ BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcodeSearch);
+ //1、若无此条码 2、用户没启用多次扫描模式,或者是启用了而且是第一次扫描 (同时满足1和2则两个条件直接返回)
+ if(barcodeDevice == null && StringUtils.isBlank(barcodes)) {
+ String[] fp = {};
+ Map map = new HashMap();
+ map.put("totalResults", 0);
+ map.put("list", Arrays.asList());
+ map.put("selectSqlWhereCondition", "");
+ String json = gridManager.converJsonString(0, Arrays.asList(), "",fp);
+ return json;
+ }
+ if (StringUtils.isNotBlank(barcodes)) {
+ String[] barcodeArray = barcodes.split(";");
+ List barcodeList = Arrays.asList(barcodeArray);
+ sqlBuilder.append(" AND" + SqlBuilder.build_IN_Statement("po.barcode",SqlBuilder.IN, barcodeList));
+ } else {
+ sqlBuilder.append(String.format(" AND po.barcode = '%s'",barcodeSearch));
+ }
+ }
+
+ //2、物品名称条件
+ //通过在物品下拉框选项中选中的名称(采用精确匹配)
+ String expensiveGoodName = sqlWhereParamMap.get("expensiveGoodName");
+ //通过在物品下拉里输入但未从下拉选项选中的物品名称(采用模糊匹配)
+ String expensiveGoodNameFuzzy = sqlWhereParamMap.get("expensiveGoodNameFuzzy");
+ if (StringUtils.isNotBlank(expensiveGoodName)) {
+ sqlBuilder.append(" AND po.expensiveGoods.name = '" + expensiveGoodName+ "'");
+ }else if (StringUtils.isNotBlank(expensiveGoodNameFuzzy)) {
+ sqlBuilder.append(" AND po.expensiveGoods.name like '%" + expensiveGoodNameFuzzy+ "%'");
+ }
+
+ //3、型号名称条件
+ //通过在型号下拉框选项中选中的名称(采用精确匹配)
+ String modelName = sqlWhereParamMap.get("modelName");
+ //通过在型号下拉里输入但未从下拉选项选中的物品名称(采用模糊匹配)
+ String modelNameFuzzy = sqlWhereParamMap.get("modelNameFuzzy");
+ if (StringUtils.isNotBlank(modelName)) {
+ sqlBuilder.append(" AND po.model = '" + modelName+ "'");
+ }else if (StringUtils.isNotBlank(modelNameFuzzy)) {
+ sqlBuilder.append(" AND po.model like '%" + modelNameFuzzy+ "%'");
+ }
+
+ //4、科室过滤条件
+ String department = sqlWhereParamMap.get("department");
+ if (StringUtils.isNotBlank(department)){
+ sqlBuilder.append(String.format(" AND po.location = '%s' ",department));
+ }
+
+ //5、实例状态过滤条件
+ String instanceStatus = sqlWhereParamMap.get("instanceStatus");
+ if (StringUtils.isNotBlank(instanceStatus)){
+ String[] instanceStatuses = instanceStatus.split(", ");
+ if(!"全部".equals(instanceStatuses[0])){
+ if(instanceStatuses.length == 1){
+ sqlBuilder.append(String.format(" AND (po.status = '%s') ",instanceStatuses[0]));
+ }else{
+ sqlBuilder.append(String.format(" AND (%s) ",
+ SqlUtils.getStringFieldInCollectionsPredicate("po.status", Arrays.asList(instanceStatuses))));
+ }
+ }
+ }
+
+ //6、实例结算状态过滤条件
+ String instanceSettledStatus = sqlWhereParamMap.get("instanceSettledStatus");
+ if (StringUtils.isNotBlank(instanceSettledStatus)){
+ String[] instanceSettledStatuses = instanceSettledStatus.split(", ");
+ if(!"全部".equals(instanceSettledStatuses[0])){
+ if(instanceSettledStatuses.length == 1){
+ sqlBuilder.append(String.format(" AND (po.settledStatus = '%s') ",instanceSettledStatuses[0]));
+ }else{
+ sqlBuilder.append(String.format(" AND (%s) ",
+ SqlUtils.getStringFieldInCollectionsPredicate("po.settledStatus", Arrays.asList(instanceSettledStatuses))));
+ }
+ }
+ }
+
+ //7、实例验收状态过滤条件
+ String instanceCheckStatus = sqlWhereParamMap.get("instanceCheckStatus");
+ if (StringUtils.isNotBlank(instanceCheckStatus)){
+ String[] instanceCheckStatuses = instanceCheckStatus.split(", ");
+ if(!"全部".equals(instanceCheckStatuses[0])){
+ if(instanceCheckStatuses.length == 1){
+ sqlBuilder.append(String.format(" AND (po.checkStatus = '%s') ",instanceCheckStatuses[0]));
+ }else{
+ sqlBuilder.append(String.format(" AND (%s) ",
+ SqlUtils.getStringFieldInCollectionsPredicate("po.checkStatus", Arrays.asList(instanceCheckStatuses))));
+ }
+ }
+ }
+
+ //8、实例入库类型过滤条件
+ String expensiveGoodsGodownType = sqlWhereParamMap.get("expensiveGoodsGodownType");
+ if (StringUtils.isNotBlank(expensiveGoodsGodownType)){
+ String[] expensiveGoodsGodownTypes = expensiveGoodsGodownType.split(", ");
+ if(!"全部".equals(expensiveGoodsGodownTypes[0])){
+ if(expensiveGoodsGodownTypes.length == 1){
+ sqlBuilder.append(String.format(" AND (po.entryType = '%s') ",expensiveGoodsGodownTypes[0]));
+ }else{
+ sqlBuilder.append(String.format(" AND (%s) ",
+ SqlUtils.getStringFieldInCollectionsPredicate("po.entryType", Arrays.asList(expensiveGoodsGodownTypes))));
+ }
+ }
+ }
+
+ //9、入库时间过滤条件
+ String godownStartTime = sqlWhereParamMap.get("godownStartTime"); //入库开始时间
+ if (StringUtils.isNotBlank(godownStartTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.entryDate >= '%s' ",parseStartTime(godownStartTime,false)));
+ }
+
+ String godownEndTime = sqlWhereParamMap.get("godownEndTime"); //入库结束日期
+ if (StringUtils.isNotBlank(godownEndTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.entryDate <= '%s' ",parseEndTime(godownEndTime,false)));
+ }
+
+ //10、使用时间过滤条件
+ String useRecordStratTime = sqlWhereParamMap.get("useRecordStratTime"); //使用开始时间
+ if (StringUtils.isNotBlank(useRecordStratTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.useRecord.enteringDate >= '%s' ",parseStartTime(useRecordStratTime,false)));
+ }
+
+ String useRecordEndTime = sqlWhereParamMap.get("useRecordEndTime"); //使用结束日期
+ if (StringUtils.isNotBlank(useRecordEndTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.useRecord.enteringDate <= '%s' ",parseEndTime(useRecordEndTime,false)));
+ }
+
+ //11、结算时间过滤条件
+ String billStatrTime = sqlWhereParamMap.get("billStatrTime"); //结算开始时间
+ if (StringUtils.isNotBlank(billStatrTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.expensiveGoodsBill.settledTime >= '%s' ",parseStartTime(billStatrTime,false)));
+ }
+
+ String billEndTime = sqlWhereParamMap.get("billEndTime"); //结算结束日期
+ if (StringUtils.isNotBlank(billEndTime)) {
+ sqlBuilder.append(String.format(
+ " AND po.expensiveGoodsBill.settledTime <= '%s' ",parseEndTime(billEndTime,false)));
+ }
+
+ /*******获得返回信息************/
+ int start = 0;
+ int pageSize = 20;
+ String orderStr = "";
+ String filterSqlStr = "";
+ String searchSql = "";
+ String filterSql = "";
+ if (parameterMap != null) {
+ Map paramSqlMap = gridManager.parserMapToSQL(parameterMap);
+ orderStr = paramSqlMap.get(GridManager.GRID_MAPPARAM_SORT_KEY);
+ filterSqlStr = paramSqlMap.get(GridManager.GRID_MAPPARAM_FILTER_KEY);
+ List pageStart = parameterMap.get(GridManager.GRID_PAGE_START);
+ if (pageStart != null && pageStart.size() > 0
+ && StringUtils.isNotBlank(pageStart.get(0))
+ && StringUtils.isNumeric(pageStart.get(0))) {
+ start = Integer.valueOf(pageStart.get(0));
+ }
+
+ List pageSizeStr = parameterMap.get(GridManager.GRID_PAGE_SIZE);
+ if (pageSizeStr != null && pageSizeStr.size() > 0
+ && StringUtils.isNotBlank(pageSizeStr.get(0))
+ && StringUtils.isNumeric(pageSizeStr.get(0))) {
+ pageSize = Integer.valueOf(pageSizeStr.get(0));
+ }
+
+ // 处理GridSearch的参数
+ searchSql = gridManager.getSearchFieldSql(parameterMap);
+ // 处理GridFilter的参数
+ filterSql = gridManager.getFilterFieldSql(parameterMap);
+ }
+
+ // 合并用户自定义的sql
+ if (StringUtils.isNotBlank(filterSqlStr)) {
+ sqlBuilder.append(" AND ");
+ sqlBuilder.append(filterSqlStr);
+ }
+
+ if (StringUtils.isNotBlank(searchSql)) {
+ sqlBuilder.append(" AND ");
+ sqlBuilder.append(searchSql);
+ }
+
+ if (StringUtils.isNotBlank(filterSql)) {
+ sqlBuilder.append(" AND ");
+ sqlBuilder.append(filterSql);
+ }
+
+ String sql = sqlBuilder.toString();
+
+ int totalResults = objectDao.countObjectBySql(ExpensiveGoodsInstance.class.getSimpleName(), sql);
+
+ List instancelist = objectDao.findBySql(
+ ExpensiveGoodsInstance.class.getSimpleName(), sql, start,
+ pageSize, orderStr);
+
+ Map map = new HashMap();
+ map.put("totalResults", totalResults);
+ map.put("list", instancelist);
+ map.put("selectSqlWhereCondition", sql);
+
+ //增加申请时间
+ List ids = instancelist.stream().map(ExpensiveGoodsInstance::getInvoicePlanId).collect(Collectors.toList());
+ List invoicePlanIds = new ArrayList();
+ for (Long id : ids) {
+ if(null!=id){
+ invoicePlanIds.add(id);
+ }
+ }
+ if(!invoicePlanIds.isEmpty()){
+ List InvoicePlans = objectDao.findByIds(InvoicePlan.class.getSimpleName(), invoicePlanIds);
+ for(Object obj : instancelist){
+ ExpensiveGoodsInstance ti = (ExpensiveGoodsInstance) obj;
+ if(null==ti.getInvoicePlanId()){
+ continue;
+ }
+ InvoicePlan ip = IDOperators.find(InvoicePlans,ti.getInvoicePlanId());
+ if(null==ip){
+ continue;
+ }
+ if(null!=ip.getApplicationTimeStr()){
+ ti.setApplicationTimeStr(ip.getApplicationTimeStr());
+ }
+ }
+ }
+
+ //增加病人姓名
+ List instanceIds = instancelist.stream().map(ExpensiveGoodsInstance::getId).collect(Collectors.toList());
+ String sql2 = String.format("select epi.id as \"instanceId\",po.patientName from "
+ + " %s po join %s epi on po.id = epi.userecordId where %s;",
+ UseRecord.class.getSimpleName(),ExpensiveGoodsInstance.class.getSimpleName(),SqlUtils.getNonStringFieldInCollectionsPredicate("epi.id", instanceIds));
+ List