Commit 5fe80db4 by Suvalue

汇总数据查询接口

parent 77bf4eb9
...@@ -23,4 +23,9 @@ public interface SerProjValueMapper { ...@@ -23,4 +23,9 @@ public interface SerProjValueMapper {
@Param("exponentId") Integer exponentId, @Param("exponentId") Integer exponentId,
@Param("dept") String dept,@Param("date") Integer date, @Param("dept") String dept,@Param("date") Integer date,
@Param("budgetType") Integer budgetType); @Param("budgetType") Integer budgetType);
int deleteByDeptWithDate(@Param("dept") String dept,@Param("date") BigDecimal date,
@Param("projType") Integer projType);
void updateValue(@Param("date") BigDecimal date);
} }
\ No newline at end of file
...@@ -8,6 +8,10 @@ import java.math.BigDecimal; ...@@ -8,6 +8,10 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
public class AddBudgetValue { public class AddBudgetValue {
@ApiModelProperty(value = "类型")
@NotNull(message = "类型不能为空")
private Integer projType;
@ApiModelProperty(value = "时间") @ApiModelProperty(value = "时间")
@NotNull(message = "时间不能为空") @NotNull(message = "时间不能为空")
private BigDecimal date; private BigDecimal date;
...@@ -20,6 +24,15 @@ public class AddBudgetValue { ...@@ -20,6 +24,15 @@ public class AddBudgetValue {
@NotNull(message = "数值不能为空") @NotNull(message = "数值不能为空")
private List<BudgetValue> budgetValues; private List<BudgetValue> budgetValues;
public Integer getProjType() {
return projType;
}
public void setProjType(Integer projType) {
this.projType = projType;
}
public BigDecimal getDate() { public BigDecimal getDate() {
return date; return date;
} }
......
...@@ -12,6 +12,7 @@ import com.bsoft.api.model.SerPageBlockRs; ...@@ -12,6 +12,7 @@ import com.bsoft.api.model.SerPageBlockRs;
import com.bsoft.api.model.respmodel.BlockValue; import com.bsoft.api.model.respmodel.BlockValue;
import com.bsoft.api.service.AsynBlockValuesService; import com.bsoft.api.service.AsynBlockValuesService;
import com.bsoft.api.service.BlockValuesService; import com.bsoft.api.service.BlockValuesService;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.binding.MapperMethod; import org.apache.ibatis.binding.MapperMethod;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
...@@ -36,7 +37,7 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -36,7 +37,7 @@ public class BlockValuesServiceImpl implements BlockValuesService {
@Override @Override
public List<BlockValue> getBlockValuesByPageCode(Integer pageCode, Integer disease, Integer doctor, Integer department, Integer time) throws InterruptedException { public List<BlockValue> getBlockValuesByPageCode(Integer pageCode,Integer disease,Integer doctor,Integer department,Integer time) throws InterruptedException {
/** /**
* 1.根据pageCode,disease,doctor,department,time查询所有对应的pageId * 1.根据pageCode,disease,doctor,department,time查询所有对应的pageId
* 查询要求为pageCode为当前pageCode,相同pageId的所有数据有且仅有DIM_ID为 * 查询要求为pageCode为当前pageCode,相同pageId的所有数据有且仅有DIM_ID为
...@@ -50,30 +51,30 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -50,30 +51,30 @@ public class BlockValuesServiceImpl implements BlockValuesService {
String inField = ""; String inField = "";
String whereClause = "where 1=1"; String whereClause = "where 1=1";
if(disease != null){ if(disease != null){
whereClause += String.format(" and disease='%s'", disease); whereClause += String.format(" and disease='%s'",disease);
inField += "'disease',"; inField += "'disease',";
count++; count++;
} }
if (doctor != null) { if(doctor != null){
whereClause += String.format(" and doctor='%s'", doctor); whereClause += String.format(" and doctor='%s'",doctor);
inField += "'doctor',"; inField += "'doctor',";
count++; count++;
} }
if (department != null) { if(department != null){
whereClause += String.format(" and department='%s'", department); whereClause += String.format(" and department='%s'",department);
inField += "'department',"; inField += "'department',";
count++; count++;
} }
if (time != null) { if(time != null){
whereClause += String.format(" and time='%s'", time); whereClause += String.format(" and time='%s'",time);
inField += "'time',"; inField += "'time',";
count++; count++;
} }
if(count > 0){ if(count > 0){
inField = inField.substring(0, inField.length()-1); inField = inField.substring(0,inField.length() - 1);
} }
List<SerPage> pageList = serPageMapper.selectByCodeAndDim(pageCode, inField, count); List<SerPage> pageList = serPageMapper.selectByCodeAndDim(pageCode,inField,count);
if(pageList.size() == 0){ if(pageList.size() == 0){
throw new DBConfigurationError("页面维度配置表错误,请联系管理员"); throw new DBConfigurationError("页面维度配置表错误,请联系管理员");
} }
...@@ -84,11 +85,11 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -84,11 +85,11 @@ public class BlockValuesServiceImpl implements BlockValuesService {
List<SerPageBlockRs> pageBlocklist = serPageBlockRsMapper.selectByPageId(page.getId()); List<SerPageBlockRs> pageBlocklist = serPageBlockRsMapper.selectByPageId(page.getId());
//循环获取数据 //循环获取数据
CountDownLatch latch = new CountDownLatch(pageBlocklist.size()); CountDownLatch latch = new CountDownLatch(pageBlocklist.size());
for (SerPageBlockRs data : pageBlocklist) { for(SerPageBlockRs data : pageBlocklist){
//获取表名 //获取表名
Long blockId = data.getBlockId(); Long blockId = data.getBlockId();
String tableName = "VAL_BLOCK_VALUES_" + blockId; String tableName = "VAL_BLOCK_VALUES_" + blockId;
asynBlockValuesServiceImpl.getBlockValues(list, blockId, tableName, whereClause, latch); asynBlockValuesServiceImpl.getBlockValues(list,blockId,tableName,whereClause,latch);
} }
latch.await(); latch.await();
...@@ -97,7 +98,7 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -97,7 +98,7 @@ public class BlockValuesServiceImpl implements BlockValuesService {
} }
@Override @Override
public List<BlockValue> getBlockValuesByPageCodeNew(Integer pageCode, Map<String, String> dim) throws InterruptedException { public List<BlockValue> getBlockValuesByPageCodeNew(Integer pageCode,Map<String,String> dim) throws InterruptedException {
/** /**
* 1.根据pageCode查询所有对应的pageId * 1.根据pageCode查询所有对应的pageId
* 查询要求为pageCode为当前pageCode,相同pageId的所有数据有且仅有DIM_ID为 * 查询要求为pageCode为当前pageCode,相同pageId的所有数据有且仅有DIM_ID为
...@@ -118,7 +119,13 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -118,7 +119,13 @@ public class BlockValuesServiceImpl implements BlockValuesService {
// inField = inField.substring(0, inField.length()-1); // inField = inField.substring(0, inField.length()-1);
// } // }
List<SerPage> pageList = serPageMapper.selectByCodeAndDimList(pageCode, inFields, inFields.size()); for(Iterator iterator = inFields.iterator();iterator.hasNext();){
Object obj = iterator.next();
Object value = dim.get(obj);
remove(value,iterator);
}
List<SerPage> pageList = serPageMapper.selectByCodeAndDimList(pageCode,inFields,inFields.size());
// List<SerPage> pageList = serPageMapper.selectByCodeAndDim(pageCode, inField, count); // List<SerPage> pageList = serPageMapper.selectByCodeAndDim(pageCode, inField, count);
if(pageList.size() == 0){ if(pageList.size() == 0){
throw new DBConfigurationError("页面维度配置表错误,请联系管理员"); throw new DBConfigurationError("页面维度配置表错误,请联系管理员");
...@@ -130,18 +137,18 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -130,18 +137,18 @@ public class BlockValuesServiceImpl implements BlockValuesService {
List<SerPageBlockRs> pageBlocklist = serPageBlockRsMapper.selectByPageId(page.getId()); List<SerPageBlockRs> pageBlocklist = serPageBlockRsMapper.selectByPageId(page.getId());
//循环获取数据 //循环获取数据
CountDownLatch latch = new CountDownLatch(pageBlocklist.size()); CountDownLatch latch = new CountDownLatch(pageBlocklist.size());
for (SerPageBlockRs data : pageBlocklist) { for(SerPageBlockRs data : pageBlocklist){
//获取表名 //获取表名
Long blockId = data.getBlockId(); Long blockId = data.getBlockId();
String tableName = "VAL_BLOCK_VALUES_" +pageCode+"_"+page.getId()+"_"+ blockId; String tableName = "VAL_BLOCK_VALUES_" + pageCode + "_" + page.getId() + "_" + blockId;
Map<String,String> map = new HashMap<String,String>(){ Map<String,String> map = new HashMap<String,String>() {
{ {
put("tableName",tableName); put("tableName",tableName);
put("whereSql", data.getWhereClause()); put("whereSql",data.getWhereClause());
putAll(dim); putAll(dim);
} }
}; };
asynBlockValuesServiceImpl.getBlockValuesNew(list, blockId,map, latch); asynBlockValuesServiceImpl.getBlockValuesNew(list,blockId,map,latch);
} }
latch.await(); latch.await();
...@@ -150,5 +157,37 @@ public class BlockValuesServiceImpl implements BlockValuesService { ...@@ -150,5 +157,37 @@ public class BlockValuesServiceImpl implements BlockValuesService {
} }
private static void remove(Object obj,Iterator iterator) {
if(obj instanceof String){
String str = (String)obj;
if(StringUtils.isBlank(str)){
iterator.remove();
}
}else if(obj instanceof Collection){
Collection col = (Collection)obj;
if(col == null || col.isEmpty()){
iterator.remove();
}
}else if(obj instanceof Map){
Map temp = (Map)obj;
if(temp == null || temp.isEmpty()){
iterator.remove();
}
}else if(obj instanceof Object[]){
Object[] array = (Object[])obj;
if(array == null || array.length <= 0){
iterator.remove();
}
}else{
if(obj == null){
iterator.remove();
}
}
}
} }
...@@ -69,6 +69,8 @@ public class SerProjValueServiceImpl implements SerProjValueService { ...@@ -69,6 +69,8 @@ public class SerProjValueServiceImpl implements SerProjValueService {
public boolean save(AddBudgetValue request) { public boolean save(AddBudgetValue request) {
int result = 0; int result = 0;
if(request != null && request.getBudgetValues() != null && request.getBudgetValues().size() > 0){ if(request != null && request.getBudgetValues() != null && request.getBudgetValues().size() > 0){
//先进行删除操作
result = serProjValueMapper.deleteByDeptWithDate(request.getDeptCode(),request.getDate(),request.getProjType());
SerProjValue info = null; SerProjValue info = null;
long version = System.currentTimeMillis(); long version = System.currentTimeMillis();
for(BudgetValue budgetValue : request.getBudgetValues()){ for(BudgetValue budgetValue : request.getBudgetValues()){
...@@ -78,8 +80,10 @@ public class SerProjValueServiceImpl implements SerProjValueService { ...@@ -78,8 +80,10 @@ public class SerProjValueServiceImpl implements SerProjValueService {
info.setCreateDate(new Date()); info.setCreateDate(new Date());
info.setState(BigDecimal.valueOf(StateType.ON.getValue())); info.setState(BigDecimal.valueOf(StateType.ON.getValue()));
info.setVersion(String.valueOf(version)); info.setVersion(String.valueOf(version));
result = serProjValueMapper.insert(info); serProjValueMapper.insert(info);
} }
//调用计算数值存储过程
serProjValueMapper.updateValue(request.getDate());
} }
return result > 0; return result > 0;
} }
......
...@@ -131,4 +131,18 @@ ...@@ -131,4 +131,18 @@
</if> </if>
ORDER BY p.SORT ORDER BY p.SORT
</select> </select>
<update id="deleteByDeptWithDate">
update SER_PROJ_VALUE v1 set v1.STATE = 0
where EXISTS(select v.ID from SER_PROJ_VALUE v
join SER_PROJ p on p.ID = v.PROJ_ID
where p.PROJ_TYPE = #{projType,jdbcType=DECIMAL}
and v."DATE" = #{date,jdbcType=DECIMAL}
and v.DEPT_CODE = #{dept,jdbcType=VARCHAR}
and v1.ID = v.ID)
</update>
<update id="updateValue" statementType="CALLABLE">
{call ESTIMATE_UPDATE_GZD_BL(
#{date,jdbcType=DECIMAL}
)}
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -42,8 +42,8 @@ ...@@ -42,8 +42,8 @@
<!-- 生成映射接口配置 --> <!-- 生成映射接口配置 -->
<javaClientGenerator targetPackage="com.bsoft.api.mapper" targetProject="src/main/java" type="XMLMAPPER"/> <javaClientGenerator targetPackage="com.bsoft.api.mapper" targetProject="src/main/java" type="XMLMAPPER"/>
<table tableName="SER_PAGE_VALUE_CONFIG"> <table tableName="SER_PROJ_VALUE_HISTORY">
<generatedKey column="id" sqlStatement="select SEQ_SER_PAGE_VALUE_CONFIG_ID.nextval from dual" identity="true"/> <generatedKey column="id" sqlStatement="select SEQ_SER_PROJ_VALUE_HISTORY_ID.nextval from dual" identity="true"/>
</table> </table>
</context> </context>
......
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