Index: ssts-web/src/main/webapp/jasperRtp/stocktakereport_includesupplier.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/stocktakereport_includesupplier.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/stocktakereport_includesupplier.jrxml (revision 27669) @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="39" splitType="Stretch"> + <textField> + <reportElement uuid="689fc869-a193-40c9-a4d0-a20389948eaf" x="0" y="0" width="1432" height="39"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="16" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java =================================================================== diff -u -r27608 -r27669 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java (.../GodownEntryItemManagerImpl.java) (revision 27608) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java (.../GodownEntryItemManagerImpl.java) (revision 27669) @@ -1,29 +1,41 @@ package com.forgon.disinfectsystem.diposablegoods.service; +import java.sql.ResultSet; import java.text.ParseException; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.jdbc.core.JdbcTemplate; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; +import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; import com.forgon.disinfectsystem.diposablegoods.util.GodownEntryUtil; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; public class GodownEntryItemManagerImpl implements GodownEntryItemManager { + + private Logger logger = Logger.getLogger(getClass()); + + private JdbcTemplate jdbcTemplate; + private ObjectDao objectDao; private DateQueryAdapter dateQueryAdapter; private WareHouseManager wareHouseManager; @@ -40,6 +52,10 @@ this.wareHouseManager = wareHouseManager; } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + @SuppressWarnings("unchecked") @Override public List getGodownEntryItemList(String startDateTime, @@ -250,4 +266,65 @@ godownEntryItem = CollectionUtils.isNotEmpty(list) ? list.get(0) : null; return godownEntryItem; } + + @Override + public Map getDisposableGoodsLastEntrySupplierMap( + String startDate, String endDate) { + Map result = new HashMap(); + /*String dateCondition = String.format("and ge.time %s ", + StringUtils.isBlank(startDate) ? (" < " + endDate) : (" between "+ startDate +" and "+ endDate));*/ + //查询一次性物品的入库时间由开始与结束时间范围内到小于结束时间 + String dateCondition = String.format("and ge.time < %s ", endDate); + String querySql = String.format("select dg.name,dg.specification,gei.supplierName " + + "from %s dg " + + "join %s gei on gei.disposableGoodsID=dg.id " + + "join %s ge on gei.godownEntry_id=ge.id " + + "where gei.supplierName is not null %s " + + "group by dg.name,dg.specification,gei.supplierName " + + "order by max(ge.time) desc", DisposableGoods.class.getSimpleName(), + GodownEntryItem.class.getSimpleName(),GodownEntry.class.getSimpleName(), + dateCondition); + ResultSet rs = null; + try { + logger.debug("getDisposableGoodsLastEntrySupplierMap querySql = " + querySql); + /*List> resultMapList = jdbcTemplate.queryForList(querySql); + if(CollectionUtils.isNotEmpty(resultMapList)){ + resultMapList.stream().forEach(resultMap -> { + String supplierName = (String)resultMap.get("supplierName"); + if(StringUtils.isBlank(supplierName)){ + return; + } + String name = (String)resultMap.get("name"); + String specification = (String)resultMap.get("specification"); + String fullName = DisposableGoodsUtils.getDisposableGoodsFullName(name,specification); + //如果该物品还未在map中,则放入map.已经在map中则不放入了 + if(StringUtils.isBlank(result.get(fullName))){ + result.put(fullName, supplierName); + } + }); + }*/ + rs = objectDao.executeSql(querySql); + while(rs.next()){ + String supplierName = rs.getString("supplierName"); + if(StringUtils.isBlank(supplierName)){ + continue; + } + String name = rs.getString("name"); + String specification = rs.getString("specification"); + String fullName = DisposableGoodsUtils.getDisposableGoodsFullName(name,specification); + //如果该物品还未在map中,则放入map.已经在map中则不放入了 + if(StringUtils.isBlank(result.get(fullName))){ + result.put(fullName, supplierName); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.debug("getDisposableGoodsLastEntrySupplierMap 方法异常 = " + e); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + logger.debug("getDisposableGoodsLastEntrySupplierMap result = " + result); + } + return result; + } + } Index: ssts-web/src/main/webapp/jasperRtp/stocktakereport_includesupplier.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js =================================================================== diff -u -r13476 -r27669 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js (.../stocktakeView.js) (revision 13476) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js (.../stocktakeView.js) (revision 27669) @@ -10,6 +10,8 @@ var reportName = "stocktakereport.jasper"; if(projectName == "gzzyyfs"){ reportName = "stocktakereportZYYFS.jasper"; + }else if(sstsConfig.showSupplierColumnInDisposableSettlementReport){ + reportName = "stocktakereport_includesupplier.jasper"; } if(summaryType == '汇总'){ reportName = "stocktakeSummaryReport.jasper" Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/MonthGoodsDetailSummaryService.java =================================================================== diff -u -r24671 -r27669 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/MonthGoodsDetailSummaryService.java (.../MonthGoodsDetailSummaryService.java) (revision 24671) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/MonthGoodsDetailSummaryService.java (.../MonthGoodsDetailSummaryService.java) (revision 27669) @@ -36,6 +36,8 @@ String name = jsonObject.optString("name"); String spec = jsonObject.optString("specification"); MonthGoodsDetailVo vo = findOrAdd(name, spec,true); + //设置最后入库的供应商 + vo.setLastEntrySupplier(jsonObject.optString("lastEntrySupplier","")); long amount = jsonObject.optLong("amount"); double cost = jsonObject.optDouble("cost"); String type = jsonObject.optString("type"); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r27651 -r27669 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27651) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27669) @@ -69,6 +69,7 @@ import com.forgon.disinfectsystem.customform.formdefinition.service.FormDefinitionManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; +import com.forgon.disinfectsystem.diposablegoods.util.DisposableGoodsUtils; import com.forgon.disinfectsystem.diposablegoods.util.GodownEntryUtil; import com.forgon.disinfectsystem.diposablegoods.util.MaterialEntryUtil; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; @@ -11741,14 +11742,26 @@ //System.out.println(sql); rs = objectDao.executeSql(sql); try { + //查出该时间内各一次性物品最后入库的供应商 + Map disposableGoodsLastEntrySupplierMap = + godownEntryItemManager.getDisposableGoodsLastEntrySupplierMap(startDate,endDate); while(rs.next()){ JSONObject item = new JSONObject(); - item.put("name", rs.getString("name")); - item.put("specification", rs.getString("specification")); + String name = rs.getString("name"); + String specification = rs.getString("specification"); + item.put("name", name); + item.put("specification", specification); item.put("amount",rs.getLong("amount")); item.put("cost",rs.getDouble("cost")); item.put("type", rs.getString("type")); item.put("subType", rs.getString("subType")); + String fullName = DisposableGoodsUtils.getDisposableGoodsFullName(name, specification); + if(disposableGoodsLastEntrySupplierMap != null){ + String lastEntrySupplier = disposableGoodsLastEntrySupplierMap.get(fullName); + if(StringUtils.isNotBlank(lastEntrySupplier)){ + item.put("lastEntrySupplier", lastEntrySupplier); + } + } service.addItem(item , manualInIncludeSyncIn); } } catch (SQLException e) { Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java =================================================================== diff -u -r14464 -r27669 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java (.../GodownEntryItemManager.java) (revision 14464) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java (.../GodownEntryItemManager.java) (revision 27669) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.diposablegoods.service; import java.util.List; +import java.util.Map; import net.sf.json.JSONObject; @@ -61,4 +62,13 @@ * @return */ public GodownEntryItem getLastGodownEntryByDisposableGoodsId(String disposableGoodsId); + + /** + * 根据开始时间和结束时间查询各一次性物品对应各自的最后入库的供应商名称 + * @param startDate 开始时间,已经根据数据库类型做了适配,可能是日期表达式 + * @param endDate 结束时间 + * @return map key为显示名称(即名称[规格]),value为该时间内最后入库的供应商名称 + */ + public Map getDisposableGoodsLastEntrySupplierMap(String startDate , String endDate); + } Index: ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js =================================================================== diff -u -r27380 -r27669 --- ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js (.../config.js) (revision 27380) +++ ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js (.../config.js) (revision 27669) @@ -76,5 +76,7 @@ enableVideoMonitorModule:true, showCameraPhoto:true, //是否启用自定义报表模块,true时,启用该模块,false或者没有配置时,不启用 - enableCustomReportModule:true + enableCustomReportModule:true, + //一次性物品结算报表显示供应商列 + showSupplierColumnInDisposableSettlementReport:true } \ No newline at end of file