Commit d2289ae1 by zhangkb

Merge branch 'hy-tobacco' of ssh://132.232.112.242:7022/zhangkb/indicators into hy-tobacco

parents 2948b419 fa85cf8c
......@@ -24,6 +24,9 @@ import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -48,7 +51,7 @@ public class DataEnterCtrl {
@Autowired
private SystemAuthService systemAuthService;
@ApiOperation("获取需要在线填报的数据项")
@ApiOperation("获取需要在线填报的数据项(填报任务点击)")
@GetMapping("findToEdit")
public List<TaskIndValue> findToEdit(@RequestParam("taskId") String taskId) {
List<TaskIndValue> list = new ArrayList<>();
......@@ -92,6 +95,23 @@ public class DataEnterCtrl {
return list;
}
@ApiOperation("获取已填报的数据项(审核清单点任务)")
@GetMapping("findEnterValues")
public Page<TaskIndValue> findEnterValues(@ApiParam("任务ID")@RequestParam("taskId") String taskId,
@ApiParam(value = "页码,从1开始", defaultValue = "1")@RequestParam("pageNo") int pageNo,
@ApiParam(value = "每页条数", defaultValue = "10")@RequestParam("pageSize") int pageSize,
@ApiParam(value = "是否包含需要计算的数据项(审核中、填报中的时候不要传true)", defaultValue = "false")@RequestParam("includeFormula") boolean includeFormula
) {
List<TaskIndValue> list = new ArrayList<>();
long total = taskService.findCountByTaskId(taskId, includeFormula);
PageRequest request = PageRequest.of(pageNo - 1, pageSize);
if (total > 0) {
list = taskService.findByPageAndTaskId(taskId, request.getOffset(), pageSize, includeFormula);
}
Page<TaskIndValue> pageResult = new PageImpl<>(list, request, total);
return pageResult;
}
/**
* 生成填写对象
* @param task
......
......@@ -24,6 +24,24 @@ public interface TaskIndValueMapper extends BaseMapper<TaskIndValue> {
List<TaskIndValue> getByTaskId(String taskId);
/**
* 根据任务id翻页查找任务的填报值
* @param taskId
* @param start
* @param pageSize
* @param includeFormula 是否包含公式计算的数据项
* @return
*/
List<TaskIndValue> findByPageAndTaskId(@Param("taskId") String taskId, @Param("start") long start,
@Param("pageSize") int pageSize, @Param("includeFormula") boolean includeFormula);
/**
*根据任务id任务的填报值总数
* @param taskId
* @param includeFormula 是否包含公式计算的数据项
* @return
*/
long findCountByTaskId(@Param("taskId") String taskId, @Param("includeFormula") boolean includeFormula);
/**
* 任务id删除已填报的数据项值
* @param taskId
*/
......
......@@ -11,7 +11,12 @@ import tk.mybatis.mapper.common.BaseMapper;
@Mapper
public interface IndicatorsDataMapper extends BaseMapper<IndicatorsData>{
public List<IndicatorsData> getDataByDimension(Map<String,Object> param);
public List<IndicatorsData> getIndDataByParam(Map<String,Object> param);
void batchCreateIndData(List<IndicatorsData> datas);
}
......@@ -3,6 +3,7 @@ package com.keymobile.indicators.service.dataenter;
import com.keymobile.indicators.model.entity.dataenter.*;
import com.keymobile.indicators.result.Result;
import io.swagger.annotations.ApiParam;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -110,6 +111,26 @@ public interface TaskService {
List<TaskIndValue> findDefaultValues(String valueTime, List<String> indIds);
/**
* 根据任务id翻页查找任务的填报值
* @param taskId
* @param start
* @param pageSize
* @param includeFormula 是否包含公式计算的数据项
* @return
*/
List<TaskIndValue> findByPageAndTaskId(@Param("taskId") String taskId, @Param("start") long start,
@Param("pageSize") int pageSize, @Param("includeFormula") boolean includeFormula);
/**
*根据任务id任务的填报值总数
* @param taskId
* @param includeFormula 是否包含公式计算的数据项
* @return
*/
long findCountByTaskId(@Param("taskId") String taskId, @Param("includeFormula") boolean includeFormula);
/**
* 分发任务
* @param param
* @param userId
......
......@@ -10,12 +10,14 @@ import com.keymobile.indicators.model.entity.ConfigInfo;
import com.keymobile.indicators.model.entity.RoleRefUserModel;
import com.keymobile.indicators.model.entity.dataenter.*;
import com.keymobile.indicators.model.entity.indicators.BaseIndDef;
import com.keymobile.indicators.model.entity.indicators.IndicatorsData;
import com.keymobile.indicators.model.mapper.indicators.*;
import com.keymobile.indicators.result.Result;
import com.keymobile.indicators.service.ConfigInfoService;
import com.keymobile.indicators.service.SystemAuthService;
import com.keymobile.indicators.service.dataenter.TaskRuleService;
import com.keymobile.indicators.service.dataenter.TaskService;
import com.keymobile.indicators.service.hytobacco.BaseIndDataService;
import com.keymobile.indicators.service.hytobacco.IndicatorsRelService;
import com.keymobile.indicators.utils.DateUtils;
import com.keymobile.indicators.utils.IdWorker;
......@@ -68,6 +70,9 @@ public class TaskServiceImpl implements TaskService {
@Autowired
private TaskRuleObjMapper taskRuleObjMapper;
@Autowired
private BaseIndDataService baseIndDataService;
@Override
@Transactional(rollbackFor = Exception.class)
public Task createTask(Task task) {
......@@ -184,6 +189,16 @@ public class TaskServiceImpl implements TaskService {
}
@Override
public List<TaskIndValue> findByPageAndTaskId(String taskId, long start, int pageSize, boolean includeFormula) {
return taskIndValueMapper.findByPageAndTaskId(taskId, start, pageSize, includeFormula);
}
@Override
public long findCountByTaskId(String taskId, boolean includeFormula) {
return taskIndValueMapper.findCountByTaskId(taskId, includeFormula);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void assignTask(TaskAssginParam param, String userId) {
Task parentTask = getById(param.getTaskId(), true, false);
......@@ -282,6 +297,7 @@ public class TaskServiceImpl implements TaskService {
auditRecord.setTaskId(taskId);
auditRecord.setId(IdWorker.getStrId());
auditRecord.setPTaskId(task.getPId());
auditRecord.setState(Constants.DATA_STATE_A);
auditRecord.setCreator(userId);
auditRecord.setUpdater(userId);
auditRecord.setUpdateTime(now);
......@@ -315,8 +331,9 @@ public class TaskServiceImpl implements TaskService {
if (auditResult.isResult()) {
status = Constants.APPLY_STATE_PASSED;
recordType = "审批通过";
List<IndicatorsData> datas = createCountIndValues(task);
this.baseIndDataService.batchInsertData(datas);
taskIndValueMapper.updateTaskValueToPass(task.getId());
createCountIndValues(task);
}
task.setStatus(status);
taskMapper.updateByPrimaryKey(task);
......@@ -339,19 +356,34 @@ public class TaskServiceImpl implements TaskService {
* 通过填报值计算出包含公式的数据项值
* @param task
*/
private void createCountIndValues(Task task) {
private List<IndicatorsData> createCountIndValues(Task task) {
List<TaskIndicator> inds = taskIndicatorMapper.getByTaskId(task.getId());
List<TaskIndValue> values = taskIndValueMapper.getByTaskId(task.getId());
String valueTime = task.getValueTime().replaceAll("-", "");
Integer vt = Integer.parseInt(valueTime);
List<IndicatorsData> datas = new ArrayList<>();
for (TaskIndValue value : values) {
IndicatorsData data = new IndicatorsData();
data.setBatchNo(task.getId());
data.setDataType("double");
data.setDim2(vt);
data.setDim1(value.getObjId());
data.setIndId(value.getIndId());
data.setIndDesc(value.getIndName());
data.setType("1");
data.setUnit(value.getIndUnit());
data.setDim1Desc(value.getObjName());
datas.add(data);
}
TaskRuleGroupObj groupObj = taskRuleObjMapper.getById(task.getGroupId());
List<TaskIndicator> needSumInds = new ArrayList<>();
for (TaskIndicator taskIndicator : inds) {
if (StringUtils.isNotBlank(taskIndicator.getIndFormula())) {
needSumInds.add(taskIndicator);
}
}
if (needSumInds.isEmpty()) {
return;
}
if (!needSumInds.isEmpty()) {
if (groupObj != null && StringUtils.isNotBlank(groupObj.getDetail())) {
List<String> ids = Arrays.asList(StringUtils.split(groupObj.getDetail(), Constants.SEP_COMMA));
List<AuthModel> models = new ArrayList<>();
......@@ -383,17 +415,31 @@ public class TaskServiceImpl implements TaskService {
value.setValueTime(task.getValueTime());
value.setIndUnit(indicator.getIndUnit());
value.setObjId(model.getId());
value.setState(Constants.DATA_STATE_A);
value.setObjName(model.getName());
value.setObjType(groupObj.getObjType());
value.setTaskId(task.getId());
newValues.add(value);
IndicatorsData data = new IndicatorsData();
data.setBatchNo(task.getId());
data.setDataType("double");
data.setDim2(vt);
data.setDim1(value.getObjId());
data.setDim1Desc(value.getObjName());
data.setIndId(value.getIndId());
data.setIndDesc(value.getIndName());
data.setType("1");
data.setUnit(value.getIndUnit());
datas.add(data);
}
}
taskIndValueMapper.batchInsert(values);
taskIndValueMapper.batchInsert(newValues);
} else {
LogManager.logError(Constants.LOG_CONTEXT_API, "上报数据出错,任务单位不存在或者内容为空" + task.getGroupId());
}
}
return datas;
}
@Override
......
......@@ -5,17 +5,19 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.keymobile.indicators.model.entity.indicators.IndicatorsData;
import com.keymobile.indicators.model.mapper.indmapper.IndicatorsDataMapper;
@Service
@Slf4j
public class BaseIndDataService {
private Logger logger = LoggerFactory.getLogger(BaseIndDataService.class);
@Autowired
private IndicatorsDataMapper indicatorsDataMapper;
......@@ -34,4 +36,17 @@ public class BaseIndDataService {
}
return result;
}
/**
* 一步批量插入数据
* @param datas
*/
@Async
public void batchInsertData(List<IndicatorsData> datas) {
log.info("开始批量插入指标值数据项");
long time = System.currentTimeMillis();
indicatorsDataMapper.batchCreateIndData(datas);
time = (System.currentTimeMillis() - time)/1000;
log.info("结束批量插入指标值数据项, 共耗费时间:{}秒", time);
}
}
......@@ -21,4 +21,16 @@
#{obj}
</foreach>
</select>
<insert id="batchCreateIndData" parameterType="list">
insert into indi_data_def(
ind_id, ind_desc, type, batch_no, data_type, unit, dim1, dim2, value, dim1_desc)
values
<foreach collection="datas" item="val" separator=",">
(
#{#{val.indId}, #{val.indDesc}, #{val.type}, #{val.batchNo}, #{val.dataType},#{val.unit},
#{val.dim1},#{val.dim2},#{val.value},#{val.dim1Desc}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -19,7 +19,26 @@
<select id="getByTaskId" parameterType="java.lang.String" resultType="com.keymobile.indicators.model.entity.dataenter.TaskIndValue" >
select *
from data_enter_task_ind_val
where task_id = #{taskId}
where task_id = #{taskId} and state = 1
order by ind_id asc
</select>
<select id="findByPageAndTaskId" resultType="com.keymobile.indicators.model.entity.dataenter.TaskIndValue" >
select val.*
from data_enter_task_ind_val val left join data_enter_task_ind ind on
val.ind_id = ind.ind_id and val.task_id = ind.task_id and val.state = 1 and ind.state = 1
where val.task_id = #{taskId}
<if test="!includeFormula">
and (ind.ind_formula is null or ind.ind_formula = '')
</if>
order by val.ind_id asc
limit #{start}, #{pageSize}
</select>
<select id="findCountByTaskId" resultType="long" >
select count(id)
from data_enter_task_ind_val
where task_id = #{taskId} and state = 1
</select>
......@@ -45,6 +64,7 @@
<if test="indSource != null">
and ind_source = #{indSource}
</if>
order by ind_id asc
</select>
<select id="findDefaultValues" parameterType="object" resultType="com.keymobile.indicators.model.entity.dataenter.TaskIndValue" >
......
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