定损问题修改

This commit is contained in:
hayu 2025-06-21 17:48:19 +08:00
parent 9c4fb81dfa
commit e1c9e6a30c
5 changed files with 97 additions and 17 deletions

View File

@ -78,6 +78,15 @@ public class LossAssessmentController extends BaseController {
return service.batchLossAssessmentApply(list);
}
/**
* 定损取消推至维修
*/
@ApiOperation(value = "定损取消,推至维修")
@PostMapping("/gotoRepair")
public AjaxResult gotoRepair(@RequestBody RepairDeviceVO bean) {
return service.gotoRepair(bean);
}
/**
* 提交任务到维修
*/

View File

@ -161,4 +161,18 @@ public interface LossAssessmentMapper {
* @return
*/
List<RepairPartDetails> getDetailsListApp(RepairPartDetails bean);
/**
* 定损完成--直通
* @param taskId
* @return
*/
int updateIsDs(Long taskId);
/**
* 修改状态
* @param taskId
* @return
*/
int updateStatus(Long taskId);
}

View File

@ -59,4 +59,11 @@ public interface LossAssessmentService {
* @return
*/
List<RepairPartDetails> getDetailsListApp(RepairPartDetails bean);
/**
* 定损取消推至维修
* @param bean
* @return
*/
AjaxResult gotoRepair(RepairDeviceVO bean);
}

View File

@ -102,13 +102,16 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal typeCostSum = tempList.stream().map(RepairDeviceVO::getTotalCost).reduce(BigDecimal.ZERO, BigDecimal::add);
// 新增status判断逻辑
boolean allStatusOne = tempList.stream().allMatch(device -> device.getStatus() != null && !"".equals(device.getStatus()) && "1".equals(device.getStatus()));
vo.setRepairDeviceList(tempList)
.setIds(ids).setTypeRepairNum(repairNumSum).setTypeRepairedNum(repairedNumSum)
.setTypeScrapNum(scrapNumSum).setTaskId(tempList.get(0).getTaskId())
.setCode(tempList.get(0).getCode()).setTypeName(tempList.get(0).getTypeName())
.setTypeId(tempList.get(0).getTypeId()).setType(tempList.get(0).getType())
.setUnitName(tempList.get(0).getUnitName()).setManageType(tempList.get(0).getManageType())
.setTypeCost(typeCostSum);
.setTypeCost(typeCostSum)
.setStatus(allStatusOne ? "1" : "0");
repairDeviceSummaryVoList.add(vo);
}
}
@ -214,23 +217,25 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
for (RepairTask task : taskList) {
//1查询任务下的定损数据,是否还有未完成的数据
// //1查询任务下的定损数据,是否还有未完成的数据
List<RepairTaskDetails> detailsList = mapper.getRepairDetailsWhichNotSent(task.getTaskId());
if (!CollectionUtils.isEmpty(detailsList)) {
BigDecimal repairedNum = BigDecimal.ZERO;
BigDecimal scrapNum = BigDecimal.ZERO;
String taskCode = "";
for (RepairTaskDetails repairTaskDetails : detailsList) {
repairedNum = repairedNum.add(repairTaskDetails.getRepairedNum());
scrapNum = scrapNum.add(repairTaskDetails.getScrapNum());
taskCode = repairTaskDetails.getTaskCode();
}
if (repairedNum.add(scrapNum).compareTo(BigDecimal.ZERO) == 0) {
return AjaxResult.error("单号" + taskCode + "还未进行定损,请先定损后再提交!");
}
}
// if (!CollectionUtils.isEmpty(detailsList)) {
// BigDecimal repairedNum = BigDecimal.ZERO;
// BigDecimal scrapNum = BigDecimal.ZERO;
// String taskCode = "";
// for (RepairTaskDetails repairTaskDetails : detailsList) {
// repairedNum = repairedNum.add(repairTaskDetails.getRepairedNum());
// scrapNum = scrapNum.add(repairTaskDetails.getScrapNum());
// taskCode = repairTaskDetails.getTaskCode();
// }
// if (repairedNum.add(scrapNum).compareTo(BigDecimal.ZERO) == 0) {
// return AjaxResult.error("单号" + taskCode + "还未进行定损,请先定损后再提交!");
// }
// }
//2修改任务状态
mapper.updateSingleTaskStatus(task, loginUser.getUserid(), RepairTaskStatusEnum.TASK_LOSS_ASSESSMENT_COMPLETE.getStatus());
//将数据status状态都置为1
mapper.updateStatus(task.getTaskId());
//3重新生成维修数据
for (RepairTaskDetails repairTaskDetails : detailsList){
repairTaskDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
@ -322,6 +327,35 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
return mapper.getDetailsListApp(bean);
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult gotoRepair(RepairDeviceVO bean) {
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (bean.getTaskId()!=null){
List<RepairTaskDetails> detailsList = mapper.getRepairDetailsWhichNotSent(bean.getTaskId());
//2修改任务状态
RepairTask task = new RepairTask();
task.setTaskId(bean.getTaskId());
mapper.updateSingleTaskStatus(task, loginUser.getUserid(), RepairTaskStatusEnum.TASK_LOSS_ASSESSMENT_COMPLETE.getStatus());
//将数据status状态都置为1
mapper.updateStatus(task.getTaskId());
//3重新生成维修数据
for (RepairTaskDetails repairTaskDetails : detailsList){
repairTaskDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
mapper.insertRad(repairTaskDetails);
}
return AjaxResult.success("提交完成");
} else {
throw new ServiceException("任务id为空");
}
} catch (Exception e) {
log.error("定损直通维修", e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error("执行失败,请重试");
}
}
private void splitRepairDetailsToMultiple(RepairDeviceVO bean, BigDecimal innerRepairNum, BigDecimal outerRepairNum, BigDecimal scrapNum, LoginUser loginUser) {
//本次修完了
if ((bean.getRepairNum().subtract(innerRepairNum).subtract(outerRepairNum).subtract(scrapNum).compareTo(BigDecimal.valueOf(0)) ) == 0) {

View File

@ -174,7 +174,7 @@
<update id="updateStatusByRepairScrapNum">
update
repair_apply_details
set status = IF((ifnull(repaired_num, 0) + ifnull(scrap_num, 0) >= repair_num), 1, 0)
set status = 1
where id = #{id}
</update>
@ -192,6 +192,17 @@
update_time = NOW()
where task_id = #{taskId}
</update>
<update id="updateIsDs">
update repair_apply_details
set is_ds = 0
where task_id = #{taskId}
</update>
<update id="updateStatus">
update repair_apply_details
set status = 1
where task_id = #{taskId}
and is_ds = 1
</update>
<select id="getLossAssessmentList" resultType="com.bonus.material.repair.domain.RepairTask">
SELECT
@ -209,7 +220,12 @@
rd.level as level,
SUM(rd.repair_num) as repairNum,
bai.back_person as backPerson,
rd.`status`
CASE tt.task_status
WHEN 0 THEN
0
ELSE
1
END `status`
FROM
repair_apply_details rd
LEFT JOIN ma_type mt on rd.type_id = mt.type_id