定损驳回

This commit is contained in:
hayu 2025-06-24 10:03:10 +08:00
parent af7f799433
commit 57f7bf5d16
5 changed files with 253 additions and 67 deletions

View File

@ -100,9 +100,9 @@ public class LossAssessmentController extends BaseController {
* 驳回退料--批量 * 驳回退料--批量
*/ */
@ApiOperation(value = "驳回退料--批量") @ApiOperation(value = "驳回退料--批量")
@DeleteMapping("/{ids}") @PostMapping("/reject")
public AjaxResult rejectRepair(@PathVariable Long[] ids) { public AjaxResult rejectRepair(@RequestBody RepairTask bean) {
return service.rejectRepair(Arrays.asList(ids)); return service.rejectRepair(bean);
} }
} }

View File

@ -1,10 +1,7 @@
package com.bonus.material.lossAssessment.mapper; package com.bonus.material.lossAssessment.mapper;
import com.bonus.material.ma.domain.PartType; import com.bonus.material.ma.domain.PartType;
import com.bonus.material.repair.domain.RepairApplyRecord; import com.bonus.material.repair.domain.*;
import com.bonus.material.repair.domain.RepairPartDetails;
import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceVO; import com.bonus.material.repair.domain.vo.RepairDeviceVO;
import com.bonus.material.task.domain.TmTask; import com.bonus.material.task.domain.TmTask;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -175,4 +172,81 @@ public interface LossAssessmentMapper {
* @return * @return
*/ */
int updateStatus(Long taskId); int updateStatus(Long taskId);
/**
* 查询任务状态
* @param taskId
* @return
*/
int selectTaskStatus(Long taskId);
/**
* 删除任务
* @param taskId
* @return
*/
int deleteTask(Long taskId);
/**
* 删除repair_apply_details
* @param taskId
* @return
*/
int deleteApplyDetailsByTaskId(Long taskId);
/**
* 删除repair_apply_record
* @param taskId
* @return
*/
int deleteRecordByTaskId(Long taskId);
/**
* 删除repair_part_details
* @param taskId
* @return
*/
int deletePartByTaskId(Long taskId);
/**
* 删除repair_cost
* @param taskId
* @return
*/
int deleteCostByTaskId(Long taskId);
/**
* 查询repair_apply_details
* @param id
* @return
*/
RepairApplyDetails selectRepairApplyDetailsById(Long id);
/**
* 删除repair_apply_details
* @param id
* @return
*/
int delDetailsById(Long id);
/**
* 删除repair_apply_record
* @param repairApplyDetails
* @return
*/
int delRecord(RepairApplyDetails repairApplyDetails);
/**
* 删除repair_part_details
* @param repairApplyDetails
* @return
*/
int delPart(RepairApplyDetails repairApplyDetails);
/**
* 删除repair_cost
* @param repairApplyDetails
* @return
*/
int delCost(RepairApplyDetails repairApplyDetails);
} }

View File

