Bladeren bron

性能测试代码优化

gaoxiong 1 jaar geleden
bovenliggende
commit
cb7fa3dc54

+ 38 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionDelServiceImpl.java

@@ -0,0 +1,38 @@
+package com.xunmei.core.resumption.gx.service;
+
+import com.xunmei.core.resumption.mapper.AppResumptionDataMapper;
+import com.xunmei.core.resumption.mapper.AppResumptionDataNfcMapper;
+import com.xunmei.core.resumption.mapper.AppResumptionDataRemarkimgMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author gaoxiong
+ * @Title:
+ * @Package
+ * @Description:
+ * @date 2023/12/618:38
+ */
+@Service
+public class ResumptionDelServiceImpl {
+
+    @Autowired
+    private AppResumptionDataMapper appResumptionDataMapper;
+
+    @Autowired
+    private AppResumptionDataNfcMapper appResumptionDataNfcMapper;
+
+    @Autowired
+    private AppResumptionDataRemarkimgMapper appResumptionDataRemarkimgMapper;
+
+
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
+    public void delResumptionData(Long taskId){
+        //删除之前的数据
+        appResumptionDataMapper.deleteByResumptionId(taskId);
+        appResumptionDataNfcMapper.deleteByResumptionId(taskId);
+        appResumptionDataRemarkimgMapper.deleteByResumptionId(taskId);
+    }
+}

+ 70 - 20
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -7,10 +7,14 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.question.QuestionConfirmEnum;
+import com.xunmei.core.question.QuestionReformEnum;
 import com.xunmei.core.question.QuestionSrcType;
 import com.xunmei.core.question.domain.Question;
 import com.xunmei.core.question.service.IQuestionService;
@@ -26,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.TransactionManager;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionSynchronization;
 import org.springframework.transaction.support.TransactionSynchronizationAdapter;
 import org.springframework.transaction.support.TransactionSynchronizationManager;
 import sun.nio.ch.ThreadPool;
@@ -61,6 +66,9 @@ public class ResumptionServiceImpl implements ResumptionService {
     @Autowired
     private AppPlanService appPlanService;
 
+    @Autowired
+    private ResumptionDelServiceImpl resumptionDelService;
+
 
     @Override
     public ResumptionTaskDetailVo getTask(ResumptionTaskDetailVo taskDetailVo) throws Exception {
@@ -85,10 +93,10 @@ public class ResumptionServiceImpl implements ResumptionService {
         //履职状态:1 待履职,2 进行中,3 已完成,4 已过期
         Resumption resumption = resumptionMapper.findOneByTaskIdAndDate(taskDetailVo.getTaskId(), year, quarter);
         Integer status = resumption.getStatus();
-        if(status == 1){
+        if (status == 1) {
             //增加待履职不能在未开始时打开逻辑
             Date start = resumption.getPlanStartTime();
-            if(start.after(new Date())){
+            if (start.after(new Date())) {
                 throw new RuntimeException("任务未到开始时间!");
             }
 
@@ -126,6 +134,9 @@ public class ResumptionServiceImpl implements ResumptionService {
         int quarter = dateTime.getQuarter();
         //获取履职任务
         Resumption sysResumption = resumptionMapper.findOneByTaskIdAndDate(taskId, year, quarter);
+        if (sysResumption == null) {
+            throw new RuntimeException("任务数据不存在!");
+        }
         AppPlan appPlan = appPlanMapper.selectById(sysResumption.getPlanId());
         sysResumption.setUpdateBy(SecurityUtils.getUsername());
         sysResumption.setSubmitorId(SecurityUtils.getUserId());
@@ -141,19 +152,23 @@ public class ResumptionServiceImpl implements ResumptionService {
             sysResumption.setStatus(3);
         }
 
-        //删除之前的数据
-        appResumptionDataMapper.deleteByResumptionId(taskId);
-        appResumptionDataNfcMapper.deleteByResumptionId(taskId);
-        appResumptionDataRemarkimgMapper.deleteByResumptionId(taskId);
+        resumptionDelService.delResumptionData(taskId);
+
+
 
         //保存新的数据
         AppResumptionData data = null;
         List<ResumptionItemVo> checks = taskDetailVo.getChecks();
         Integer exceptionCount = 0;
+        List<AppResumptionData> ards = new ArrayList<>();
+        List<Question> questions = new ArrayList<>();
+        List<AppResumptionDataRemarkimg> adImgs = new ArrayList<>();
+        List<AppResumptionDataNfc> dataNfcs = new ArrayList<>();
         for (ResumptionItemVo check : checks) {
             List<ResumptionPointVo> points = check.getPoints();
             for (ResumptionPointVo point : points) {
                 data = new AppResumptionData();
+                Long pointId = IdWorker.getId(data);
                 data.setDataStatus(point.getDataStatus());
                 data.setResumptionId(taskId);
                 data.setAreaId(check.getAreaId());
@@ -174,10 +189,11 @@ public class ResumptionServiceImpl implements ResumptionService {
                         data.setDataStatus(2);
                     }
                 }
-                appResumptionDataMapper.insert(data);
+                //appResumptionDataMapper.insert(data);
+                ards.add(data);
 
                 if (taskDetailVo.getSubType() == 2 && ObjectUtil.equal(point.getResValue(), 1)) {
-                    if(ObjectUtil.isNull(point.getRectificationDeadline()) || !NumberUtil.isNumber(point.getRectificationDeadline())){
+                    if (ObjectUtil.isNull(point.getRectificationDeadline()) || !NumberUtil.isNumber(point.getRectificationDeadline())) {
                         throw new ServiceException("整改期限为空或不是有效的数值");
                     }
                     SysOrg org = remoteOrgService.selectSysOrgById(sysResumption.getOrgId(), SecurityConstants.INNER);
@@ -187,7 +203,7 @@ public class ResumptionServiceImpl implements ResumptionService {
                             .orgName(org.getShortName())
                             .orgPath(org.getPath())
                             .SrcPointId(point.getPointId())
-                            .srcDataPointId(data.getId())
+                            .srcDataPointId(pointId)
                             .srcType(QuestionSrcType.Resumption.getValue())
                             .srcTaskType(appPlan.getPlanType())
                             .srcTaskName(sysResumption.getName())
@@ -199,7 +215,15 @@ public class ResumptionServiceImpl implements ResumptionService {
                             .submitTime(ObjectUtil.isNull(data.getSubmitTime()) ? new Date() : data.getSubmitTime())
                             .reformDeadline(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), Integer.parseInt(point.getRectificationDeadline()))))
                             .build();
-
+                    IdWorker.getId(question);
+                    if (ObjectUtil.equal(question.getOrgId(),SecurityUtils.getLoginUser().getOrgId())) {
+                        question.setConfirmStatus(QuestionConfirmEnum.Confirmed.getValue());
+                        question.setReformStatus(QuestionReformEnum.Unreform.getValue());
+                    } else {
+                        question.setConfirmStatus(QuestionConfirmEnum.Unconfirm.getValue());
+                        question.setReformStatus(null);
+                    }
+                    questions.add(question);
                     questionService.insertQuestion(question);
                 }
 
@@ -208,10 +232,12 @@ public class ResumptionServiceImpl implements ResumptionService {
                 }
                 List<AppResumptionDataRemarkimg> imgs = point.getImgs();
                 for (AppResumptionDataRemarkimg img : imgs) {
-                    img.setResumptionDataId(data.getId());
+                    img.setResumptionDataId(pointId);
                     img.setResumptionId(taskId);
-                    appResumptionDataRemarkimgMapper.insert(img);
+                    IdWorker.getId(img);
+                    //appResumptionDataRemarkimgMapper.insert(img);
                 }
+                adImgs.addAll(imgs);
             }
         }
         sysResumption.setExceptionCount(exceptionCount);
@@ -231,19 +257,43 @@ public class ResumptionServiceImpl implements ResumptionService {
             dataNfc.setStatus(nfc.getStatus());
             dataNfc.setSubmitTime(ObjectUtil.isNull(nfc.getSubmitTime()) ? new Date() : nfc.getSubmitTime());
             dataNfc.setSubmitBy(nfc.getSubmitBy());
-            appResumptionDataNfcMapper.insert(dataNfc);
+            IdWorker.getId(dataNfc);
+            dataNfcs.add(dataNfc);
+            //appResumptionDataNfcMapper.insert(dataNfc);
         }
 
+        /**
+         * 批量修改数据
+         */
+
+        //1.批量插入 履职数据。
+        if(ards.size() > 0){
+            resumptionMapper.batchInsertResumptionData(ards);
+        }
+        //2.批量插入 问题数据。
+        if(questions.size() > 0){
+            resumptionMapper.batchInsertResumptionQuestion(questions);
+        }
+        //3.批量插入 图片数据。
+        if(adImgs.size() > 0){
+            resumptionMapper.batchInsertResumptionImg(adImgs);
+        }
+        //3.批量插入 扫描数据。
+        if(dataNfcs.size() > 0){
+            resumptionMapper.batchInsertResumptionNfc(dataNfcs);
+        }
+
+
         resumptionMapper.updateById(sysResumption);
         if (ObjectUtil.equal(taskDetailVo.getSubType(), 2)) {
-//            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-//                @Override
-//                public void afterCommit() {
-            appPlanService.updatePlanCompletedState(sysResumption.getPlanId(), 1);
-//                }
-//            });
-
+            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
+                @Override
+                public void afterCommit() {
+                    appPlanService.updatePlanCompletedState(sysResumption.getPlanId(), 1);
+                }
+            });
         }
+
     }
 
     /**

+ 13 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -5,6 +5,10 @@ import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafetyIndexReCalculateDto;
+import com.xunmei.core.question.domain.Question;
+import com.xunmei.core.resumption.domain.AppResumptionData;
+import com.xunmei.core.resumption.domain.AppResumptionDataNfc;
+import com.xunmei.core.resumption.domain.AppResumptionDataRemarkimg;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.gx.vo.ResumptionNFCVo;
 import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
@@ -14,6 +18,7 @@ import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -88,4 +93,12 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
 
 
     List<Resumption> selectByYmdDateAndExec(@Param("date") Date date, @Param("exec") Integer exec, @Param("orgId") Long orgId);
+
+    void batchInsertResumptionData(@Param("list") List<AppResumptionData> list);
+
+    void batchInsertResumptionQuestion(@Param("list") List<Question> list);
+
+    void batchInsertResumptionImg(@Param("list") List<AppResumptionDataRemarkimg> list);
+
+    void batchInsertResumptionNfc(@Param("list") List<AppResumptionDataNfc> list);
 }

+ 122 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -370,4 +370,126 @@
             </foreach>
         </if>
     </insert>
+    <insert id="batchInsertResumptionData" parameterType="java.util.List">
+        INSERT INTO `core_resumption_data` (
+        `id`,
+        `plan_id`,
+        `item_id`,
+        `resumption_id`,
+        `area_id`,
+        `check_id`,
+        `res_value`,
+        `res_time`,
+        `submit_time`,
+        `res_status`,
+        `res_remark`,
+        `submit_by`,
+        `submit_name`,
+        `rectification_deadline`,
+        `data_status`,
+        `point_scan`,
+        `required`
+        )
+        VALUES
+        <foreach collection="list" item="item" index="index"  separator="," >
+            (
+            #{item.id},
+            #{item.planId},
+            #{item.itemId},
+            #{item.resumptionId},
+            #{item.areaId},
+            #{item.checkId},
+            #{item.resValue},
+            #{item.resTime},
+            #{item.submitTime},
+            #{item.resStatus},
+            #{item.resRemark},
+            #{item.submitBy},
+            #{item.submitName},
+            #{item.rectificationDeadline},
+            #{item.dataStatus},
+            #{item.pointScan},
+            #{item.required}
+            )
+        </foreach>
+
+
+    </insert>
+    <insert id="batchInsertResumptionQuestion" parameterType="java.util.List">
+        INSERT INTO `core_question` (
+        `id`,
+        `org_id`,
+        `org_name`,
+        `org_path`,
+        `src_type`,
+        `src_task_type`,
+        `src_task_id`,
+        `src_task_name`,
+        `src_point_id`,
+        `src_data_point_id`,
+        `check_item`,
+        `check_content`,
+        `question_desc`,
+        `submitor_id`,
+        `submitor_name`,
+        `submit_time`,
+        `confirm_status`,
+        `reform_status`,
+        `reform_deadline`,
+        `create_time`,
+        `update_time`,
+        `create_by`,
+        `update_by`
+        )
+        VALUES
+        <foreach collection="list" item="item" index="index"  separator="," >
+            (
+            #{item.id},
+            #{item.orgId},
+            #{item.orgName},
+            #{item.orgPath},
+            #{item.srcType},
+            #{item.srcTaskType},
+            #{item.srcTaskId},
+            #{item.srcTaskName},
+            #{item.srcPointId},
+            #{item.srcDataPointId},
+            #{item.checkItem},
+            #{item.checkContent},
+            #{item.questionDesc},
+            #{item.submitorId},
+            #{item.submitorName},
+            #{item.submitTime},
+            #{item.confirmStatus},
+            #{item.reformStatus},
+            #{item.reformDeadline},
+            #{item.createTime},
+            #{item.updateTime},
+            #{item.createBy},
+            #{item.updateBy}
+            )
+        </foreach>
+
+    </insert>
+    <insert id="batchInsertResumptionImg" parameterType="java.util.List">
+        INSERT INTO core_resumption_data_nfc
+        ( `id`, `resumption_id`, `nfc_id`, `submit_time`, `submit_by`, `status`, `scan_method`, `img`, `point_id` )
+        VALUES
+        <foreach collection="list" item="item" index="index"  separator="," >
+            (
+            #{item.id},
+            #{item.resumptionId},
+            #{item.nfcId},
+            #{item.submitTime},
+            #{item.submitBy},
+            #{item.status},
+            #{item.scanMethod},
+            #{item.img},
+            #{item.pointId}
+            )
+        </foreach>
+    </insert>
+    <insert id="batchInsertResumptionNfc" parameterType="java.util.List">
+
+    </insert>
 </mapper>