Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r36998 -r37238 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 36998) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 37238) @@ -4501,6 +4501,8 @@ JSONObject jSONObject = new JSONObject(); jSONObject.put("name", config.getName()); jSONObject.put("value", config.getValue()); + jSONObject.put("multiplyIntegralCoefficient", config.getMultiplyIntegralCoefficient()); + jSONObject.put("dataSources", config.getDataSources()); jSONArray.add(jSONObject); } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r36877 -r37238 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 36877) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 37238) @@ -1106,6 +1106,8 @@ if(config == null){ config = new WorkScoreConfig(); } + config.setMultiplyIntegralCoefficient(item.optInt("multiplyIntegralCoefficient", 0)); + config.setDataSources(item.optInt("dataSources", 0)); config.setName(name); config.setValue(value); config.setOrgUnitCoding(orgUnitCoding); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/WorkScoreConfig.java =================================================================== diff -u -r23492 -r37238 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/WorkScoreConfig.java (.../WorkScoreConfig.java) (revision 23492) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/reportoption/WorkScoreConfig.java (.../WorkScoreConfig.java) (revision 37238) @@ -1,8 +1,7 @@ package com.forgon.disinfectsystem.entity.basedatamanager.reportoption; +import javax.persistence.Column; import javax.persistence.Entity; -import org.hibernate.annotations.DynamicInsert; -import org.hibernate.annotations.DynamicUpdate; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @@ -11,7 +10,11 @@ import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; +import com.forgon.tools.MathTools; + /** * @author WangYi * 工作量评分标准配置 @@ -39,7 +42,14 @@ * 值 (指标) */ private Integer value; - + /** + * 是否乘以积分系数 + */ + private Integer multiplyIntegralCoefficient = MathTools.ZERO_INTEGER; + /** + * 数据来源 0件数 1包数 + */ + private Integer dataSources = MathTools.ZERO_INTEGER; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -73,5 +83,21 @@ public void setOrgUnitCoding(String orgUnitCoding) { this.orgUnitCoding = orgUnitCoding; } + @Column(columnDefinition = "int default 0 not null ") + public Integer getMultiplyIntegralCoefficient() { + return multiplyIntegralCoefficient; + } + + public void setMultiplyIntegralCoefficient(Integer multiplyIntegralCoefficient) { + this.multiplyIntegralCoefficient = multiplyIntegralCoefficient; + } + @Column(columnDefinition = "int default 0 not null ") + public Integer getDataSources() { + return dataSources; + } + + public void setDataSources(Integer dataSources) { + this.dataSources = dataSources; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/StatisticalWorkloadHelper.java =================================================================== diff -u -r37002 -r37238 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/StatisticalWorkloadHelper.java (.../StatisticalWorkloadHelper.java) (revision 37002) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/StatisticalWorkloadHelper.java (.../StatisticalWorkloadHelper.java) (revision 37238) @@ -13,6 +13,7 @@ import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -27,6 +28,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.StatisticalWorkload; import com.forgon.disinfectsystem.jasperreports.service.dataindex.DataIndex; import com.forgon.disinfectsystem.reportforms.vo.ReportQueryParams; +import com.forgon.tools.MathTools; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.string.StringTools; @@ -147,14 +149,28 @@ } //按包数量统计的SQL //回收记录 - boolean queryIntegralOfTousse = false; String integralSql = ""; String sumIntegralSql = ""; - if(enableScoreByIntegralFieldOfTousseDefinitionInStaffStatisticalWorkloadReport && isStrengthen){ - queryIntegralOfTousse = true; + Integer reportType = null; + Map scoreConfigMap = new HashMap(); + boolean enableIntegralOfTousseDefinition = CssdUtils.getSystemSetConfigByNameBool("enableIntegralOfTousseDefinition", false); + if(isStrengthen){ integralSql = ",tl.integral "; sumIntegralSql = ",sum(tl.integral) integral "; params.queryIntegral = true; + if(enableScoreByIntegralFieldOfTousseDefinitionInStaffStatisticalWorkloadReport){ + reportType = 0; + }else{ + List scoreConfigs = objectDao.findBySql(WorkScoreConfig.class.getSimpleName(), "where po.orgUnitCoding = '" + querySupplyRoom + "'"); + if(CollectionUtils.isNotEmpty(scoreConfigs)){ + for (WorkScoreConfig workScoreConfig : scoreConfigs) { + scoreConfigMap.put(workScoreConfig.getName(), workScoreConfig); + } + } + reportType = 1; + } + }else{ + reportType = 2; } String tousseAmountSql = String.format("select '预回收数量' type,tl.userName,sum(tl.amount) amount "+ sumIntegralSql +" from (" +dataIndex.getWorkAmountByPackageSQL("预回收数量", params) @@ -271,16 +287,35 @@ workLoadBean.setOperator(userName); workLoadBean.setAmount(amount); workLoadBean.setColumnName(type); - if(queryIntegralOfTousse){ + + if(disposableGoodsMap.containsKey(userName) && !readedNames.contains(userName)){ + readedNames.add(userName); + workLoadBean.setDisposableGoodAmount(disposableGoodsMap.get(userName)); + } + if(reportType == 0){ Double integral = rs.getDouble("integral"); if(integral != null){ workLoadBean.setScore(integral.intValue()); } + }else if(scoreConfigMap.size() > 0){ + WorkScoreConfig workScoreConfig = scoreConfigMap.get(type); + if(workScoreConfig != null + && MathTools.equals(workScoreConfig.getDataSources(), 1) + && workScoreConfig.getValue() != null + && workScoreConfig.getValue() > 0){ + //评分数小数点后面舍去(3 / 2 = 1分) + if(enableIntegralOfTousseDefinition){ + Double integral = rs.getDouble("integral"); + if(integral != null && integral > 0){ + workLoadBean.setScore(integral.intValue()/workScoreConfig.getValue()); + }else{//没有积分 不能算0 + workLoadBean.setScore(amount/workScoreConfig.getValue()); + } + }else{ + workLoadBean.setScore(amount/workScoreConfig.getValue()); + } + } } - if(disposableGoodsMap.containsKey(userName) && !readedNames.contains(userName)){ - readedNames.add(userName); - workLoadBean.setDisposableGoodAmount(disposableGoodsMap.get(userName)); - } workLoadBean.setSequence(sequenceMap.get(type)); list.add(workLoadBean); } @@ -305,16 +340,7 @@ list.add(workLoadBean); } } - Map scoreConfigMap = new HashMap(); - if (isStrengthen && !queryIntegralOfTousse) { - List scoreConfigs = objectDao.findBySql(WorkScoreConfig.class.getSimpleName(), "where po.orgUnitCoding = '" + querySupplyRoom + "'"); - scoreConfigMap = new HashMap(); - if(scoreConfigs != null){ - for (WorkScoreConfig workScoreConfig : scoreConfigs) { - scoreConfigMap.put(workScoreConfig.getName(), workScoreConfig.getValue()); - } - } - } + int dataSoureOfMaterialsCountOfToussesInReports = CssdUtils.getSystemSetConfigByNameInt("dataSoureOfMaterialsCountOfToussesInReports", 3); // 按材料数量统计的SQL //回收记录 @@ -452,12 +478,25 @@ workLoadBean.setColumnName(type); workLoadBean.setSequence(sequenceMap.get(type)); if (scoreConfigMap.size() > 0) { - Integer scoreConfig = scoreConfigMap.get(type); - if(scoreConfig != null && scoreConfig > 0){ + WorkScoreConfig workScoreConfig = scoreConfigMap.get(type); + if(workScoreConfig != null + && MathTools.equals(workScoreConfig.getDataSources(), MathTools.ZERO_INTEGER) + && workScoreConfig.getValue() != null + && workScoreConfig.getValue() > 0){ //评分数小数点后面舍去(3 / 2 = 1分) - workLoadBean.setScore(amount/scoreConfig); + workLoadBean.setScore(amount/workScoreConfig.getValue()); } } + if(scoreConfigMap.size() > 0){ + WorkScoreConfig workScoreConfig = scoreConfigMap.get(type); + if(workScoreConfig != null + && MathTools.equals(workScoreConfig.getDataSources(), MathTools.ZERO_INTEGER) + && workScoreConfig.getValue() != null + && workScoreConfig.getValue() > 0){ + //评分数小数点后面舍去(3 / 2 = 1分) + workLoadBean.setScore(amount/workScoreConfig.getValue()); + } + } list.add(workLoadBean); } } catch (SQLException e) { @@ -494,10 +533,13 @@ workLoadBean.setSequence(sequenceMap.get("发货数量")); workLoadBean.setMaterialAmount(amount); if (scoreConfigMap.size() > 0) { - Integer scoreConfig = scoreConfigMap.get("发货数量"); - if(scoreConfig != null && scoreConfig > 0){ + WorkScoreConfig workScoreConfig = scoreConfigMap.get("发货数量"); + if(workScoreConfig != null + && MathTools.equals(workScoreConfig.getDataSources(), MathTools.ZERO_INTEGER) + && workScoreConfig.getValue() != null + && workScoreConfig.getValue() > 0){ //评分数小数点后面舍去(3 / 2 = 1分) - workLoadBean.setScore(amount/scoreConfig); + workLoadBean.setScore(amount/workScoreConfig.getValue()); } } list.add(workLoadBean);