@ -48,10 +48,10 @@ public interface LossAssessmentService {
/** /**
* 驳回至退料 * 驳回至退料
* @param taskList * @param bean
* @return * @return
*/ */
AjaxResult rejectRepair(@NotNull List<Long> taskList); AjaxResult rejectRepair(RepairTask bean);
/** /**
* 获取详情的详情 * 获取详情的详情

View File

@ -8,15 +8,15 @@ import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.back.domain.BackApplyInfo; import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.back.domain.BackCheckDetails;
import com.bonus.material.back.mapper.BackApplyInfoMapper; import com.bonus.material.back.mapper.BackApplyInfoMapper;
import com.bonus.material.back.mapper.BackCheckDetailsMapper;
import com.bonus.material.basic.mapper.BmFileInfoMapper; import com.bonus.material.basic.mapper.BmFileInfoMapper;
import com.bonus.material.lossAssessment.mapper.LossAssessmentMapper; import com.bonus.material.lossAssessment.mapper.LossAssessmentMapper;
import com.bonus.material.lossAssessment.service.LossAssessmentService; import com.bonus.material.lossAssessment.service.LossAssessmentService;
import com.bonus.material.ma.domain.PartType; import com.bonus.material.ma.domain.PartType;
import com.bonus.material.repair.domain.RepairApplyRecord; import com.bonus.material.ma.mapper.MachineMapper;
import com.bonus.material.repair.domain.RepairPartDetails; import com.bonus.material.repair.domain.*;
import com.bonus.material.repair.domain.RepairTask;
import com.bonus.material.repair.domain.RepairTaskDetails;
import com.bonus.material.repair.domain.vo.RepairDeviceSummaryVo; import com.bonus.material.repair.domain.vo.RepairDeviceSummaryVo;
import com.bonus.material.repair.domain.vo.RepairDeviceVO; import com.bonus.material.repair.domain.vo.RepairDeviceVO;
import com.bonus.material.settlement.mapper.SltAgreementInfoMapper; import com.bonus.material.settlement.mapper.SltAgreementInfoMapper;
@ -55,6 +55,10 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
private BackApplyInfoMapper backApplyInfoMapper; private BackApplyInfoMapper backApplyInfoMapper;
@Resource @Resource
private SltAgreementInfoMapper sltAgreementInfoMapper; private SltAgreementInfoMapper sltAgreementInfoMapper;
@Resource
private BackCheckDetailsMapper backCheckDetailsMapper;
@Resource
private MachineMapper machineMapper;
@Override @Override
@ -252,27 +256,15 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public AjaxResult rejectRepair(@NotNull List<Long> taskList) { public AjaxResult rejectRepair(RepairTask bean) {
String res=""; String res="";
try { try {
for (Long taskId : taskList) { if (!CollectionUtils.isEmpty(bean.getTaskIds())) {
// 判断维修明细是否有已经维修的数据 for (Long taskId : bean.getTaskIds()) {
final int repairedScrapNumber = mapper.getRepairedScrapNumByTaskId(taskId); //判断是否定损完成
if (0 >= repairedScrapNumber) { int status = mapper.selectTaskStatus(taskId);
// 1.修改维修task状态为已驳回
mapper.updateTaskStatus(String.valueOf(taskId), RepairTaskStatusEnum.TASK_STATUS_REJECT.getStatus());
final TmTask tmTask = mapper.selectTmTaskByTaskId(taskId); final TmTask tmTask = mapper.selectTmTaskByTaskId(taskId);
if (null != tmTask && null != tmTask.getPreTaskId()) { if (status<=0){
// 2.修改退料任务状态为被维修驳回
backApplyInfoMapper.updateTaskStatus(new BackApplyInfo()
.setTaskId(tmTask.getPreTaskId())
.setTaskStatus(BackTaskStatusEnum.BACK_TASK_TO_REJECT.getStatus())
);
// 3.退料的在用数量恢复 -- 2025.1.9 ruan修改 已弃用!!!
// backApplyInfoMapper.updateBackApplyDetailsTwo(tmTask.getPreTaskId());
// 3. 更新结算信息表
sltAgreementInfoMapper.backRejectSltCope(tmTask.getPreTaskId());
//驳回操作不可跨月操作 //驳回操作不可跨月操作
if (!StringHelper.isNullOrEmptyString(String.valueOf(tmTask.getCreateTime()))) { if (!StringHelper.isNullOrEmptyString(String.valueOf(tmTask.getCreateTime()))) {
// createTime 转换为 LocalDate // createTime 转换为 LocalDate
@ -281,43 +273,74 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
LocalDate today = LocalDate.now(); LocalDate today = LocalDate.now();
// 检查是否在同一月 // 检查是否在同一月
if (taskCreationDate.getYear() != today.getYear() || taskCreationDate.getMonth() != today.getMonth()) { if (taskCreationDate.getYear() != today.getYear() || taskCreationDate.getMonth() != today.getMonth()) {
res="只可驳回本月任务";
throw new ServiceException("只可驳回本月任务"); throw new ServiceException("只可驳回本月任务");
} }
} }
//1清除任务
//查询是否有签名 根据退料编码查询back_apply_info表 int deleteTask = mapper.deleteTask(taskId);
BackApplyInfo backApplyInfo = backApplyInfoMapper.selectSignByTaskId(taskId); if (deleteTask<0){
if (null != backApplyInfo){ throw new ServiceException("任务驳回失败,请重试");
if (!StringHelper.isNullOrEmptyString(backApplyInfo.getBackSignUrl()) || backApplyInfo.getDirectAuditBy()>0){ }
res="该任务已有签名,不能驳回"; if (tmTask.getPreTaskId()!=null){
throw new ServiceException("该任务已有签名,不能驳回"); // 2. 根据任务id查询前置任务数据详情
BackApplyInfo info = backApplyInfoMapper.selectByTaskId(tmTask.getPreTaskId());
// 3. 查询back_check_details表数据
BackCheckDetails backCheckDetails = new BackCheckDetails();
backCheckDetails.setParentId(info.getId());
List<BackCheckDetails> checkDetails = backCheckDetailsMapper.selectBackCheckDetailsList(backCheckDetails);
// 4. 更新结算信息表
int result = sltAgreementInfoMapper.backRejectSltCope(tmTask.getPreTaskId());
if (result < 1) {
throw new ServiceException("维修驳回失败,请联系管理员");
}
// 5. 对于编码设备更改设备状态为在用
if (!CollectionUtils.isEmpty(checkDetails)) {
for (BackCheckDetails backCheckDetail : checkDetails) {
if (backCheckDetail.getMaId() != null) {
// 更新设备状态为在用
machineMapper.updateStatus(backCheckDetail.getMaId(), MaMachineStatusEnum.IN_USE.getStatus());
} }
} }
if (null == tmTask.getCode() || tmTask.getCode().isEmpty()) {
res="定损任务:" + taskId + "没有退料单号,系统异常!";
throw new ServiceException("定损任务:" + taskId + "没有退料单号,系统异常!");
} }
// 4.更新退料明细状态 -- 2025.1.9 ruan修改 驳回时--退料明细直接删除 //6删除定损数据
backApplyInfoMapper.removeBackApplyDetails(tmTask.getCode()); int detailsRes = mapper.deleteApplyDetailsByTaskId(taskId);
int recordRes = mapper.deleteRecordByTaskId(taskId);
int partRes = mapper.deletePartByTaskId(taskId);
int costRes = mapper.deleteCostByTaskId(taskId);
} else { } else {
res="定损任务:" + taskId + "没有前置任务,不能驳回"; throw new ServiceException("定损任务没有前置任务,不能驳回");
throw new ServiceException("定损任务:" + taskId + "没有前置任务,不能驳回");
} }
} else { } else {
res="定损任务:" + taskId + "有已定损数据,不能驳回"; res="此任务已定损完成,不可驳回";
throw new ServiceException("定损任务:" + taskId + "有已定损数据,不能驳回"); return AjaxResult.error(res);
}
}
} else if (!CollectionUtils.isEmpty(bean.getIds())) {
RepairApplyDetails repairApplyDetails = null;
for (Long id : bean.getIds()) {
// 查询明细详情
repairApplyDetails = mapper.selectRepairApplyDetailsById(id);
if (repairApplyDetails != null) {
if (repairApplyDetails.getMaId()!=null){
machineMapper.updateStatus(repairApplyDetails.getMaId(), MaMachineStatusEnum.IN_USE.getStatus());
}
}
//驳回后直接清除该条定损记录
mapper.delDetailsById(id);
mapper.delRecord(repairApplyDetails);
mapper.delPart(repairApplyDetails);
mapper.delCost(repairApplyDetails);
// 更新结算信息表
int result = sltAgreementInfoMapper.backInUseNum(repairApplyDetails);
if (result < 1) {
throw new ServiceException("定损驳回失败,请联系管理员");
}
} }
} }
} catch (final DataAccessException e) { } catch (final DataAccessException e) {
log.error("定损任务驳回",e.getMessage()); log.error("定损任务驳回",e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
if (!"".equals(res)){ return AjaxResult.error("定损任务驳回失败");
return AjaxResult.error(res);
} else {
return AjaxResult.error("驳回失败");
}
} }
return AjaxResult.success("执行完成"); return AjaxResult.success("执行完成");
} }

View File

@ -37,6 +37,26 @@
<result property="splitType" column="split_type" /> <result property="splitType" column="split_type" />
</resultMap> </resultMap>
<resultMap type="com.bonus.material.repair.domain.RepairApplyDetails" id="RepairApplyDetailsResult">
<result property="id" column="id" />
<result property="taskId" column="task_id" />
<result property="maId" column="ma_id" />
<result property="typeId" column="type_id" />
<result property="repairNum" column="repair_num" />
<result property="repairedNum" column="repaired_num" />
<result property="scrapNum" column="scrap_num" />
<result property="status" column="status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="companyId" column="company_id" />
<result property="backId" column="back_id" />
<result property="repairer" column="repairer" />
<result property="preTaskId" column="pre_task_id" />
</resultMap>
<sql id="selectTmTaskVo"> <sql id="selectTmTaskVo">
select task_id, pre_task_id, task_type, task_status, code, create_by, create_time, select task_id, pre_task_id, task_type, task_status, code, create_by, create_time,
update_by, update_time, remark, company_id, month_order update_by, update_time, remark, company_id, month_order
@ -192,11 +212,13 @@
update_time = NOW() update_time = NOW()
where task_id = #{taskId} where task_id = #{taskId}
</update> </update>
<update id="updateIsDs"> <update id="updateIsDs">
update repair_apply_details update repair_apply_details
set is_ds = 0 set is_ds = 0
where task_id = #{taskId} where task_id = #{taskId}
</update> </update>
<update id="updateStatus"> <update id="updateStatus">
update repair_apply_details update repair_apply_details
set status = 1 set status = 1
@ -204,6 +226,43 @@
and is_ds = 1 and is_ds = 1
</update> </update>
<delete id="deleteTask">
delete from tm_task where task_id = #{taskId}
</delete>
<delete id="deleteApplyDetailsByTaskId">
delete from repair_apply_details where task_id = #{taskId}
</delete>
<delete id="deleteRecordByTaskId">
delete from repair_apply_record where task_id = #{taskId}
</delete>
<delete id="deletePartByTaskId">
delete from repair_part_details where task_id = #{taskId}
</delete>
<delete id="deleteCostByTaskId">
delete from repair_cost where task_id = #{taskId}
</delete>
<delete id="delDetailsById">
delete from repair_apply_details where id = #{id}
</delete>
<delete id="delRecord">
delete from repair_apply_record where task_id = #{taskId} and type_id = #{typeId}
<if test="maId != null">
and ma_id = #{maId}
</if>
</delete>
<delete id="delPart">
delete from repair_part_details where task_id = #{taskId} and type_id = #{typeId}
<if test="maId != null">
and ma_id = #{maId}
</if>
</delete>
<delete id="delCost">
delete from repair_cost where task_id = #{taskId} and type_id = #{typeId}
<if test="maId != null">
and ma_id = #{maId}
</if>
</delete>
<select id="getLossAssessmentList" resultType="com.bonus.material.repair.domain.RepairTask"> <select id="getLossAssessmentList" resultType="com.bonus.material.repair.domain.RepairTask">
SELECT SELECT
rd.task_id as taskId, rd.task_id as taskId,
@ -440,6 +499,36 @@
mm.ma_code, mm.ma_code,
mpt2.pa_id mpt2.pa_id
</select> </select>
<select id="selectTaskStatus" resultType="java.lang.Integer">
SELECT task_status as taskStatus
FROM tm_task
WHERE task_id = #{taskId}
</select>
<select id="selectRepairApplyDetailsById" parameterType="Long" resultMap="RepairApplyDetailsResult">
SELECT
rad.id,
rad.task_id,
rad.ma_id,
rad.type_id,
rad.repair_num,
rad.repaired_num,
rad.scrap_num,
rad.STATUS,
rad.create_by,
rad.create_time,
rad.update_by,
rad.update_time,
rad.remark,
rad.company_id,
rad.back_id,
rad.repairer,
tt.pre_task_id
FROM
repair_apply_details rad
LEFT JOIN tm_task tt on tt.task_id=rad.task_id
WHERE
id = #{id}
</select>
</mapper> </mapper>