Commit 2ff61850 by 张祺

移除mongodb代码

parent a66fa4e1
package com.keymobile.indicators.api.indicators; //package com.keymobile.indicators.api.indicators;
//
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
//
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; //import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; //import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; //import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; //import org.springframework.web.bind.annotation.RestController;
//
import com.keymobile.indicators.model.indicators.DeriveIndicators; //import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.service.indicators.DeriveIndicatorsService; //import com.keymobile.indicators.service.indicators.DeriveIndicatorsService;
//
import io.swagger.annotations.ApiOperation; //import io.swagger.annotations.ApiOperation;
//
@RestController //@RestController
@RequestMapping(value = "/deriveIndicatorsCtrl") //@RequestMapping(value = "/deriveIndicatorsCtrl")
public class DeriveIndicatorsCtrl { //public class DeriveIndicatorsCtrl {
//
@Autowired // @Autowired
private DeriveIndicatorsService derIndecatorsService; // private DeriveIndicatorsService derIndecatorsService;
//
@ApiOperation(value = "新增/修改衍生指标", notes = "新增/修改衍生指标") // @ApiOperation(value = "新增/修改衍生指标", notes = "新增/修改衍生指标")
@PostMapping(value = "/saveOrUpdateDerIndi") // @PostMapping(value = "/saveOrUpdateDerIndi")
public String saveOrUpdateDerIndicators(@RequestParam String operator, // public String saveOrUpdateDerIndicators(@RequestParam String operator,
@RequestBody DeriveIndicators derIndicators) throws Exception{ // @RequestBody DeriveIndicators derIndicators) throws Exception{
return derIndecatorsService.saveOrUpdate(derIndicators, operator); // return derIndecatorsService.saveOrUpdate(derIndicators, operator);
} // }
//
@ApiOperation(value = "删除衍生指标", notes = "删除衍生指标") // @ApiOperation(value = "删除衍生指标", notes = "删除衍生指标")
@PostMapping(value = "/deleteDerIndicators") // @PostMapping(value = "/deleteDerIndicators")
public void deleteDerIndicators(@RequestParam String derIndiId) throws Exception{ // public void deleteDerIndicators(@RequestParam String derIndiId) throws Exception{
derIndecatorsService.delete(derIndiId); // derIndecatorsService.delete(derIndiId);
} // }
//
@ApiOperation(value = "获取衍生指标列表", notes = "获取衍生指标列表") // @ApiOperation(value = "获取衍生指标列表", notes = "获取衍生指标列表")
@PostMapping(value = "/getDerIndicatorsList") // @PostMapping(value = "/getDerIndicatorsList")
public List<DeriveIndicators> getDerIndicatorsList(@RequestParam(required=false) String keyword)throws Exception{ // public List<DeriveIndicators> getDerIndicatorsList(@RequestParam(required=false) String keyword)throws Exception{
return derIndecatorsService.getDerIndicatorsList(keyword); // return derIndecatorsService.getDerIndicatorsList(keyword);
} // }
//
@ApiOperation(value = "获取衍生指标详情", notes = "获取衍生指标详情") // @ApiOperation(value = "获取衍生指标详情", notes = "获取衍生指标详情")
@PostMapping(value = "/getDerIndicatorsDetial") // @PostMapping(value = "/getDerIndicatorsDetial")
public DeriveIndicators getDerIndicatorsDetail(@RequestParam String id) throws Exception{ // public DeriveIndicators getDerIndicatorsDetail(@RequestParam String id) throws Exception{
return derIndecatorsService.getDerIndicatorsDetail(id); // return derIndecatorsService.getDerIndicatorsDetail(id);
} // }
//
@ApiOperation(value = "获取衍生指标关联的原生指标共同的维度", notes = "获取衍生指标关联的原生指标共同的维度") // @ApiOperation(value = "获取衍生指标关联的原生指标共同的维度", notes = "获取衍生指标关联的原生指标共同的维度")
@PostMapping(value = "/getSameDim") // @PostMapping(value = "/getSameDim")
public List<String> getSameDim(@RequestParam String indiDefIdString) throws Exception{ // public List<String> getSameDim(@RequestParam String indiDefIdString) throws Exception{
return derIndecatorsService.getSameDim(indiDefIdString); // return derIndecatorsService.getSameDim(indiDefIdString);
} // }
//
@ApiOperation(value = "计算衍生指标的值", notes = "计算衍生指标的值") // @ApiOperation(value = "计算衍生指标的值", notes = "计算衍生指标的值")
@PostMapping(value = "/calculate") // @PostMapping(value = "/calculate")
public double calculateDeriveIndicators(@RequestParam String derIndiId, // public double calculateDeriveIndicators(@RequestParam String derIndiId,
@RequestBody Map<String,Object> dimValues) throws Exception{ // @RequestBody Map<String,Object> dimValues) throws Exception{
return derIndecatorsService.calculateDeriveIndicators(derIndiId, dimValues); // return derIndecatorsService.calculateDeriveIndicators(derIndiId, dimValues);
} // }
//
@ApiOperation(value = "对标单元获取指标报表", notes = "对标单元获取指标报表") // @ApiOperation(value = "对标单元获取指标报表", notes = "对标单元获取指标报表")
@PostMapping(value = "/getIndicatorsReport") // @PostMapping(value = "/getIndicatorsReport")
public Map<String,Object> getIndicatorsReport(@RequestParam String StandardUnitId, // public Map<String,Object> getIndicatorsReport(@RequestParam String StandardUnitId,
@RequestParam String compareIndiIds, // @RequestParam String compareIndiIds,
@RequestBody List<String> compareDims,@RequestParam String year)throws Exception{ // @RequestBody List<String> compareDims,@RequestParam String year)throws Exception{
return derIndecatorsService.getIndicatorsReport(StandardUnitId, compareIndiIds, compareDims, year); // return derIndecatorsService.getIndicatorsReport(StandardUnitId, compareIndiIds, compareDims, year);
} // }
} //}
package com.keymobile.indicators.api.indicators; //package com.keymobile.indicators.api.indicators;
//
import java.io.InputStream; //import java.io.InputStream;
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
//
import org.apache.poi.xssf.usermodel.XSSFWorkbook; //import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; //import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; //import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; //import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; //import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; //import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; //import org.springframework.web.multipart.MultipartFile;
//
import com.keymobile.indicators.model.indicators.IndicatorsDef; //import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim; //import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.service.indicators.IndicatorsService; //import com.keymobile.indicators.service.indicators.IndicatorsService;
//
import io.swagger.annotations.ApiOperation; //import io.swagger.annotations.ApiOperation;
//
@RestController //@RestController
@RequestMapping(value = "/indicatorsCtrl") //@RequestMapping(value = "/indicatorsCtrl")
public class IndicatorsCtrl { //public class IndicatorsCtrl {
//
@Autowired // @Autowired
private IndicatorsService indicatorsService; // private IndicatorsService indicatorsService;
//
@ApiOperation(value = "新增/修改指标", notes = "新增/修改指标") // @ApiOperation(value = "新增/修改指标", notes = "新增/修改指标")
@PostMapping(value = "/saveOrUpdateIndiDef") // @PostMapping(value = "/saveOrUpdateIndiDef")
public String saveOrUpdateIndicators( // public String saveOrUpdateIndicators(
@RequestBody IndicatorsDef indiDef, // @RequestBody IndicatorsDef indiDef,
@RequestParam String operator)throws Exception{ // @RequestParam String operator)throws Exception{
return indicatorsService.saveOrUpdateIndiDef(indiDef,operator); // return indicatorsService.saveOrUpdateIndiDef(indiDef,operator);
} // }
//
@ApiOperation(value = "新增/修改维度(isUpdate:false(新增) true(修改))", notes = "新增/修改维度") // @ApiOperation(value = "新增/修改维度(isUpdate:false(新增) true(修改))", notes = "新增/修改维度")
@PostMapping(value = "/saveOrUpdateIndiDim") // @PostMapping(value = "/saveOrUpdateIndiDim")
public String saveOrUpdateDim(@RequestBody List<IndicatorsDim> indiDims, // public String saveOrUpdateDim(@RequestBody List<IndicatorsDim> indiDims,
@RequestParam String indiDefId, // @RequestParam String indiDefId,
@RequestParam String operator, // @RequestParam String operator,
@RequestParam String isUpdate) throws Exception{ // @RequestParam String isUpdate) throws Exception{
return indicatorsService.saveOrUpdateDim(indiDefId, indiDims, operator, isUpdate); // return indicatorsService.saveOrUpdateDim(indiDefId, indiDims, operator, isUpdate);
} // }
//
@ApiOperation(value = "判断原生指标能否修改 true:能 false:不能", notes = "判断原生指标能否修改 true:能 false:不能") // @ApiOperation(value = "判断原生指标能否修改 true:能 false:不能", notes = "判断原生指标能否修改 true:能 false:不能")
@PostMapping(value = "/canBeUpdate") // @PostMapping(value = "/canBeUpdate")
public boolean canBeUpdate(@RequestParam String indicatorsId) throws Exception{ // public boolean canBeUpdate(@RequestParam String indicatorsId) throws Exception{
return indicatorsService.canBeUpdate(indicatorsId); // return indicatorsService.canBeUpdate(indicatorsId);
} // }
//
@ApiOperation(value = "删除指标", notes = "删除指标") // @ApiOperation(value = "删除指标", notes = "删除指标")
@PostMapping(value = "/deleteIndicators") // @PostMapping(value = "/deleteIndicators")
public String delete(@RequestParam String indicatorsId)throws Exception{ // public String delete(@RequestParam String indicatorsId)throws Exception{
return indicatorsService.delete(indicatorsId); // return indicatorsService.delete(indicatorsId);
} // }
//
@ApiOperation(value = "获取指标列表", notes = "获取指标列表") // @ApiOperation(value = "获取指标列表", notes = "获取指标列表")
@PostMapping(value = "/getIndiDefList") // @PostMapping(value = "/getIndiDefList")
public List<IndicatorsDef> getIndiDefList(@RequestParam(required=false) String keyword)throws Exception{ // public List<IndicatorsDef> getIndiDefList(@RequestParam(required=false) String keyword)throws Exception{
return indicatorsService.getIndicatorsDefList(keyword); // return indicatorsService.getIndicatorsDefList(keyword);
} // }
//
@ApiOperation(value = "获取指标详情", notes = "获取指标详情") // @ApiOperation(value = "获取指标详情", notes = "获取指标详情")
@PostMapping(value = "/getIndiDefDetail") // @PostMapping(value = "/getIndiDefDetail")
public Map<String,Object> getIndiDefDetail(@RequestParam String indiDefId)throws Exception{ // public Map<String,Object> getIndiDefDetail(@RequestParam String indiDefId)throws Exception{
return indicatorsService.getIndicatorsDefDetail(indiDefId); // return indicatorsService.getIndicatorsDefDetail(indiDefId);
} // }
//
@ApiOperation(value = "获取上传文件表头", notes = "获取上传文件表头") // @ApiOperation(value = "获取上传文件表头", notes = "获取上传文件表头")
@PostMapping(value = "/getUploadExcelHead") // @PostMapping(value = "/getUploadExcelHead")
public List<Map<String,Object>> getUploadExcelHead( // public List<Map<String,Object>> getUploadExcelHead(
@RequestParam("file") MultipartFile file)throws Exception{ // @RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){ // try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); // XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.getUploadExcelHead(xssfWorkbook); // return indicatorsService.getUploadExcelHead(xssfWorkbook);
} // }
} // }
//
@ApiOperation(value = "判断上传文件表头和指标映射字段是否符合", notes = "判断上传文件表头和指标映射字段是否符合") // @ApiOperation(value = "判断上传文件表头和指标映射字段是否符合", notes = "判断上传文件表头和指标映射字段是否符合")
@PostMapping(value = "/isCorrespondence") // @PostMapping(value = "/isCorrespondence")
public String isCorrespondence(@RequestParam String indiDefId, // public String isCorrespondence(@RequestParam String indiDefId,
@RequestParam("file") MultipartFile file)throws Exception{ // @RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){ // try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); // XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.isCorrespondence(indiDefId, xssfWorkbook); // return indicatorsService.isCorrespondence(indiDefId, xssfWorkbook);
} // }
} // }
//
@ApiOperation(value = "上传解析指标数据", notes = "上传解析指标数据") // @ApiOperation(value = "上传解析指标数据", notes = "上传解析指标数据")
@PostMapping(value = "/importIndiData") // @PostMapping(value = "/importIndiData")
public String importIndicatorsData(@RequestParam String indiDefId, // public String importIndicatorsData(@RequestParam String indiDefId,
@RequestParam("file") MultipartFile file)throws Exception{ // @RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){ // try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); // XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.importIndicatorsData(indiDefId, xssfWorkbook); // return indicatorsService.importIndicatorsData(indiDefId, xssfWorkbook);
} // }
} // }
//
@ApiOperation(value = "查询指标值", notes = "查询指标值") // @ApiOperation(value = "查询指标值", notes = "查询指标值")
@PostMapping(value = "/queryIndiValue") // @PostMapping(value = "/queryIndiValue")
public Map<String,Object> queryIndicatorsValue(@RequestParam String indiDefId, // public Map<String,Object> queryIndicatorsValue(@RequestParam String indiDefId,
@RequestBody Map<String,Object> dimValue)throws Exception{ // @RequestBody Map<String,Object> dimValue)throws Exception{
return indicatorsService.queryIndicatorsValue(indiDefId, dimValue,false); // return indicatorsService.queryIndicatorsValue(indiDefId, dimValue,false);
} // }
//
@ApiOperation(value = "获取未审批指标值", notes = "获取未审批指标值") // @ApiOperation(value = "获取未审批指标值", notes = "获取未审批指标值")
@PostMapping(value = "/getUnApplyIndiValue") // @PostMapping(value = "/getUnApplyIndiValue")
public Map<String,Object> getUnApplyIndiValue() throws Exception{ // public Map<String,Object> getUnApplyIndiValue() throws Exception{
return indicatorsService.getUnApplyIndiValueList(); // return indicatorsService.getUnApplyIndiValueList();
} // }
//
@ApiOperation(value = "审批指标值", notes = "审批指标值") // @ApiOperation(value = "审批指标值", notes = "审批指标值")
@PostMapping(value = "/applyIndiValue") // @PostMapping(value = "/applyIndiValue")
public void applyIndicatorsValue(@RequestBody List<String> indiValueId) throws Exception{ // public void applyIndicatorsValue(@RequestBody List<String> indiValueId) throws Exception{
indicatorsService.applyIndicatorsValue(indiValueId); // indicatorsService.applyIndicatorsValue(indiValueId);
} // }
//
} //}
package com.keymobile.indicators.conf; //package com.keymobile.indicators.conf;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory; //import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration; //import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory; //import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.gridfs.GridFsTemplate; //import org.springframework.data.mongodb.gridfs.GridFsTemplate;
//
import com.mongodb.MongoClient; //import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions; //import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientURI; //import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase; //import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket; //import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets; //import com.mongodb.client.gridfs.GridFSBuckets;
//
@Configuration //@Configuration
public class MongoDBConfig extends AbstractMongoConfiguration { //public class MongoDBConfig extends AbstractMongoConfiguration {
//
@Value("${mongodb.uri}") // @Value("${mongodb.uri}")
private String host; // private String host;
@Value("${mongodb.database}") // @Value("${mongodb.database}")
private String database; // private String database;
@Value("${mongodb.username}") // @Value("${mongodb.username}")
private String user; // private String user;
@Value("${mongodb.password}") // @Value("${mongodb.password}")
private String pswd; // private String pswd;
@Value("${mongodb.maxConnectionIdleTime}") // @Value("${mongodb.maxConnectionIdleTime}")
private Integer maxConnectionIdleTime = 60000; // private Integer maxConnectionIdleTime = 60000;
//
@Override // @Override
protected String getDatabaseName() { // protected String getDatabaseName() {
return database; // return database;
} // }
//
//
@Bean // @Bean
public MongoDbFactory mongoDbFactory() { // public MongoDbFactory mongoDbFactory() {
return new SimpleMongoDbFactory(this.mongoClient(), this.getDatabaseName()); // return new SimpleMongoDbFactory(this.mongoClient(), this.getDatabaseName());
} // }
//
@Bean // @Bean
public GridFsTemplate gridFsTemplate() throws Exception { // public GridFsTemplate gridFsTemplate() throws Exception {
return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter()); // return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
} // }
//
@Bean // @Bean
public GridFSBucket getGridFSBuckets() { // public GridFSBucket getGridFSBuckets() {
MongoDatabase db = mongoDbFactory().getDb(); // MongoDatabase db = mongoDbFactory().getDb();
return GridFSBuckets.create(db); // return GridFSBuckets.create(db);
} // }
//
//
@Override // @Override
public MongoClient mongoClient() { // public MongoClient mongoClient() {
String uri = String.format("mongodb://%s:%s@%s/%s", user, pswd, host, database); // String uri = String.format("mongodb://%s:%s@%s/%s", user, pswd, host, database);
MongoClientOptions.Builder builder = new MongoClientOptions.Builder(); // MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.maxConnectionIdleTime(maxConnectionIdleTime); // builder.maxConnectionIdleTime(maxConnectionIdleTime);
MongoClientURI clientURI = new MongoClientURI(uri, builder); // MongoClientURI clientURI = new MongoClientURI(uri, builder);
return new MongoClient(clientURI); // return new MongoClient(clientURI);
} // }
//
} //}
package com.keymobile.indicators.model.indicators; //package com.keymobile.indicators.model.indicators;
//
import java.io.Serializable; //import java.io.Serializable;
import java.util.Date; //import java.util.Date;
//
import org.springframework.data.annotation.Id; //import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; //import org.springframework.data.mongodb.core.mapping.Document;
//
import com.fasterxml.jackson.annotation.JsonFormat; //import com.fasterxml.jackson.annotation.JsonFormat;
//
/** ///**
* 衍生指标 // * 衍生指标
*/ // */
@Document(collection="indi_derive") //@Document(collection="indi_derive")
public class DeriveIndicators implements Serializable{ //public class DeriveIndicators implements Serializable{
/** // /**
* // *
*/ // */
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
@Id // @Id
private String id; // private String id;
private String derName; // private String derName;
private String derCnName; // private String derCnName;
private String derUnit;//计算单位 // private String derUnit;//计算单位
private String derFormula; // private String derFormula;
private String indiDefIds; // private String indiDefIds;
private String dimNames; // private String dimNames;
private String derFormulaDesc;//公式中文描述 // private String derFormulaDesc;//公式中文描述
//
private String status; // private String status;
//
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; // private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime; // private Date updateTime;
//
private String creator; // private String creator;
private String updator; // private String updator;
//
public String getId() { // public String getId() {
return id; // return id;
} // }
public void setId(String id) { // public void setId(String id) {
this.id = id; // this.id = id;
} // }
public String getDerName() { // public String getDerName() {
return derName; // return derName;
} // }
public void setDerName(String derName) { // public void setDerName(String derName) {
this.derName = derName; // this.derName = derName;
} // }
public String getDerCnName() { // public String getDerCnName() {
return derCnName; // return derCnName;
} // }
public void setDerCnName(String derCnName) { // public void setDerCnName(String derCnName) {
this.derCnName = derCnName; // this.derCnName = derCnName;
} // }
public String getDerUnit() { // public String getDerUnit() {
return derUnit; // return derUnit;
} // }
public void setDerUnit(String derUnit) { // public void setDerUnit(String derUnit) {
this.derUnit = derUnit; // this.derUnit = derUnit;
} // }
public String getDerFormula() { // public String getDerFormula() {
return derFormula; // return derFormula;
} // }
public void setDerFormula(String derFormula) { // public void setDerFormula(String derFormula) {
this.derFormula = derFormula; // this.derFormula = derFormula;
} // }
public String getIndiDefIds() { // public String getIndiDefIds() {
return indiDefIds; // return indiDefIds;
} // }
public void setIndiDefIds(String indiDefIds) { // public void setIndiDefIds(String indiDefIds) {
this.indiDefIds = indiDefIds; // this.indiDefIds = indiDefIds;
} // }
public String getDimNames() { // public String getDimNames() {
return dimNames; // return dimNames;
} // }
public void setDimNames(String dimNames) { // public void setDimNames(String dimNames) {
this.dimNames = dimNames; // this.dimNames = dimNames;
} // }
public String getDerFormulaDesc() { // public String getDerFormulaDesc() {
return derFormulaDesc; // return derFormulaDesc;
} // }
public void setDerFormulaDesc(String derFormulaDesc) { // public void setDerFormulaDesc(String derFormulaDesc) {
this.derFormulaDesc = derFormulaDesc; // this.derFormulaDesc = derFormulaDesc;
} // }
public String getStatus() { // public String getStatus() {
return status; // return status;
} // }
public void setStatus(String status) { // public void setStatus(String status) {
this.status = status; // this.status = status;
} // }
public Date getCreateTime() { // public Date getCreateTime() {
return createTime; // return createTime;
} // }
public void setCreateTime(Date createTime) { // public void setCreateTime(Date createTime) {
this.createTime = createTime; // this.createTime = createTime;
} // }
public Date getUpdateTime() { // public Date getUpdateTime() {
return updateTime; // return updateTime;
} // }
public void setUpdateTime(Date updateTime) { // public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // this.updateTime = updateTime;
} // }
public String getCreator() { // public String getCreator() {
return creator; // return creator;
} // }
public void setCreator(String creator) { // public void setCreator(String creator) {
this.creator = creator; // this.creator = creator;
} // }
public String getUpdator() { // public String getUpdator() {
return updator; // return updator;
} // }
public void setUpdator(String updator) { // public void setUpdator(String updator) {
this.updator = updator; // this.updator = updator;
} // }
} //}
package com.keymobile.indicators.model.indicators; //package com.keymobile.indicators.model.indicators;
//
import java.io.Serializable; //import java.io.Serializable;
import java.util.Date; //import java.util.Date;
//
import org.springframework.data.annotation.Id; //import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; //import org.springframework.data.mongodb.core.mapping.Document;
//
import com.fasterxml.jackson.annotation.JsonFormat; //import com.fasterxml.jackson.annotation.JsonFormat;
//
/** ///**
* 指标定义表 // * 指标定义表
*/ // */
@Document(collection="indi_def") //@Document(collection="indi_def")
public class IndicatorsDef implements Serializable{ //public class IndicatorsDef implements Serializable{
/** // /**
* // *
*/ // */
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
@Id // @Id
private String id; // private String id;
private String indiName; // private String indiName;
private String indiCnName; // private String indiCnName;
private int valueMapping = -1; // private int valueMapping = -1;
private String valueMappingName; // private String valueMappingName;
private String indiUnit; // private String indiUnit;
private String dataType; // private String dataType;
private String status; // private String status;
//
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; // private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime; // private Date updateTime;
//
private String creator; // private String creator;
private String updator; // private String updator;
//
//添加基础指标编号和公式属性 // //添加基础指标编号和公式属性
private String indiCode; // private String indiCode;
private String indiFormula; // private String indiFormula;
//
public String getId() { // public String getId() {
return id; // return id;
} // }
public void setId(String id) { // public void setId(String id) {
this.id = id; // this.id = id;
} // }
public String getIndiName() { // public String getIndiName() {
return indiName; // return indiName;
} // }
public void setIndiName(String indiName) { // public void setIndiName(String indiName) {
this.indiName = indiName; // this.indiName = indiName;
} // }
public String getIndiCnName() { // public String getIndiCnName() {
return indiCnName; // return indiCnName;
} // }
public void setIndiCnName(String indiCnName) { // public void setIndiCnName(String indiCnName) {
this.indiCnName = indiCnName; // this.indiCnName = indiCnName;
} // }
public int getValueMapping() { // public int getValueMapping() {
return valueMapping; // return valueMapping;
} // }
public void setValueMapping(int valueMapping) { // public void setValueMapping(int valueMapping) {
this.valueMapping = valueMapping; // this.valueMapping = valueMapping;
} // }
public String getValueMappingName() { // public String getValueMappingName() {
return valueMappingName; // return valueMappingName;
} // }
public void setValueMappingName(String valueMappingName) { // public void setValueMappingName(String valueMappingName) {
this.valueMappingName = valueMappingName; // this.valueMappingName = valueMappingName;
} // }
public String getIndiUnit() { // public String getIndiUnit() {
return indiUnit; // return indiUnit;
} // }
public void setIndiUnit(String indiUnit) { // public void setIndiUnit(String indiUnit) {
this.indiUnit = indiUnit; // this.indiUnit = indiUnit;
} // }
public String getDataType() { // public String getDataType() {
return dataType; // return dataType;
} // }
public void setDataType(String dataType) { // public void setDataType(String dataType) {
this.dataType = dataType; // this.dataType = dataType;
} // }
public String getStatus() { // public String getStatus() {
return status; // return status;
} // }
public void setStatus(String status) { // public void setStatus(String status) {
this.status = status; // this.status = status;
} // }
public Date getCreateTime() { // public Date getCreateTime() {
return createTime; // return createTime;
} // }
public void setCreateTime(Date createTime) { // public void setCreateTime(Date createTime) {
this.createTime = createTime; // this.createTime = createTime;
} // }
public Date getUpdateTime() { // public Date getUpdateTime() {
return updateTime; // return updateTime;
} // }
public void setUpdateTime(Date updateTime) { // public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // this.updateTime = updateTime;
} // }
public String getCreator() { // public String getCreator() {
return creator; // return creator;
} // }
public void setCreator(String creator) { // public void setCreator(String creator) {
this.creator = creator; // this.creator = creator;
} // }
public String getUpdator() { // public String getUpdator() {
return updator; // return updator;
} // }
public void setUpdator(String updator) { // public void setUpdator(String updator) {
this.updator = updator; // this.updator = updator;
} // }
public String getIndiCode() { // public String getIndiCode() {
return indiCode; // return indiCode;
} // }
public void setIndiCode(String indiCode) { // public void setIndiCode(String indiCode) {
this.indiCode = indiCode; // this.indiCode = indiCode;
} // }
public String getIndiFormula() { // public String getIndiFormula() {
return indiFormula; // return indiFormula;
} // }
public void setIndiFormula(String indiFormula) { // public void setIndiFormula(String indiFormula) {
this.indiFormula = indiFormula; // this.indiFormula = indiFormula;
} // }
} //}
package com.keymobile.indicators.model.indicators; //package com.keymobile.indicators.model.indicators;
//
import java.io.Serializable; //import java.io.Serializable;
import java.util.Date; //import java.util.Date;
//
import org.springframework.data.annotation.Id; //import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; //import org.springframework.data.mongodb.core.mapping.Document;
//
import com.fasterxml.jackson.annotation.JsonFormat; //import com.fasterxml.jackson.annotation.JsonFormat;
//
/** ///**
* 指标维度表 // * 指标维度表
*/ // */
@Document(collection="indi_dim") //@Document(collection="indi_dim")
public class IndicatorsDim implements Serializable{ //public class IndicatorsDim implements Serializable{
/** // /**
* // *
*/ // */
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
@Id // @Id
private String id; // private String id;
private String dimName; // private String dimName;
private String dimCnName; // private String dimCnName;
private String dimType; // private String dimType;
private int dimMapping = -1; // private int dimMapping = -1;
private String dimMappingName; // private String dimMappingName;
private String dataType; // private String dataType;
private int sort; // private int sort;
private String indiDefId; // private String indiDefId;
//
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; // private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime; // private Date updateTime;
//
private String creator; // private String creator;
private String updator; // private String updator;
public String getId() { // public String getId() {
return id; // return id;
} // }
public void setId(String id) { // public void setId(String id) {
this.id = id; // this.id = id;
} // }
public String getDimName() { // public String getDimName() {
return dimName; // return dimName;
} // }
public void setDimName(String dimName) { // public void setDimName(String dimName) {
this.dimName = dimName; // this.dimName = dimName;
} // }
public String getDimCnName() { // public String getDimCnName() {
return dimCnName; // return dimCnName;
} // }
public void setDimCnName(String dimCnName) { // public void setDimCnName(String dimCnName) {
this.dimCnName = dimCnName; // this.dimCnName = dimCnName;
} // }
public String getDimType() { // public String getDimType() {
return dimType; // return dimType;
} // }
public void setDimType(String dimType) { // public void setDimType(String dimType) {
this.dimType = dimType; // this.dimType = dimType;
} // }
public int getDimMapping() { // public int getDimMapping() {
return dimMapping; // return dimMapping;
} // }
public void setDimMapping(int dimMapping) { // public void setDimMapping(int dimMapping) {
this.dimMapping = dimMapping; // this.dimMapping = dimMapping;
} // }
public String getDimMappingName() { // public String getDimMappingName() {
return dimMappingName; // return dimMappingName;
} // }
public void setDimMappingName(String dimMappingName) { // public void setDimMappingName(String dimMappingName) {
this.dimMappingName = dimMappingName; // this.dimMappingName = dimMappingName;
} // }
public String getDataType() { // public String getDataType() {
return dataType; // return dataType;
} // }
public void setDataType(String dataType) { // public void setDataType(String dataType) {
this.dataType = dataType; // this.dataType = dataType;
} // }
public int getSort() { // public int getSort() {
return sort; // return sort;
} // }
public void setSort(int sort) { // public void setSort(int sort) {
this.sort = sort; // this.sort = sort;
} // }
public String getIndiDefId() { // public String getIndiDefId() {
return indiDefId; // return indiDefId;
} // }
public void setIndiDefId(String indiDefId) { // public void setIndiDefId(String indiDefId) {
this.indiDefId = indiDefId; // this.indiDefId = indiDefId;
} // }
public Date getCreateTime() { // public Date getCreateTime() {
return createTime; // return createTime;
} // }
public void setCreateTime(Date createTime) { // public void setCreateTime(Date createTime) {
this.createTime = createTime; // this.createTime = createTime;
} // }
public Date getUpdateTime() { // public Date getUpdateTime() {
return updateTime; // return updateTime;
} // }
public void setUpdateTime(Date updateTime) { // public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // this.updateTime = updateTime;
} // }
public String getCreator() { // public String getCreator() {
return creator; // return creator;
} // }
public void setCreator(String creator) { // public void setCreator(String creator) {
this.creator = creator; // this.creator = creator;
} // }
public String getUpdator() { // public String getUpdator() {
return updator; // return updator;
} // }
public void setUpdator(String updator) { // public void setUpdator(String updator) {
this.updator = updator; // this.updator = updator;
} // }
//
//
} //}
package com.keymobile.indicators.persistence.indicators; //package com.keymobile.indicators.persistence.indicators;
//
import java.util.List; //import java.util.List;
//
import org.springframework.data.mongodb.repository.MongoRepository; //import org.springframework.data.mongodb.repository.MongoRepository;
//
import com.keymobile.indicators.model.indicators.DeriveIndicators; //import com.keymobile.indicators.model.indicators.DeriveIndicators;
//
public interface DeriveIndicatorsRepository extends MongoRepository<DeriveIndicators,String>{ //public interface DeriveIndicatorsRepository extends MongoRepository<DeriveIndicators,String>{
//
//判断原生指标是否关联了衍生指标 // //判断原生指标是否关联了衍生指标
public List<DeriveIndicators> findByIndiDefIdsLike(String indiDefId); // public List<DeriveIndicators> findByIndiDefIdsLike(String indiDefId);
//
public List<DeriveIndicators> findByDerNameLikeOrDerCnNameLike(String name,String cnName); // public List<DeriveIndicators> findByDerNameLikeOrDerCnNameLike(String name,String cnName);
} //}
package com.keymobile.indicators.persistence.indicators; //package com.keymobile.indicators.persistence.indicators;
//
import java.util.List; //import java.util.List;
//
import org.springframework.data.mongodb.repository.MongoRepository; //import org.springframework.data.mongodb.repository.MongoRepository;
//
import com.keymobile.indicators.model.indicators.IndicatorsDef; //import com.keymobile.indicators.model.indicators.IndicatorsDef;
//
public interface IndicatorsDefRepository extends MongoRepository<IndicatorsDef,String>{ //public interface IndicatorsDefRepository extends MongoRepository<IndicatorsDef,String>{
public List<IndicatorsDef> findByStatus(String status); // public List<IndicatorsDef> findByStatus(String status);
//
public List<IndicatorsDef> findByIndiNameLikeOrIndiCnNameLikeAndStatus(String name,String cnName,String status); // public List<IndicatorsDef> findByIndiNameLikeOrIndiCnNameLikeAndStatus(String name,String cnName,String status);
} //}
package com.keymobile.indicators.persistence.indicators; //package com.keymobile.indicators.persistence.indicators;
//
import java.util.List; //import java.util.List;
import java.util.Optional; //import java.util.Optional;
//
import org.springframework.data.mongodb.repository.MongoRepository; //import org.springframework.data.mongodb.repository.MongoRepository;
//
import com.keymobile.indicators.model.indicators.IndicatorsDim; //import com.keymobile.indicators.model.indicators.IndicatorsDim;
//
public interface IndicatorsDimRepository extends MongoRepository<IndicatorsDim,String>{ //public interface IndicatorsDimRepository extends MongoRepository<IndicatorsDim,String>{
public void deleteByIndiDefId(String indiDefId); // public void deleteByIndiDefId(String indiDefId);
//
public List<IndicatorsDim> findByIndiDefId(String indiDefId); // public List<IndicatorsDim> findByIndiDefId(String indiDefId);
//
public Optional<IndicatorsDim> findByIndiDefIdAndDimMappingName(String indiDefId,String dimMappindName); // public Optional<IndicatorsDim> findByIndiDefIdAndDimMappingName(String indiDefId,String dimMappindName);
//
public Optional<IndicatorsDim> findByIndiDefIdAndDimCnName(String indiDefId,String dimCnName); // public Optional<IndicatorsDim> findByIndiDefIdAndDimCnName(String indiDefId,String dimCnName);
} //}
package com.keymobile.indicators.service.indicators; //package com.keymobile.indicators.service.indicators;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Date; //import java.util.Date;
import java.util.HashMap; //import java.util.HashMap;
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
import java.util.Optional; //import java.util.Optional;
//
import org.apache.commons.lang.StringUtils; //import org.apache.commons.lang.StringUtils;
import org.mariuszgromada.math.mxparser.Expression; //import org.mariuszgromada.math.mxparser.Expression;
import org.slf4j.Logger; //import org.slf4j.Logger;
import org.slf4j.LoggerFactory; //import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import com.keymobile.indicators.model.indicators.DeriveIndicators; //import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.model.indicators.IndicatorsDef; //import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim; //import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository; //import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository; //import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository; //import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository;
//
@Service //@Service
public class DeriveIndicatorsService { //public class DeriveIndicatorsService {
private Logger logger = LoggerFactory.getLogger(DeriveIndicatorsService.class); // private Logger logger = LoggerFactory.getLogger(DeriveIndicatorsService.class);
//
@Autowired // @Autowired
private DeriveIndicatorsRepository derIndicatorsRepo; // private DeriveIndicatorsRepository derIndicatorsRepo;
@Autowired // @Autowired
private IndicatorsDimRepository indicatorsDimRepo; // private IndicatorsDimRepository indicatorsDimRepo;
@Autowired // @Autowired
private IndicatorsService indicatorsService; // private IndicatorsService indicatorsService;
@Autowired // @Autowired
private IndicatorsDefRepository indicatorsDefRepo; // private IndicatorsDefRepository indicatorsDefRepo;
//
//新增/修改衍生指标 // //新增/修改衍生指标
public String saveOrUpdate(DeriveIndicators derIndicators,String operator)throws Exception { // public String saveOrUpdate(DeriveIndicators derIndicators,String operator)throws Exception {
//新增 // //新增
if(StringUtils.isBlank(derIndicators.getId())) { // if(StringUtils.isBlank(derIndicators.getId())) {
derIndicators.setCreateTime(new Date()); // derIndicators.setCreateTime(new Date());
derIndicators.setCreator(operator); // derIndicators.setCreator(operator);
derIndicators.setUpdateTime(new Date()); // derIndicators.setUpdateTime(new Date());
derIndicators.setUpdator(operator); // derIndicators.setUpdator(operator);
}else { // }else {
derIndicators.setUpdateTime(new Date()); // derIndicators.setUpdateTime(new Date());
derIndicators.setUpdator(operator); // derIndicators.setUpdator(operator);
} // }
derIndicators.setStatus("0"); // derIndicators.setStatus("0");
if(StringUtils.isBlank(derIndicators.getDimNames())) { // if(StringUtils.isBlank(derIndicators.getDimNames())) {
derIndicators.setDimNames("地区;年份"); // derIndicators.setDimNames("地区;年份");
} // }
derIndicatorsRepo.save(derIndicators); // derIndicatorsRepo.save(derIndicators);
return derIndicators.getId(); // return derIndicators.getId();
} // }
//
//删除衍生指标 // //删除衍生指标
public void delete(String id) throws Exception{ // public void delete(String id) throws Exception{
derIndicatorsRepo.deleteById(id); // derIndicatorsRepo.deleteById(id);
} // }
//
//获取衍生列表 // //获取衍生列表
public List<DeriveIndicators> getDerIndicatorsList(String keyword)throws Exception{ // public List<DeriveIndicators> getDerIndicatorsList(String keyword)throws Exception{
if(StringUtils.isBlank(keyword)) { // if(StringUtils.isBlank(keyword)) {
return derIndicatorsRepo.findAll(); // return derIndicatorsRepo.findAll();
} // }
return derIndicatorsRepo.findByDerNameLikeOrDerCnNameLike(keyword, keyword); // return derIndicatorsRepo.findByDerNameLikeOrDerCnNameLike(keyword, keyword);
} // }
//
//获取衍生指标详情 // //获取衍生指标详情
public DeriveIndicators getDerIndicatorsDetail(String id) throws Exception{ // public DeriveIndicators getDerIndicatorsDetail(String id) throws Exception{
Optional<DeriveIndicators> deriveIndi = derIndicatorsRepo.findById(id); // Optional<DeriveIndicators> deriveIndi = derIndicatorsRepo.findById(id);
if(deriveIndi.isPresent()) { // if(deriveIndi.isPresent()) {
return deriveIndi.get(); // return deriveIndi.get();
} // }
return null; // return null;
} // }
//
//根据衍生指标关联的原生指标获取共同的维度 // //根据衍生指标关联的原生指标获取共同的维度
public List<String> getSameDim(String indiDefIdString) throws Exception{ // public List<String> getSameDim(String indiDefIdString) throws Exception{
if(indiDefIdString.endsWith(";")) { // if(indiDefIdString.endsWith(";")) {
indiDefIdString = indiDefIdString.substring(0, indiDefIdString.length()-1); // indiDefIdString = indiDefIdString.substring(0, indiDefIdString.length()-1);
} // }
String[] indiDefIds = indiDefIdString.split(";"); // String[] indiDefIds = indiDefIdString.split(";");
List<String> retainList = new ArrayList<>(); // List<String> retainList = new ArrayList<>();
for(int i=0;i<indiDefIds.length;i++) { // for(int i=0;i<indiDefIds.length;i++) {
//根据原生指标定义id获取维度名称 // //根据原生指标定义id获取维度名称
List<String> dimNameList = this.getIndiDefDimNames(indiDefIds[i]); // List<String> dimNameList = this.getIndiDefDimNames(indiDefIds[i]);
if(i==0) { // if(i==0) {
if(dimNameList.isEmpty()) { // if(dimNameList.isEmpty()) {
break; // break;
}else { // }else {
retainList.addAll(dimNameList); // retainList.addAll(dimNameList);
continue; // continue;
} // }
} // }
retainList.retainAll(dimNameList); // retainList.retainAll(dimNameList);
if(retainList.isEmpty()) { // if(retainList.isEmpty()) {
break; // break;
} // }
} // }
return retainList; // return retainList;
} // }
//
//计算衍生指标值 // //计算衍生指标值
public double calculateDeriveIndicators(String derIndiId,Map<String,Object> dimValues) throws Exception{ // public double calculateDeriveIndicators(String derIndiId,Map<String,Object> dimValues) throws Exception{
//根据衍生指标id获取衍生指标 // //根据衍生指标id获取衍生指标
Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(derIndiId); // Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(derIndiId);
//获取衍生指标计算公式 // //获取衍生指标计算公式
String derFormula = derIndicators.get().getDerFormula(); // String derFormula = derIndicators.get().getDerFormula();
logger.info("未替换公式:"+derFormula); // logger.info("未替换公式:"+derFormula);
//
//获取衍生指标关联的原生指标id // //获取衍生指标关联的原生指标id
String indiDefIdsString = derIndicators.get().getIndiDefIds(); // String indiDefIdsString = derIndicators.get().getIndiDefIds();
if(indiDefIdsString.endsWith(";")) { // if(indiDefIdsString.endsWith(";")) {
indiDefIdsString = indiDefIdsString.substring(0, indiDefIdsString.length()-1); // indiDefIdsString = indiDefIdsString.substring(0, indiDefIdsString.length()-1);
} // }
String[] indiDefIds = indiDefIdsString.split(";"); // String[] indiDefIds = indiDefIdsString.split(";");
for(String indiDefId : indiDefIds) { // for(String indiDefId : indiDefIds) {
Map<String,Object> resultMap = indicatorsService.queryIndicatorsValue(indiDefId, dimValues, true); // Map<String,Object> resultMap = indicatorsService.queryIndicatorsValue(indiDefId, dimValues, true);
Object count = resultMap.get("count"); // Object count = resultMap.get("count");
//替换公式中的原生指标id为对应的值 // //替换公式中的原生指标id为对应的值
derFormula = derFormula.replace(indiDefId, count.toString()); // derFormula = derFormula.replace(indiDefId, count.toString());
} // }
logger.info("替换后的公式:"+derFormula); // logger.info("替换后的公式:"+derFormula);
//
Expression e = new Expression(derFormula); // Expression e = new Expression(derFormula);
//
double result = (double) Math.round((e.calculate()) * 100) / 100; // double result = (double) Math.round((e.calculate()) * 100) / 100;
return result; // return result;
} // }
//
public Map<String,Object> getIndicatorsReport(String StandardUnitId, // public Map<String,Object> getIndicatorsReport(String StandardUnitId,
String compareIndiIds,List<String> compareDims,String year) throws Exception{ // String compareIndiIds,List<String> compareDims,String year) throws Exception{
Map<String,Object> reportMap = new HashMap<>(); // Map<String,Object> reportMap = new HashMap<>();
reportMap.put("StandardUnitId", StandardUnitId); // reportMap.put("StandardUnitId", StandardUnitId);
//
//拆分年份维度 // //拆分年份维度
String[] yearDim = year.split(":"); // String[] yearDim = year.split(":");
//
if(compareIndiIds.endsWith(";")) { // if(compareIndiIds.endsWith(";")) {
compareIndiIds = compareIndiIds.substring(0, compareIndiIds.length()-1); // compareIndiIds = compareIndiIds.substring(0, compareIndiIds.length()-1);
} // }
String[] compareIndiId = compareIndiIds.split(";"); // String[] compareIndiId = compareIndiIds.split(";");
//
List<Map<String,Object>> indiReportList = new ArrayList<>(); // List<Map<String,Object>> indiReportList = new ArrayList<>();
for(String indiId : compareIndiId) { // for(String indiId : compareIndiId) {
Map<String,Object> indiReport = new HashMap<>(); // Map<String,Object> indiReport = new HashMap<>();
String[] inId = indiId.split(":"); // String[] inId = indiId.split(":");
//如果是原生指标 // //如果是原生指标
if("0".equals(inId[1])) { // if("0".equals(inId[1])) {
//根据原生指标id获取原生指标详情 // //根据原生指标id获取原生指标详情
Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(inId[0]); // Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(inId[0]);
indiReport.put("indicatorsName", indiDef.get().getIndiCnName()); // indiReport.put("indicatorsName", indiDef.get().getIndiCnName());
//
List<Map<String,Object>> resultList = new ArrayList<>(); // List<Map<String,Object>> resultList = new ArrayList<>();
//
String unit = indiDef.get().getIndiUnit(); // String unit = indiDef.get().getIndiUnit();
for(String compareDim : compareDims) { // for(String compareDim : compareDims) {
if(compareDim.endsWith(";")) { // if(compareDim.endsWith(";")) {
compareDim = compareDim.substring(0, compareDim.length()-1); // compareDim = compareDim.substring(0, compareDim.length()-1);
} // }
String[] compDim = compareDim.split(":"); // String[] compDim = compareDim.split(":");
String dimCnName = compDim[0]; // String dimCnName = compDim[0];
String[] dimValues = compDim[1].split(";"); // String[] dimValues = compDim[1].split(";");
for(String dimValue : dimValues) { // for(String dimValue : dimValues) {
Map<String,Object> queryMap = new HashMap<>(); // Map<String,Object> queryMap = new HashMap<>();
queryMap.put(dimCnName, dimValue); // queryMap.put(dimCnName, dimValue);
queryMap.put(yearDim[0],yearDim[1]); // queryMap.put(yearDim[0],yearDim[1]);
//
Map<String,Object> resultMap = new HashMap<>(); // Map<String,Object> resultMap = new HashMap<>();
resultMap.put("dimValue", dimValue); // resultMap.put("dimValue", dimValue);
resultMap.put("unit", unit); // resultMap.put("unit", unit);
Map<String,Object> result = indicatorsService.queryIndicatorsValue( // Map<String,Object> result = indicatorsService.queryIndicatorsValue(
inId[0], queryMap, true); // inId[0], queryMap, true);
resultMap.put("result", result.get("count")); // resultMap.put("result", result.get("count"));
//
resultList.add(resultMap); // resultList.add(resultMap);
} // }
} // }
indiReport.put("resultList", resultList); // indiReport.put("resultList", resultList);
//
indiReportList.add(indiReport); // indiReportList.add(indiReport);
}else { // }else {
//根据衍生指标id获取衍生指标详情 // //根据衍生指标id获取衍生指标详情
Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(inId[0]); // Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(inId[0]);
indiReport.put("indicatorsName", derIndicators.get().getDerCnName()); // indiReport.put("indicatorsName", derIndicators.get().getDerCnName());
//
List<Map<String,Object>> resultList = new ArrayList<>(); // List<Map<String,Object>> resultList = new ArrayList<>();
//
//获取单位 // //获取单位
String unit = derIndicators.get().getDerUnit(); // String unit = derIndicators.get().getDerUnit();
for(String compareDim : compareDims) { // for(String compareDim : compareDims) {
if(compareDim.endsWith(";")) { // if(compareDim.endsWith(";")) {
compareDim = compareDim.substring(0, compareDim.length()-1); // compareDim = compareDim.substring(0, compareDim.length()-1);
} // }
String[] compDim = compareDim.split(":"); // String[] compDim = compareDim.split(":");
String dimCnName = compDim[0]; // String dimCnName = compDim[0];
String[] dimValues = compDim[1].split(";"); // String[] dimValues = compDim[1].split(";");
for(String dimValue : dimValues) { // for(String dimValue : dimValues) {
Map<String,Object> queryMap = new HashMap<>(); // Map<String,Object> queryMap = new HashMap<>();
queryMap.put(dimCnName, dimValue); // queryMap.put(dimCnName, dimValue);
queryMap.put(yearDim[0],yearDim[1]); // queryMap.put(yearDim[0],yearDim[1]);
//
Map<String,Object> resultMap = new HashMap<>(); // Map<String,Object> resultMap = new HashMap<>();
resultMap.put("dimValue", dimValue); // resultMap.put("dimValue", dimValue);
resultMap.put("unit", unit); // resultMap.put("unit", unit);
double result = this.calculateDeriveIndicators(inId[0], queryMap); // double result = this.calculateDeriveIndicators(inId[0], queryMap);
resultMap.put("result", result); // resultMap.put("result", result);
//
resultList.add(resultMap); // resultList.add(resultMap);
} // }
} // }
indiReport.put("resultList", resultList); // indiReport.put("resultList", resultList);
//
indiReportList.add(indiReport); // indiReportList.add(indiReport);
} // }
} // }
reportMap.put("report", indiReportList); // reportMap.put("report", indiReportList);
return reportMap; // return reportMap;
} // }
//
private List<String> getIndiDefDimNames(String indiDefId){ // private List<String> getIndiDefDimNames(String indiDefId){
List<String> result = new ArrayList<>(); // List<String> result = new ArrayList<>();
List<IndicatorsDim> dims = indicatorsDimRepo.findByIndiDefId(indiDefId); // List<IndicatorsDim> dims = indicatorsDimRepo.findByIndiDefId(indiDefId);
for(IndicatorsDim dim : dims) { // for(IndicatorsDim dim : dims) {
result.add(dim.getDimMappingName()); // result.add(dim.getDimMappingName());
} // }
return result; // return result;
} // }
} //}
package com.keymobile.indicators.service.indicators; //package com.keymobile.indicators.service.indicators;
//
import java.text.DecimalFormat; //import java.text.DecimalFormat;
import java.text.SimpleDateFormat; //import java.text.SimpleDateFormat;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.HashMap; //import java.util.HashMap;
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
//
import org.apache.commons.lang.StringUtils; //import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil; //import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.xssf.usermodel.XSSFRow; //import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; //import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; //import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger; //import org.slf4j.Logger;
import org.slf4j.LoggerFactory; //import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import com.keymobile.indicators.conf.MongoDBConfig; //import com.keymobile.indicators.conf.MongoDBConfig;
import com.keymobile.indicators.model.indicators.IndicatorsDef; //import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim; //import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.mongodb.BasicDBObject; //import com.mongodb.BasicDBObject;
import com.mongodb.DB; //import com.mongodb.DB;
import com.mongodb.DBCollection; //import com.mongodb.DBCollection;
import com.mongodb.DBObject; //import com.mongodb.DBObject;
import com.mongodb.MongoClient; //import com.mongodb.MongoClient;
//
@Service //@Service
public class IndicatorsExcelService { //public class IndicatorsExcelService {
//
private Logger logger = LoggerFactory.getLogger(IndicatorsExcelService.class); // private Logger logger = LoggerFactory.getLogger(IndicatorsExcelService.class);
@Autowired // @Autowired
private MongoDBConfig mongoDbConfig; // private MongoDBConfig mongoDbConfig;
//
@Value("${mongodb.database}") // @Value("${mongodb.database}")
private String database; // private String database;
//
//获取上传文件的excel头 // //获取上传文件的excel头
public Map<String,Object> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{ // public Map<String,Object> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{
int startDataRow = 0;//开始读excel数据的行号 // int startDataRow = 0;//开始读excel数据的行号
Map<String,Object> result = new HashMap<>(); // Map<String,Object> result = new HashMap<>();
List<Map<String,Object>> cellDetailList = new ArrayList<>(); // List<Map<String,Object>> cellDetailList = new ArrayList<>();
List<String> cellList = new ArrayList<>(); // List<String> cellList = new ArrayList<>();
result.put("cellDetailList", cellDetailList); // result.put("cellDetailList", cellDetailList);
result.put("cellList", cellList); // result.put("cellList", cellList);
for(XSSFSheet excelSheet : xssfWorkbook) { // for(XSSFSheet excelSheet : xssfWorkbook) {
XSSFRow xssfRow = excelSheet.getRow(startDataRow); // XSSFRow xssfRow = excelSheet.getRow(startDataRow);
int i = 0; // int i = 0;
while(StringUtils.isNotBlank(this.getCellValue(i,xssfRow))) { // while(StringUtils.isNotBlank(this.getCellValue(i,xssfRow))) {
Map<String,Object> excelHead = new HashMap<>(); // Map<String,Object> excelHead = new HashMap<>();
excelHead.put("name", this.getCellValue(i,xssfRow)); // excelHead.put("name", this.getCellValue(i,xssfRow));
excelHead.put("index", i); // excelHead.put("index", i);
cellDetailList.add(excelHead); // cellDetailList.add(excelHead);
cellList.add(this.getCellValue(i,xssfRow)); // cellList.add(this.getCellValue(i,xssfRow));
i++; // i++;
} // }
break; // break;
} // }
result.put("cellDetailList", cellDetailList); // result.put("cellDetailList", cellDetailList);
result.put("cellList", cellList); // result.put("cellList", cellList);
return result; // return result;
} // }
//
public String importIndicatorsData(IndicatorsDef indiDef,List<IndicatorsDim> dimList, // public String importIndicatorsData(IndicatorsDef indiDef,List<IndicatorsDim> dimList,
XSSFWorkbook xssfWorkbook)throws Exception{ // XSSFWorkbook xssfWorkbook)throws Exception{
StringBuilder message = new StringBuilder(""); // StringBuilder message = new StringBuilder("");
List<DBObject> datas = new ArrayList<>(); // List<DBObject> datas = new ArrayList<>();
//excel读取 // //excel读取
int startDataRow = 1;//开始读excel数据的行号 // int startDataRow = 1;//开始读excel数据的行号
for(XSSFSheet excelSheet : xssfWorkbook) { // for(XSSFSheet excelSheet : xssfWorkbook) {
//抽取工作表内容 // //抽取工作表内容
for (int rowNum = startDataRow; rowNum <= excelSheet.getLastRowNum(); rowNum++) { // for (int rowNum = startDataRow; rowNum <= excelSheet.getLastRowNum(); rowNum++) {
/*创建DBObject对象,通过该对象来向集合中添加记录 */ // /*创建DBObject对象,通过该对象来向集合中添加记录 */
DBObject doc = new BasicDBObject(); // DBObject doc = new BasicDBObject();
doc.put("inId", indiDef.getId()); // doc.put("inId", indiDef.getId());
//
XSSFRow xssfRow = excelSheet.getRow(rowNum); // XSSFRow xssfRow = excelSheet.getRow(rowNum);
//
//获取值映射列index // //获取值映射列index
int indiValueMapping = indiDef.getValueMapping(); // int indiValueMapping = indiDef.getValueMapping();
String indiValue = getCellValue(indiValueMapping,xssfRow);//指标值 // String indiValue = getCellValue(indiValueMapping,xssfRow);//指标值
if(StringUtils.isBlank(indiValue)) { // if(StringUtils.isBlank(indiValue)) {
break; // break;
} // }
doc.put("value", indiValue); // doc.put("value", indiValue);
doc.put("status", "1");//未生效(待审批) // doc.put("status", "1");//未生效(待审批)
for(IndicatorsDim dim : dimList) { // for(IndicatorsDim dim : dimList) {
//获取映射名 // //获取映射名
String dimName = dim.getDimName(); // String dimName = dim.getDimName();
//获取映射index // //获取映射index
int indiDimMapping = dim.getDimMapping(); // int indiDimMapping = dim.getDimMapping();
String dimValue = getCellValue(indiDimMapping,xssfRow);//维度值 // String dimValue = getCellValue(indiDimMapping,xssfRow);//维度值
doc.put(dimName,dimValue); // doc.put(dimName,dimValue);
} // }
datas.add(doc); // datas.add(doc);
} // }
} // }
if(!datas.isEmpty()) { // if(!datas.isEmpty()) {
this.addIndicatorData(datas); // this.addIndicatorData(datas);
} // }
return message.toString(); // return message.toString();
} // }
//
// // //
//
private void addIndicatorData(List<DBObject> datas) throws Exception{ // private void addIndicatorData(List<DBObject> datas) throws Exception{
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
//
collection.insert(datas); // collection.insert(datas);
//
client.close(); // client.close();
} // }
//
//获取列值 // //获取列值
private String getCellValue(int cellIndex,XSSFRow xssfRow) { // private String getCellValue(int cellIndex,XSSFRow xssfRow) {
String cellValue = ""; // String cellValue = "";
try { // try {
//如果是字符串列 // //如果是字符串列
cellValue = xssfRow.getCell(cellIndex) == null ? // cellValue = xssfRow.getCell(cellIndex) == null ?
"" : xssfRow.getCell(cellIndex).getStringCellValue(); // "" : xssfRow.getCell(cellIndex).getStringCellValue();
} catch (Exception e) { // } catch (Exception e) {
try { // try {
if(HSSFDateUtil.isCellDateFormatted(xssfRow.getCell(cellIndex))) { // if(HSSFDateUtil.isCellDateFormatted(xssfRow.getCell(cellIndex))) {
//如果是日期 // //如果是日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cellValue = sdf.format(xssfRow.getCell(cellIndex).getDateCellValue());// 日期 // cellValue = sdf.format(xssfRow.getCell(cellIndex).getDateCellValue());// 日期
}else { // }else {
//如果是数据列 // //如果是数据列
DecimalFormat decimalFormat = new DecimalFormat("###################.###########"); // DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
cellValue = xssfRow.getCell(cellIndex) == null ? // cellValue = xssfRow.getCell(cellIndex) == null ?
"" : String.valueOf(decimalFormat.format(xssfRow.getCell(cellIndex).getNumericCellValue())); // "" : String.valueOf(decimalFormat.format(xssfRow.getCell(cellIndex).getNumericCellValue()));
} // }
} catch (Exception e2) { // } catch (Exception e2) {
try { // try {
cellValue = xssfRow.getCell(cellIndex) == null ? // cellValue = xssfRow.getCell(cellIndex) == null ?
"" : xssfRow.getCell(cellIndex).getCellFormula(); // "" : xssfRow.getCell(cellIndex).getCellFormula();
} catch (Exception e3) { // } catch (Exception e3) {
cellValue = xssfRow.getCell(cellIndex) == null ? // cellValue = xssfRow.getCell(cellIndex) == null ?
"" : String.valueOf(xssfRow.getCell(cellIndex).getBooleanCellValue()); // "" : String.valueOf(xssfRow.getCell(cellIndex).getBooleanCellValue());
} // }
} // }
} // }
return cellValue; // return cellValue;
} // }
} //}
package com.keymobile.indicators.service.indicators; //package com.keymobile.indicators.service.indicators;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Date; //import java.util.Date;
import java.util.HashMap; //import java.util.HashMap;
import java.util.Iterator; //import java.util.Iterator;
import java.util.List; //import java.util.List;
import java.util.Map; //import java.util.Map;
import java.util.Optional; //import java.util.Optional;
//
import org.apache.commons.lang.StringUtils; //import org.apache.commons.lang.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; //import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.bson.types.ObjectId; //import org.bson.types.ObjectId;
import org.slf4j.Logger; //import org.slf4j.Logger;
import org.slf4j.LoggerFactory; //import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import com.keymobile.indicators.conf.MongoDBConfig; //import com.keymobile.indicators.conf.MongoDBConfig;
import com.keymobile.indicators.model.indicators.DeriveIndicators; //import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.model.indicators.IndicatorsDef; //import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim; //import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository; //import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository; //import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository; //import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository;
import com.mongodb.BasicDBObject; //import com.mongodb.BasicDBObject;
import com.mongodb.DB; //import com.mongodb.DB;
import com.mongodb.DBCollection; //import com.mongodb.DBCollection;
import com.mongodb.DBCursor; //import com.mongodb.DBCursor;
import com.mongodb.DBObject; //import com.mongodb.DBObject;
import com.mongodb.MongoClient; //import com.mongodb.MongoClient;
//
@Service //@Service
public class IndicatorsService { //public class IndicatorsService {
//
private Logger logger = LoggerFactory.getLogger(IndicatorsService.class); // private Logger logger = LoggerFactory.getLogger(IndicatorsService.class);
//
@Value("${mongodb.database}") // @Value("${mongodb.database}")
private String database; // private String database;
//
@Autowired // @Autowired
private MongoDBConfig mongoDbConfig; // private MongoDBConfig mongoDbConfig;
@Autowired // @Autowired
private IndicatorsDefRepository indicatorsDefRepo; // private IndicatorsDefRepository indicatorsDefRepo;
@Autowired // @Autowired
private IndicatorsDimRepository indicatorsDimRepo; // private IndicatorsDimRepository indicatorsDimRepo;
@Autowired // @Autowired
private IndicatorsExcelService indiExcelService; // private IndicatorsExcelService indiExcelService;
@Autowired // @Autowired
private DeriveIndicatorsRepository derIndicatorsRepo; // private DeriveIndicatorsRepository derIndicatorsRepo;
//
//保存或者修改维度 // //保存或者修改维度
public String saveOrUpdateDim(String indiDefId,List<IndicatorsDim> indiDims, // public String saveOrUpdateDim(String indiDefId,List<IndicatorsDim> indiDims,
String operator, String isUpdate) throws Exception{ // String operator, String isUpdate) throws Exception{
Date time = new Date(); // Date time = new Date();
StringBuilder message = new StringBuilder(""); // StringBuilder message = new StringBuilder("");
//新增 // //新增
if("false".equals(isUpdate)) { // if("false".equals(isUpdate)) {
//保存指标维度 // //保存指标维度
for(int i=0;i<indiDims.size();i++) { // for(int i=0;i<indiDims.size();i++) {
indiDims.get(i).setCreateTime(time); // indiDims.get(i).setCreateTime(time);
indiDims.get(i).setCreator(operator); // indiDims.get(i).setCreator(operator);
indiDims.get(i).setUpdateTime(time); // indiDims.get(i).setUpdateTime(time);
indiDims.get(i).setUpdator(operator); // indiDims.get(i).setUpdator(operator);
indiDims.get(i).setDimName("dim"+i); // indiDims.get(i).setDimName("dim"+i);
indiDims.get(i).setSort(i); // indiDims.get(i).setSort(i);
indiDims.get(i).setIndiDefId(indiDefId); // indiDims.get(i).setIndiDefId(indiDefId);
} // }
if(!indiDims.isEmpty()) { // if(!indiDims.isEmpty()) {
indicatorsDimRepo.saveAll(indiDims); // indicatorsDimRepo.saveAll(indiDims);
} // }
}else { // }else {
//TODO:考虑维度被删除或者添加新的维度情况 // //TODO:考虑维度被删除或者添加新的维度情况
Iterator<IndicatorsDim> it=indiDims.iterator(); // Iterator<IndicatorsDim> it=indiDims.iterator();
while(it.hasNext()) { // while(it.hasNext()) {
IndicatorsDim updateDim = it.next(); // IndicatorsDim updateDim = it.next();
//如果是新增维度 // //如果是新增维度
if(StringUtils.isBlank(updateDim.getId())) { // if(StringUtils.isBlank(updateDim.getId())) {
//判断是否同名 // //判断是否同名
Optional<IndicatorsDim> hasSameDim = indicatorsDimRepo.findByIndiDefIdAndDimCnName( // Optional<IndicatorsDim> hasSameDim = indicatorsDimRepo.findByIndiDefIdAndDimCnName(
indiDefId, updateDim.getDimCnName()); // indiDefId, updateDim.getDimCnName());
if(hasSameDim.isPresent()) { // if(hasSameDim.isPresent()) {
message.append("该指标存在同名维度:"+updateDim.getDimCnName()); // message.append("该指标存在同名维度:"+updateDim.getDimCnName());
it.remove(); // it.remove();
continue; // continue;
} // }
//
//获取基础指标关联代的维度 // //获取基础指标关联代的维度
List<IndicatorsDim> dbIndiDims = indicatorsDimRepo.findByIndiDefId(indiDefId); // List<IndicatorsDim> dbIndiDims = indicatorsDimRepo.findByIndiDefId(indiDefId);
//
updateDim.setDimName("dim"+dbIndiDims.size()); // updateDim.setDimName("dim"+dbIndiDims.size());
updateDim.setSort(dbIndiDims.size()); // updateDim.setSort(dbIndiDims.size());
updateDim.setCreateTime(time); // updateDim.setCreateTime(time);
updateDim.setCreator(operator); // updateDim.setCreator(operator);
updateDim.setUpdateTime(time); // updateDim.setUpdateTime(time);
updateDim.setUpdator(operator); // updateDim.setUpdator(operator);
}else { // }else {
Optional<IndicatorsDim> dbIndiDim = indicatorsDimRepo.findById(updateDim.getId()); // Optional<IndicatorsDim> dbIndiDim = indicatorsDimRepo.findById(updateDim.getId());
if(!dbIndiDim.isPresent()) { // if(!dbIndiDim.isPresent()) {
logger.info("not exist the dimension where id:"+updateDim.getId()); // logger.info("not exist the dimension where id:"+updateDim.getId());
message.append("不存在id:"+updateDim.getId()+" 的维度;"); // message.append("不存在id:"+updateDim.getId()+" 的维度;");
it.remove(); // it.remove();
}else { // }else {
updateDim.setUpdateTime(time); // updateDim.setUpdateTime(time);
updateDim.setUpdator(operator); // updateDim.setUpdator(operator);
if(dbIndiDim.get().getDimMapping()!=-1) { // if(dbIndiDim.get().getDimMapping()!=-1) {
updateDim.setDimMapping(dbIndiDim.get().getDimMapping()); // updateDim.setDimMapping(dbIndiDim.get().getDimMapping());
} // }
} // }
} // }
updateDim.setIndiDefId(indiDefId); // updateDim.setIndiDefId(indiDefId);
} // }
if(!indiDims.isEmpty()) { // if(!indiDims.isEmpty()) {
indicatorsDimRepo.saveAll(indiDims); // indicatorsDimRepo.saveAll(indiDims);
} // }
} // }
return message.toString(); // return message.toString();
} // }
//
//判断原生指标能否被修改 // //判断原生指标能否被修改
public boolean canBeUpdate(String indiDefId) throws Exception{ // public boolean canBeUpdate(String indiDefId) throws Exception{
boolean canUpdate = true; // boolean canUpdate = true;
//
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
//
DBObject query = new BasicDBObject(); // DBObject query = new BasicDBObject();
query.put("inId", indiDefId); // query.put("inId", indiDefId);
try (DBCursor cursor = collection.find(query)) { // try (DBCursor cursor = collection.find(query)) {
while (cursor.hasNext()) { // while (cursor.hasNext()) {
canUpdate = false; // canUpdate = false;
break; // break;
} // }
} // }
client.close(); // client.close();
return canUpdate; // return canUpdate;
} // }
//
//保存或者修改指标定义 // //保存或者修改指标定义
public String saveOrUpdateIndiDef(IndicatorsDef indiDef,String operator)throws Exception{ // public String saveOrUpdateIndiDef(IndicatorsDef indiDef,String operator)throws Exception{
Date time = new Date(); // Date time = new Date();
//新增 // //新增
if(StringUtils.isBlank(indiDef.getId())) { // if(StringUtils.isBlank(indiDef.getId())) {
//保存指标定义 // //保存指标定义
indiDef.setCreateTime(time); // indiDef.setCreateTime(time);
indiDef.setCreator(operator); // indiDef.setCreator(operator);
indiDef.setUpdateTime(time); // indiDef.setUpdateTime(time);
indiDef.setUpdator(operator); // indiDef.setUpdator(operator);
indiDef.setStatus("0"); // indiDef.setStatus("0");
indiDef = indicatorsDefRepo.save(indiDef); // indiDef = indicatorsDefRepo.save(indiDef);
}else { // }else {
//暂时不修改指标和维度的映射 // //暂时不修改指标和维度的映射
indiDef.setUpdateTime(time); // indiDef.setUpdateTime(time);
indiDef.setUpdator(operator); // indiDef.setUpdator(operator);
//根据指标定义id获取指标定义详情 // //根据指标定义id获取指标定义详情
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDef.getId()); // Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDef.getId());
if(dbIndiDef.isPresent()) { // if(dbIndiDef.isPresent()) {
if(dbIndiDef.get().getValueMapping()!=-1) { // if(dbIndiDef.get().getValueMapping()!=-1) {
indiDef.setValueMapping(dbIndiDef.get().getValueMapping()); // indiDef.setValueMapping(dbIndiDef.get().getValueMapping());
} // }
indiDef = indicatorsDefRepo.save(indiDef); // indiDef = indicatorsDefRepo.save(indiDef);
}else { // }else {
return "not exist the indicators where id:"+indiDef.getId(); // return "not exist the indicators where id:"+indiDef.getId();
} // }
} // }
return indiDef.getId(); // return indiDef.getId();
} // }
//
//删除指标 // //删除指标
public String delete(String indicatorsId)throws Exception { // public String delete(String indicatorsId)throws Exception {
//判断原生指标是否关联了衍生指标 // //判断原生指标是否关联了衍生指标
List<DeriveIndicators> deriveIndiList = derIndicatorsRepo.findByIndiDefIdsLike(indicatorsId); // List<DeriveIndicators> deriveIndiList = derIndicatorsRepo.findByIndiDefIdsLike(indicatorsId);
if(!deriveIndiList.isEmpty()) { // if(!deriveIndiList.isEmpty()) {
return "该指标已经关联衍生指标,无法删除"; // return "该指标已经关联衍生指标,无法删除";
} // }
//删除指标定义 // //删除指标定义
indicatorsDefRepo.deleteById(indicatorsId); // indicatorsDefRepo.deleteById(indicatorsId);
//删除维度 // //删除维度
indicatorsDimRepo.deleteByIndiDefId(indicatorsId); // indicatorsDimRepo.deleteByIndiDefId(indicatorsId);
//
//删除对应的指标数据 // //删除对应的指标数据
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
//
DBObject removeCon = new BasicDBObject(); // DBObject removeCon = new BasicDBObject();
removeCon.put("inId", indicatorsId); // removeCon.put("inId", indicatorsId);
//
collection.remove(removeCon); // collection.remove(removeCon);
//
return "删除成功"; // return "删除成功";
} // }
//
//获取指标列表 // //获取指标列表
public List<IndicatorsDef> getIndicatorsDefList(String keyword)throws Exception{ // public List<IndicatorsDef> getIndicatorsDefList(String keyword)throws Exception{
if(StringUtils.isBlank(keyword)){ // if(StringUtils.isBlank(keyword)){
return indicatorsDefRepo.findByStatus("0"); // return indicatorsDefRepo.findByStatus("0");
}else { // }else {
return indicatorsDefRepo.findByIndiNameLikeOrIndiCnNameLikeAndStatus(keyword, keyword,"0"); // return indicatorsDefRepo.findByIndiNameLikeOrIndiCnNameLikeAndStatus(keyword, keyword,"0");
} // }
} // }
//
//获取指标详情 // //获取指标详情
public Map<String,Object> getIndicatorsDefDetail(String indiDefId)throws Exception{ // public Map<String,Object> getIndicatorsDefDetail(String indiDefId)throws Exception{
Map<String,Object> result = new HashMap<>(); // Map<String,Object> result = new HashMap<>();
result.put("def", ""); // result.put("def", "");
result.put("dimList", new ArrayList<>()); // result.put("dimList", new ArrayList<>());
//根据指标定义id获取指标定义详情 // //根据指标定义id获取指标定义详情
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId); // Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId);
if(dbIndiDef.isPresent()) { // if(dbIndiDef.isPresent()) {
result.put("def", dbIndiDef.get()); // result.put("def", dbIndiDef.get());
//根据定义id获取维度 // //根据定义id获取维度
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId); // List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
if(!dimList.isEmpty()) { // if(!dimList.isEmpty()) {
result.put("dimList",dimList); // result.put("dimList",dimList);
} // }
return result; // return result;
} // }
logger.info("not exist indicatorsDef where id:"+indiDefId); // logger.info("not exist indicatorsDef where id:"+indiDefId);
return null; // return null;
} // }
//
//根据上传excel获取表头数据 // //根据上传excel获取表头数据
@SuppressWarnings("unchecked") // @SuppressWarnings("unchecked")
public List<Map<String,Object>> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{ // public List<Map<String,Object>> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{
return (List<Map<String,Object>>)indiExcelService.getUploadExcelHead(xssfWorkbook).get("cellDetailList"); // return (List<Map<String,Object>>)indiExcelService.getUploadExcelHead(xssfWorkbook).get("cellDetailList");
} // }
//
//根据上传的excel文件和指标id判断该指标是否对应这个上传文件 // //根据上传的excel文件和指标id判断该指标是否对应这个上传文件
@SuppressWarnings("unchecked") // @SuppressWarnings("unchecked")
public String isCorrespondence(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception { // public String isCorrespondence(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception {
StringBuilder message = new StringBuilder(); // StringBuilder message = new StringBuilder();
//
//获取excel表头list // //获取excel表头list
List<String> excelHead = (List<String>)indiExcelService.getUploadExcelHead(xssfWorkbook) // List<String> excelHead = (List<String>)indiExcelService.getUploadExcelHead(xssfWorkbook)
.get("cellList"); // .get("cellList");
//
//查询指标对应的值映射名 // //查询指标对应的值映射名
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId); // Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId);
if(dbIndiDef.isPresent()) { // if(dbIndiDef.isPresent()) {
String valueNameMapping = dbIndiDef.get().getValueMappingName(); // String valueNameMapping = dbIndiDef.get().getValueMappingName();
if(StringUtils.isBlank(valueNameMapping)) { // if(StringUtils.isBlank(valueNameMapping)) {
message.append("指标:"+dbIndiDef.get().getIndiName()+" 没有配置值映射;"); // message.append("指标:"+dbIndiDef.get().getIndiName()+" 没有配置值映射;");
}else { // }else {
if(!excelHead.contains(valueNameMapping)) { // if(!excelHead.contains(valueNameMapping)) {
message.append("上传文件指标值映射名称:"+valueNameMapping+" 在excel不存在;"); // message.append("上传文件指标值映射名称:"+valueNameMapping+" 在excel不存在;");
} // }
} // }
//根据指标定义id获取指标维度 // //根据指标定义id获取指标维度
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId); // List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
for(IndicatorsDim dim : dimList) { // for(IndicatorsDim dim : dimList) {
if(StringUtils.isBlank(dim.getDimMappingName())) { // if(StringUtils.isBlank(dim.getDimMappingName())) {
message.append("指标:"+dbIndiDef.get().getIndiName()+" 的维度:"+ // message.append("指标:"+dbIndiDef.get().getIndiName()+" 的维度:"+
dim.getDimCnName()+" 没有配置维度映射;"); // dim.getDimCnName()+" 没有配置维度映射;");
}else { // }else {
if(!excelHead.contains(dim.getDimMappingName())) { // if(!excelHead.contains(dim.getDimMappingName())) {
message.append("上传文件指标维度映射名称:"+dim.getDimMappingName()+" 在excel不存在;"); // message.append("上传文件指标维度映射名称:"+dim.getDimMappingName()+" 在excel不存在;");
} // }
} // }
} // }
}else { // }else {
message.append("不存在id:"+indiDefId+" 的指标定义;"); // message.append("不存在id:"+indiDefId+" 的指标定义;");
} // }
if(StringUtils.isBlank(message.toString())) { // if(StringUtils.isBlank(message.toString())) {
message.append("true"); // message.append("true");
} // }
return message.toString(); // return message.toString();
} // }
//
//导入指标值 // //导入指标值
public String importIndicatorsData(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception { // public String importIndicatorsData(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception {
//判断上传文件和指标映射字段是否符合 // //判断上传文件和指标映射字段是否符合
String message = this.isCorrespondence(indiDefId, xssfWorkbook); // String message = this.isCorrespondence(indiDefId, xssfWorkbook);
if("true".equals(message)) { // if("true".equals(message)) {
Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(indiDefId); // Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(indiDefId);
if(indiDef.isPresent()) { // if(indiDef.isPresent()) {
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId); // List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
return indiExcelService.importIndicatorsData(indiDef.get(), dimList, xssfWorkbook); // return indiExcelService.importIndicatorsData(indiDef.get(), dimList, xssfWorkbook);
} // }
} // }
return message; // return message;
} // }
//
//根据指标定义id和维度值查询指标值 // //根据指标定义id和维度值查询指标值
public Map<String,Object> queryIndicatorsValue(String indiDefId, // public Map<String,Object> queryIndicatorsValue(String indiDefId,
Map<String,Object> dimValue, boolean isDimCnName)throws Exception { // Map<String,Object> dimValue, boolean isDimCnName)throws Exception {
Map<String,Object> result = new HashMap<>(); // Map<String,Object> result = new HashMap<>();
List<DBObject> resultList = new ArrayList<>(); // List<DBObject> resultList = new ArrayList<>();
result.put("count", 0); // result.put("count", 0);
result.put("resultList", resultList); // result.put("resultList", resultList);
//
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
//
DBObject query = new BasicDBObject(); // DBObject query = new BasicDBObject();
query.put("inId", indiDefId); // query.put("inId", indiDefId);
//query.put("status", "0");//有效值 // //query.put("status", "0");//有效值
for(Map.Entry<String, Object> entry : dimValue.entrySet()) { // for(Map.Entry<String, Object> entry : dimValue.entrySet()) {
//如果map中是key是中文名 // //如果map中是key是中文名
if(isDimCnName) { // if(isDimCnName) {
Optional<IndicatorsDim> dimOp = indicatorsDimRepo // Optional<IndicatorsDim> dimOp = indicatorsDimRepo
.findByIndiDefIdAndDimMappingName(indiDefId, entry.getKey()); // .findByIndiDefIdAndDimMappingName(indiDefId, entry.getKey());
query.put(dimOp.get().getDimName(),entry.getValue()); // query.put(dimOp.get().getDimName(),entry.getValue());
}else { // }else {
query.put(entry.getKey(),entry.getValue()); // query.put(entry.getKey(),entry.getValue());
} // }
} // }
//
int valueCount = 0; // int valueCount = 0;
try (DBCursor cursor = collection.find(query)) { // try (DBCursor cursor = collection.find(query)) {
while (cursor.hasNext()) { // while (cursor.hasNext()) {
DBObject dbo = cursor.next(); // DBObject dbo = cursor.next();
resultList.add(dbo); // resultList.add(dbo);
valueCount += Integer.parseInt(dbo.get("value").toString()); // valueCount += Integer.parseInt(dbo.get("value").toString());
} // }
} // }
client.close(); // client.close();
result.put("count", valueCount); // result.put("count", valueCount);
result.put("resultList", resultList); // result.put("resultList", resultList);
return result; // return result;
} // }
//
//审批指标值 // //审批指标值
public void applyIndicatorsValue(List<String> indiValueId) throws Exception{ // public void applyIndicatorsValue(List<String> indiValueId) throws Exception{
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
//
DBObject query = new BasicDBObject(); // DBObject query = new BasicDBObject();
for(String id : indiValueId) { // for(String id : indiValueId) {
query.put("_id", new ObjectId(id)); // query.put("_id", new ObjectId(id));
DBObject queryResult = collection.findOne(query); // DBObject queryResult = collection.findOne(query);
//
queryResult.put("status", "0"); // queryResult.put("status", "0");
collection.findAndModify(query, queryResult); // collection.findAndModify(query, queryResult);
} // }
client.close(); // client.close();
} // }
//
//获取未审批的指标值 // //获取未审批的指标值
@SuppressWarnings("unchecked") // @SuppressWarnings("unchecked")
public Map<String,Object> getUnApplyIndiValueList() throws Exception{ // public Map<String,Object> getUnApplyIndiValueList() throws Exception{
Map<String,Object> result = new HashMap<>(); // Map<String,Object> result = new HashMap<>();
MongoClient client = mongoDbConfig.mongoClient(); // MongoClient client = mongoDbConfig.mongoClient();
//
List<Map<String,Object>> resultList = new ArrayList<>(); // List<Map<String,Object>> resultList = new ArrayList<>();
result.put("total", 0); // result.put("total", 0);
result.put("resultList", resultList); // result.put("resultList", resultList);
//
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */ // /* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database); // DB dataBase = client.getDB(database);
//
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */ // /* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data"); // DBCollection collection = dataBase.getCollection("indi_data");
DBObject query = new BasicDBObject(); // DBObject query = new BasicDBObject();
query.put("status", "1"); // query.put("status", "1");
List<String> distinctIndiDefIds = collection.distinct("inId",query); // List<String> distinctIndiDefIds = collection.distinct("inId",query);
for(String indiDefId : distinctIndiDefIds) { // for(String indiDefId : distinctIndiDefIds) {
Map<String,Object> unApplyIndiValueMap = new HashMap<>(); // Map<String,Object> unApplyIndiValueMap = new HashMap<>();
//根据原始指标id获取原始指标详细信息 // //根据原始指标id获取原始指标详细信息
Map<String,Object> indiDefDetail = this.getIndicatorsDefDetail(indiDefId); // Map<String,Object> indiDefDetail = this.getIndicatorsDefDetail(indiDefId);
List<DBObject> unApplyValueList = new ArrayList<>(); // List<DBObject> unApplyValueList = new ArrayList<>();
//
DBObject unApplyQuery = new BasicDBObject(); // DBObject unApplyQuery = new BasicDBObject();
unApplyQuery.put("status", "1"); // unApplyQuery.put("status", "1");
unApplyQuery.put("inId", indiDefId); // unApplyQuery.put("inId", indiDefId);
try (DBCursor cursor = collection.find(unApplyQuery)) { // try (DBCursor cursor = collection.find(unApplyQuery)) {
while (cursor.hasNext()) { // while (cursor.hasNext()) {
DBObject dbo = cursor.next(); // DBObject dbo = cursor.next();
ObjectId _id = (ObjectId) dbo.get("_id"); // ObjectId _id = (ObjectId) dbo.get("_id");
dbo.put("_id", _id.toHexString()); // dbo.put("_id", _id.toHexString());
unApplyValueList.add(dbo); // unApplyValueList.add(dbo);
} // }
} // }
unApplyIndiValueMap.put("indiDef",indiDefDetail); // unApplyIndiValueMap.put("indiDef",indiDefDetail);
unApplyIndiValueMap.put("unApplyList",unApplyValueList); // unApplyIndiValueMap.put("unApplyList",unApplyValueList);
resultList.add(unApplyIndiValueMap); // resultList.add(unApplyIndiValueMap);
} // }
client.close(); // client.close();
result.put("total", resultList.size()); // result.put("total", resultList.size());
result.put("resultList", resultList); // result.put("resultList", resultList);
return result; // return result;
} // }
} //}
mongodb:
uri: 139.198.127.54:9017
database: dev0
username: root
password: dataPlatform
maxConnectionIdleTime: 600000
spring: spring:
application: application:
name: indicators name: indicators
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment