提交评分时版本乐观锁撤销

main 73
hshansha 1 month ago
parent d6c6ea2af6
commit 064c06f124

@ -165,7 +165,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
// 最大重试次数 // 最大重试次数
// final int MAX_RETRY_COUNT = 3; // final int MAX_RETRY_COUNT = 3;
int retryCount = 0; int retryCount = 0;
while (true) { /* while (true) {*/
voteEmp.setUpdateTime(nowDate); voteEmp.setUpdateTime(nowDate);
//根据id查询数据得到原值及版本号 //根据id查询数据得到原值及版本号
KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId());
@ -206,7 +206,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
} }
voteEmp.setVersion(oldvoteEmp.getVersion()); voteEmp.setVersion(oldvoteEmp.getVersion());
int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp);
if (result > 0) { /*if (result > 0) {
break; break;
} else { } else {
// 更新失败,版本冲突,增加重试计数 // 更新失败,版本冲突,增加重试计数
@ -217,19 +217,19 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试");
// 等待一段时间后重试,避免立即重试导致的持续冲突 // 等待一段时间后重试,避免立即重试导致的持续冲突
try { try {
Thread.sleep(500 * retryCount); // 重试间隔递增 Thread.sleep(1000 * retryCount); // 重试间隔递增
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
throw new RuntimeException("重试过程异常中断-------------", e); throw new RuntimeException("重试过程异常中断-------------", e);
} }
// } // }
} }
} }*/
} }
} else if (typeid.equals(2L)) {//占比评分 } else if (typeid.equals(2L)) {//占比评分
for (KhVoteEmp voteEmp : voteEmpList) { for (KhVoteEmp voteEmp : voteEmpList) {
int retryCount = 0; int retryCount = 0;
while (true) { /* while (true) {*/
voteEmp.setUpdateTime(nowDate); voteEmp.setUpdateTime(nowDate);
//根据id查询数据得到之前的值 //根据id查询数据得到之前的值
KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId());
@ -241,7 +241,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
voteEmp.setEndScore(voteEmp.getAvgScore().multiply(oldvoteEmp.getPercentage())); voteEmp.setEndScore(voteEmp.getAvgScore().multiply(oldvoteEmp.getPercentage()));
voteEmp.setVersion(oldvoteEmp.getVersion()); voteEmp.setVersion(oldvoteEmp.getVersion());
int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp);
if (result > 0) { /*if (result > 0) {
break; break;
} else { } else {
// 更新失败,版本冲突,增加重试计数 // 更新失败,版本冲突,增加重试计数
@ -252,18 +252,18 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试");
// 等待一段时间后重试,避免立即重试导致的持续冲突 // 等待一段时间后重试,避免立即重试导致的持续冲突
try { try {
Thread.sleep(500 * retryCount); // 重试间隔递增 Thread.sleep(1000 * retryCount); // 重试间隔递增
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
throw new RuntimeException("重试过程异常中断-------------", e); throw new RuntimeException("重试过程异常中断-------------", e);
} }
} }
} }*/
} }
} else {//单独评分 不占比 以平均分为最后得分 } else {//单独评分 不占比 以平均分为最后得分
for (KhVoteEmp voteEmp : voteEmpList) { for (KhVoteEmp voteEmp : voteEmpList) {
int retryCount = 0; int retryCount = 0;
while (true) { /* while (true) {*/
voteEmp.setUpdateTime(nowDate); voteEmp.setUpdateTime(nowDate);
//根据id查询数据得到之前的值 //根据id查询数据得到之前的值
KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId()); KhVoteEmp oldvoteEmp = khVoteEmpMapper.selectKhVoteEmpById(voteEmp.getId());
@ -275,7 +275,7 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
voteEmp.setEndScore(voteEmp.getAvgScore()); voteEmp.setEndScore(voteEmp.getAvgScore());
voteEmp.setVersion(oldvoteEmp.getVersion()); voteEmp.setVersion(oldvoteEmp.getVersion());
int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp); int result = khVoteEmpMapper.updateKhVoteEmp(voteEmp);
if (result > 0) { /*if (result > 0) {
break; break;
} else { } else {
// 更新失败,版本冲突,增加重试计数 // 更新失败,版本冲突,增加重试计数
@ -286,13 +286,13 @@ public class KhVoteEmpServiceImpl implements IKhVoteEmpService {
System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试"); System.out.println("-----------版本冲突," + voteEmp.getBkhdxName() + "第" + retryCount + "次重试");
// 等待一段时间后重试,避免立即重试导致的持续冲突 // 等待一段时间后重试,避免立即重试导致的持续冲突
try { try {
Thread.sleep(500 * retryCount); // 重试间隔递增 Thread.sleep(1000 * retryCount); // 重试间隔递增
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
throw new RuntimeException("重试过程异常中断-------------", e); throw new RuntimeException("重试过程异常中断-------------", e);
} }
} }
} }*/
} }
} }

@ -140,10 +140,10 @@
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if> <if test="remark != null">remark = #{remark},</if>
version = version + 1
</trim> </trim>
<!-- 其他需要更新的字段 --> <!-- 其他需要更新的字段 /* version = version + 1 AND version = #{version}*/-->
WHERE id = #{id} AND version = #{version} WHERE id = #{id}
</update> </update>
<delete id="deleteKhVoteEmpById" parameterType="Long"> <delete id="deleteKhVoteEmpById" parameterType="Long">

Loading…
Cancel
Save