From 3839c385197104b82b308b807fd4eb3aac04a921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=8A=E9=A3=9E?= Date: Fri, 12 Sep 2025 11:21:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E4=BF=AE=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rpRepairFormProjectDispatchController.java | 11 +++++ .../IErpRepairFormProjectDispatchService.java | 5 +++ ...pRepairFormProjectDispatchServiceImpl.java | 41 ++++++++++++++++++- .../api/business/repairFormProjectDispatch.js | 10 +++++ .../repairFormProjectDispatch/index.vue | 32 ++++++++++----- 5 files changed, 88 insertions(+), 11 deletions(-) diff --git a/maintain-business/src/main/java/com/maintain/business/controller/ErpRepairFormProjectDispatchController.java b/maintain-business/src/main/java/com/maintain/business/controller/ErpRepairFormProjectDispatchController.java index 6872890..38cd003 100644 --- a/maintain-business/src/main/java/com/maintain/business/controller/ErpRepairFormProjectDispatchController.java +++ b/maintain-business/src/main/java/com/maintain/business/controller/ErpRepairFormProjectDispatchController.java @@ -103,6 +103,17 @@ public class ErpRepairFormProjectDispatchController extends BaseController { return toAjax(iErpRepairFormProjectDispatchService.updateByBo(bo)); } + /** + * 修改报修单-报修项目-派工 + */ + @SaCheckPermission("business:repairFormProjectDispatch:edit") + @Log(title = "报修单-报修项目-派工", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/batch") + public R edit(@Validated(EditGroup.class) @RequestBody List bo) { + return toAjax(iErpRepairFormProjectDispatchService.updateBatchByBo(bo)); + } + /** * 删除报修单-报修项目-派工 * diff --git a/maintain-business/src/main/java/com/maintain/business/service/IErpRepairFormProjectDispatchService.java b/maintain-business/src/main/java/com/maintain/business/service/IErpRepairFormProjectDispatchService.java index 69be33c..172b1ac 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/IErpRepairFormProjectDispatchService.java +++ b/maintain-business/src/main/java/com/maintain/business/service/IErpRepairFormProjectDispatchService.java @@ -47,6 +47,11 @@ public interface IErpRepairFormProjectDispatchService { */ Boolean updateByBo(ErpRepairFormProjectDispatchBo bo); + /** + * 修改报修单-报修项目-派工 + */ + Boolean updateBatchByBo(List boList); + /** * 校验并批量删除报修单-报修项目-派工信息 */ diff --git a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormProjectDispatchServiceImpl.java b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormProjectDispatchServiceImpl.java index 5768cc2..ed3d88c 100644 --- a/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormProjectDispatchServiceImpl.java +++ b/maintain-business/src/main/java/com/maintain/business/service/impl/ErpRepairFormProjectDispatchServiceImpl.java @@ -1,6 +1,7 @@ package com.maintain.business.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.maintain.business.domain.ErpRepairFormProject; import com.maintain.business.domain.bo.ErpRepairFormProjectDispatchBatchBo; import com.maintain.business.domain.vo.ErpUserVo; @@ -158,12 +159,50 @@ public class ErpRepairFormProjectDispatchServiceImpl implements IErpRepairFormPr * 修改报修单-报修项目-派工 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(ErpRepairFormProjectDispatchBo bo) { ErpRepairFormProjectDispatch projectDispatch = baseMapper.selectById(bo.getId()); projectDispatch.setDispatchManHour(bo.getDispatchManHour()); projectDispatch.setActualManHour(bo.getDispatchManHour().subtract(bo.getDeductManHour())); projectDispatch.setDeductManHour(bo.getDeductManHour()); - return baseMapper.updateById(projectDispatch) > 0; + boolean flag = baseMapper.updateById(projectDispatch) > 0; + + List formProjectDispatches = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(ErpRepairFormProjectDispatch::getRepairFormProjectId, projectDispatch.getRepairFormProjectId())); + //计算总工时 + BigDecimal reduce = formProjectDispatches.stream().map(ErpRepairFormProjectDispatch::getActualManHour).reduce(BigDecimal.ZERO, BigDecimal::add); + ErpRepairFormProject project = new ErpRepairFormProject(); + project.setId(projectDispatch.getRepairFormProjectId()); + project.setActualTime(reduce); + projectMapper.updateById(project); + + return flag; + } + + @Override + public Boolean updateBatchByBo(List boList) { + if (CollUtil.isEmpty(boList)){ + return false; + } + + List dispatchList = boList.stream().map(bo -> { + ErpRepairFormProjectDispatch projectDispatch = new ErpRepairFormProjectDispatch(); + projectDispatch.setId(bo.getId()); + projectDispatch.setDispatchManHour(bo.getDispatchManHour()); + projectDispatch.setActualManHour(bo.getDispatchManHour().subtract(bo.getDeductManHour())); + projectDispatch.setDeductManHour(bo.getDeductManHour()); + return projectDispatch; + }).collect(Collectors.toList()); + baseMapper.updateBatchById(dispatchList); + + //计算总工时 + BigDecimal reduce = dispatchList.stream().map(ErpRepairFormProjectDispatch::getActualManHour).reduce(BigDecimal.ZERO, BigDecimal::add); + ErpRepairFormProject project = new ErpRepairFormProject(); + project.setId(boList.get(0).getRepairFormProjectId()); + project.setActualTime(reduce); + projectMapper.updateById(project); + + return true; } /** diff --git a/maintain-ui/src/api/business/repairFormProjectDispatch.js b/maintain-ui/src/api/business/repairFormProjectDispatch.js index ed1d692..bd47afc 100644 --- a/maintain-ui/src/api/business/repairFormProjectDispatch.js +++ b/maintain-ui/src/api/business/repairFormProjectDispatch.js @@ -44,6 +44,16 @@ export function updateRepairFormProjectDispatch(data) { }) } +// 批量修改报修单-报修项目-派工 +export function updateRepairFormProjectDispatchBatch(data) { + return request({ + url: '/business/repairFormProjectDispatch/batch', + method: 'put', + data: data + }) +} + + // 删除报修单-报修项目-派工 export function delRepairFormProjectDispatch(id) { return request({ diff --git a/maintain-ui/src/views/business/repairFormProjectDispatch/index.vue b/maintain-ui/src/views/business/repairFormProjectDispatch/index.vue index 68143d8..301e12b 100644 --- a/maintain-ui/src/views/business/repairFormProjectDispatch/index.vue +++ b/maintain-ui/src/views/business/repairFormProjectDispatch/index.vue @@ -90,7 +90,8 @@ import { delRepairFormProjectDispatch, addRepairFormProjectDispatch, updateRepairFormProjectDispatch, - addRepairFormProjectDispatchP + addRepairFormProjectDispatchP, + updateRepairFormProjectDispatchBatch } from '@/api/business/repairFormProjectDispatch' import user from "../user/index" @@ -205,7 +206,7 @@ export default { const totalDispatchManHour = this.repairFormProjectDispatchList.reduce((total, item) => { return total + (Number(item.dispatchManHour) || 0); }, 0); - return totalDispatchManHour !== Number(this.data.standardManHour); + return totalDispatchManHour.toFixed(1) !== Number(this.data.standardManHour).toFixed(1); } }, created() { @@ -291,7 +292,7 @@ export default { const totalDispatchManHour = this.repairFormProjectDispatchList.reduce((total, item) => { return total + (Number(item.dispatchManHour) || 0); }, 0); - return totalDispatchManHour === Number(this.data.standardManHour); + return totalDispatchManHour.toFixed(1) === Number(this.data.standardManHour).toFixed(1); }, /** 分配工时变化处理 */ handleDispatchManHourChange(row) { @@ -301,23 +302,34 @@ export default { }, 0); // 如果总分配工时不等于标准工时,显示提示 - if (this.data.standardManHour && totalDispatchManHour !== Number(this.data.standardManHour)) { - this.$message.warning(`总分配工时(${totalDispatchManHour})不等于项目标准工时(${this.data.standardManHour})`); + if (this.data.standardManHour && totalDispatchManHour.toFixed(1) !== Number(this.data.standardManHour).toFixed(1)) { + this.$message.warning(`总分配工时(${totalDispatchManHour.toFixed(1)})不等于项目标准工时(${Number(this.data.standardManHour).toFixed(1)})`); return false; } // 更新实际工时 row.actualManHour = (Number(row.dispatchManHour) - Number(row.deductManHour)).toFixed(1); - // 提交更新 - this.submitForm(row); + // 提交更新所有数据 + this.submitAllForm(); }, - /** 提交按钮 */ + /** 扣罚工时变化处理 */ submitForm(row) { + // 更新实际工时 + row.actualManHour = (Number(row.dispatchManHour) - Number(row.deductManHour)).toFixed(1); + + // 提交更新所有数据 + this.submitAllForm(); + }, + /** 提交所有数据 */ + submitAllForm() { this.buttonLoading = true; - updateRepairFormProjectDispatch(row).then(response => { + // 使用批量更新接口提交所有行数据 + updateRepairFormProjectDispatchBatch(this.repairFormProjectDispatchList).then(response => { this.$modal.msgSuccess("修改成功"); - this.open = false; this.getList(); + }).catch(error => { + console.error(error); + this.$modal.msgError("修改失败"); }).finally(() => { this.buttonLoading = false; }); -- 2.22.0