|
|
@@ -28,6 +28,8 @@ import org.springblade.core.tool.utils.Func;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
@@ -51,9 +53,12 @@ public class TaskProgressServiceImpl extends BaseServiceImpl<TaskProgressMapper,
|
|
|
Map<String, TaskProgressVO1> map = new HashMap<>();
|
|
|
TaskProgressVO vo1 = baseMapper.selectNewTaskProgress1(projectId, contractId,1);
|
|
|
if(vo1!=null){
|
|
|
- map.put("save-again", new TaskProgressVO1(vo1.getFinishTatol(),vo1.getTaskTotal(),vo1.getTaskTotal() > 0 ?
|
|
|
- (double) vo1.getFinishTatol() / vo1.getTaskTotal() * 100 :
|
|
|
- 0.00));
|
|
|
+ BigDecimal result = (vo1.getTaskTotal() != null && vo1.getTaskTotal() > 0 && vo1.getFinishTatol() != null) ?
|
|
|
+ new BigDecimal(vo1.getFinishTatol())
|
|
|
+ .divide(new BigDecimal(vo1.getTaskTotal()), 2, RoundingMode.HALF_UP)
|
|
|
+ .multiply(new BigDecimal(100)) :
|
|
|
+ BigDecimal.ZERO;
|
|
|
+ map.put("save-again", new TaskProgressVO1(vo1.getFinishTatol(),vo1.getTaskTotal(),result));
|
|
|
}
|
|
|
TaskProgressVO vo2 = baseMapper.selectNewTaskProgress1(projectId, contractId,2);
|
|
|
if(vo2!=null){
|
|
|
@@ -62,9 +67,12 @@ public class TaskProgressServiceImpl extends BaseServiceImpl<TaskProgressMapper,
|
|
|
size=baseMapper.selectTaskBatchSize(Func.toLongList(vo2.getDataId()));
|
|
|
}
|
|
|
Integer finishTatol=vo2.getTaskTotal()-size;
|
|
|
- map.put("re-sign", new TaskProgressVO1(finishTatol,vo2.getTaskTotal(),vo2.getTaskTotal() > 0 ?
|
|
|
- (double) finishTatol / vo2.getTaskTotal() * 100 :
|
|
|
- 0.00));
|
|
|
+ // 使用 BigDecimal 进行精确计算并保留两位小数
|
|
|
+ BigDecimal result = vo2.getTaskTotal() > 0 ?
|
|
|
+ new BigDecimal(finishTatol).divide(new BigDecimal(vo2.getTaskTotal()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) :
|
|
|
+ BigDecimal.ZERO;
|
|
|
+ result = result.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ map.put("re-sign", new TaskProgressVO1(finishTatol,vo2.getTaskTotal(),result));
|
|
|
if(size==0){
|
|
|
vo2.setIsDeleted(0);
|
|
|
baseMapper.updateById(vo2);
|
|
|
@@ -77,9 +85,12 @@ public class TaskProgressServiceImpl extends BaseServiceImpl<TaskProgressMapper,
|
|
|
size=baseMapper.selectTaskBatchSize(Func.toLongList(vo3.getDataId()));
|
|
|
}
|
|
|
Integer finishTatol=vo3.getTaskTotal()-size;
|
|
|
- map.put("electronic-sign", new TaskProgressVO1(finishTatol,vo3.getTaskTotal(),vo3.getTaskTotal() > 0 ?
|
|
|
- (double) finishTatol / vo3.getTaskTotal() * 100 :
|
|
|
- 0.00));
|
|
|
+ // 使用 BigDecimal 进行精确计算并保留两位小数
|
|
|
+ BigDecimal result = vo3.getTaskTotal() > 0 ?
|
|
|
+ new BigDecimal(finishTatol).divide(new BigDecimal(vo3.getTaskTotal()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) :
|
|
|
+ BigDecimal.ZERO;
|
|
|
+ result = result.setScale(2, RoundingMode.HALF_UP);
|
|
|
+ map.put("electronic-sign", new TaskProgressVO1(finishTatol,vo3.getTaskTotal(),result));
|
|
|
if(size==0){
|
|
|
vo3.setIsDeleted(0);
|
|
|
baseMapper.updateById(vo3);
|