perf: scc流程分发性能
This commit is contained in:
+5
-1
@@ -1,7 +1,10 @@
|
||||
package com.jero.modules.activiti.process.standardComplianceCheck.mapper;
|
||||
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheckDetail;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Queue;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
@@ -11,6 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface ProcessStandardComplianceCheckDetailMapper extends BaseMapper<ProcessStandardComplianceCheckDetail> {
|
||||
|
||||
void batchInsert(@Param("queue") Queue<ProcessStandardComplianceCheckDetail> needAddDetailInfoQueue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+71
-14
@@ -15,14 +15,14 @@
|
||||
<result property="termNumber" column="term_number" jdbcType="VARCHAR"/>
|
||||
<result property="termContent" column="term_content" jdbcType="VARCHAR"/>
|
||||
<result property="model" column="model" jdbcType="VARCHAR"/>
|
||||
<result property="modelState" column="model_state" jdbcType="VARCHAR"/>
|
||||
<result property="modelStatus" column="model_status" jdbcType="VARCHAR"/>
|
||||
<result property="result" column="result" jdbcType="VARCHAR"/>
|
||||
<result property="description" column="description" jdbcType="VARCHAR"/>
|
||||
<result property="material" column="material" jdbcType="VARCHAR"/>
|
||||
<result property="valuationTime" column="valuation_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="correctionSolution" column="correction_solution" jdbcType="VARCHAR"/>
|
||||
<result property="unsatisfyRequire" column="unsatisfy_require" jdbcType="VARCHAR"/>
|
||||
<result property="correctionCycle" column="correction_cycle" jdbcType="VARCHAR"/>
|
||||
<result property="unsatisfiedRequire" column="unsatisfied_require" jdbcType="VARCHAR"/>
|
||||
<result property="correctionPeriod" column="correction_period" jdbcType="VARCHAR"/>
|
||||
<result property="correctionCost" column="correction_cost" jdbcType="VARCHAR"/>
|
||||
<result property="commonality" column="commonality" jdbcType="VARCHAR"/>
|
||||
<result property="commonalityCost" column="commonality_cost" jdbcType="VARCHAR"/>
|
||||
@@ -32,15 +32,72 @@
|
||||
<result property="designEngineer" column="design_engineer" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,create_by,create_time,
|
||||
update_by,update_time,org_code,
|
||||
process_instance_id,term_number,term_content,
|
||||
model,model_state,result,
|
||||
description,material,valuation_time,
|
||||
correction_solution,unsatisfy_require,correction_cycle,
|
||||
correction_cost,commonality,commonality_cost,
|
||||
remark,auth_dept,main_check_user,
|
||||
design_engineer
|
||||
</sql>
|
||||
<insert id="batchInsert" parameterType="java.util.Collection">
|
||||
INSERT INTO process_standard_compliance_check_detail (
|
||||
id,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
org_code,
|
||||
process_instance_id,
|
||||
term_number,
|
||||
term_title,
|
||||
term_content,
|
||||
model,
|
||||
model_status,
|
||||
assessor,
|
||||
result,
|
||||
description,
|
||||
material,
|
||||
valuation_time,
|
||||
correction_solution,
|
||||
unsatisfied_require,
|
||||
correction_period,
|
||||
correction_cost,
|
||||
commonality,
|
||||
commonality_cost,
|
||||
remark,
|
||||
auth_dept,
|
||||
main_check_user,
|
||||
design_engineer,
|
||||
check_id,
|
||||
batch_id
|
||||
)
|
||||
VALUES
|
||||
<foreach collection="queue" item="item" separator=",">
|
||||
(
|
||||
#{item.id},
|
||||
#{item.createBy},
|
||||
#{item.createTime},
|
||||
#{item.updateBy},
|
||||
#{item.updateTime},
|
||||
#{item.orgCode},
|
||||
#{item.processInstanceId},
|
||||
#{item.termNumber},
|
||||
#{item.termTitle},
|
||||
#{item.termContent},
|
||||
#{item.model},
|
||||
#{item.modelStatus},
|
||||
#{item.assessor},
|
||||
#{item.result},
|
||||
#{item.description},
|
||||
#{item.material},
|
||||
#{item.valuationTime},
|
||||
#{item.correctionSolution},
|
||||
#{item.unsatisfiedRequire},
|
||||
#{item.correctionPeriod},
|
||||
#{item.correctionCost},
|
||||
#{item.commonality},
|
||||
#{item.commonalityCost},
|
||||
#{item.remark},
|
||||
#{item.authDept},
|
||||
#{item.mainCheckUser},
|
||||
#{item.designEngineer},
|
||||
#{item.checkId},
|
||||
#{item.batchId}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
|
||||
+17
-5
@@ -3,6 +3,7 @@ package com.jero.modules.activiti.process.standardComplianceCheck.service.impl;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.CommonAPI;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
@@ -35,6 +36,7 @@ import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.Model
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.SplitExcelVO;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.WithoutDistributeExcelTemplate;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckDetailMapper;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckMapper;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckDetailService;
|
||||
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
|
||||
@@ -137,6 +139,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
private ProcessApprovalRecordService approvalRecordService;
|
||||
@Resource
|
||||
private ProcessAllService paService;
|
||||
@Resource
|
||||
private ProcessStandardComplianceCheckDetailMapper sccDetailMapper;
|
||||
|
||||
@Value("${jero.path.exportExcelTempPath}")
|
||||
private String exportExcelTempPath;
|
||||
@@ -371,7 +375,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
List<ProcessStandardComplianceCheckDetail> distributeDetailList = detailInfoList.parallelStream()
|
||||
.filter(e -> StrUtil.isNotBlank(e.getDesignEngineer()))
|
||||
.collect(Collectors.toList());
|
||||
List<String> ids = distributeDetailList.parallelStream().map(ProcessStandardComplianceCheckDetail::getId).collect(Collectors.toList());
|
||||
List<String> ids = distributeDetailList.parallelStream()
|
||||
.map(ProcessStandardComplianceCheckDetail::getId)
|
||||
.collect(Collectors.toList());
|
||||
// 分发需要设置未分发数据条数
|
||||
unallocatedQuantity = detailInfoList.size() - distributeDetailList.size();
|
||||
// 去重找到所有设计师
|
||||
@@ -385,9 +391,15 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
distributeDetailList.parallelStream().forEach(detail -> {
|
||||
String[] engineers = detail.getDesignEngineer().split(",");
|
||||
for (String engineer : engineers) {
|
||||
ProcessStandardComplianceCheckDetail newDetail = BeanCopyUtils.
|
||||
copyBean(detail, ProcessStandardComplianceCheckDetail.class);
|
||||
newDetail.setId(null);
|
||||
ProcessStandardComplianceCheckDetail newDetail = new ProcessStandardComplianceCheckDetail();
|
||||
newDetail.setId(IdWorker.getIdStr());
|
||||
newDetail.setProcessInstanceId(processInstanceId);
|
||||
newDetail.setTermNumber(detail.getTermNumber());
|
||||
newDetail.setTermTitle(detail.getTermTitle());
|
||||
newDetail.setTermContent(detail.getTermContent());
|
||||
newDetail.setModel(detail.getModel());
|
||||
newDetail.setModelStatus(detail.getModelStatus());
|
||||
newDetail.setCheckId(detail.getCheckId());
|
||||
newDetail.setDesignEngineer(engineer);
|
||||
newDetail.setBatchId(batchId);
|
||||
needAddDetailInfoQueue.add(newDetail);
|
||||
@@ -395,7 +407,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
|
||||
});
|
||||
// 先删后增
|
||||
sccDetailService.removeByIds(ids);
|
||||
sccDetailService.saveBatch(needAddDetailInfoQueue, needAddDetailInfoQueue.size());
|
||||
sccDetailMapper.batchInsert(needAddDetailInfoQueue);
|
||||
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList);
|
||||
runtimeService.setVariable(processInstanceId, BATCH_ID, batchId);
|
||||
userMap.put(DESIGNER_LIST, String.join(",", designEngineerList));
|
||||
|
||||
Reference in New Issue
Block a user