diff --git a/admin/src/api/pmmaintenanceorder.js b/admin/src/api/pmmaintenanceorder.js index 08799b5..fbe1929 100644 --- a/admin/src/api/pmmaintenanceorder.js +++ b/admin/src/api/pmmaintenanceorder.js @@ -61,3 +61,15 @@ export function pmmaintenanceorderListApi(params) { }) } +/** + * pmmaintenanceorder更新状态和备注 + * @param data + */ +export function pmmaintenanceorderUpdateStatusAndRemarkApi(data) { + return request({ + url: `autogencode/pmmaintenanceorder/updateStatusAndRemark`, + method: 'POST', + data + }) +} + diff --git a/admin/src/views/cm/warehouse/DispatchList.vue b/admin/src/views/cm/warehouse/DispatchList.vue index c2a85f3..aeaeeb8 100644 --- a/admin/src/views/cm/warehouse/DispatchList.vue +++ b/admin/src/views/cm/warehouse/DispatchList.vue @@ -1,8 +1,21 @@ - - 新增货架 - + + + + + + + + + + 查询 + 重置 + + 新增货架 + + + { this.dataListLoading = false diff --git a/admin/src/views/fm/bill/charge/index.vue b/admin/src/views/fm/bill/charge/index.vue index eb8196d..468ab3c 100644 --- a/admin/src/views/fm/bill/charge/index.vue +++ b/admin/src/views/fm/bill/charge/index.vue @@ -32,7 +32,7 @@ 查询 重置 - 新增数据 + 新增费用 批量删除 diff --git a/admin/src/views/fm/cash/index.vue b/admin/src/views/fm/cash/index.vue index f8a1144..b5b6890 100644 --- a/admin/src/views/fm/cash/index.vue +++ b/admin/src/views/fm/cash/index.vue @@ -47,7 +47,7 @@ 查询 重置 - 新增数据 + 新增日记账 批量删除 diff --git a/admin/src/views/pm/building/pmbuilding-add-and-update.vue b/admin/src/views/pm/building/pmbuilding-add-and-update.vue index 7c9a227..492743e 100644 --- a/admin/src/views/pm/building/pmbuilding-add-and-update.vue +++ b/admin/src/views/pm/building/pmbuilding-add-and-update.vue @@ -102,7 +102,7 @@ :default-building-id="dataForm.id" :default-project-id="dataForm.projectId" @close="houseVisible = false" - @refresh-data-list="refreshHouseList" + @refreshDataList="refreshHouseList" @add-house-to-list="addHouseToList" /> diff --git a/admin/src/views/pm/facility/maintenance/plan/index.vue b/admin/src/views/pm/facility/maintenance/plan/index.vue index 73081fc..952347c 100644 --- a/admin/src/views/pm/facility/maintenance/plan/index.vue +++ b/admin/src/views/pm/facility/maintenance/plan/index.vue @@ -53,6 +53,7 @@ border v-loading="dataListLoading" @selection-change="selectionChangeHandle" + :row-key="row => row.id" style="width: 100%;"> + + + + + + + + + + + + + + + + 查询 + 重置 + 新增维保记录 + + + + + + + + + + + {{ recordScope.row.costAmount || 0 }} 元 + + + + + + + + + + + + {{ '修改' }} + {{ '删除' }} + + + + + + {{ '修改' }} @@ -149,17 +208,22 @@ + + + diff --git a/admin/src/views/pm/facility/maintenance/record/pmfacilitymaintenacerecord-add-and-update.vue b/admin/src/views/pm/facility/maintenance/record/pmfacilitymaintenacerecord-add-and-update.vue index c5414f0..b273331 100644 --- a/admin/src/views/pm/facility/maintenance/record/pmfacilitymaintenacerecord-add-and-update.vue +++ b/admin/src/views/pm/facility/maintenance/record/pmfacilitymaintenacerecord-add-and-update.vue @@ -46,12 +46,40 @@ - + + + + - + + + + + + @@ -87,7 +115,14 @@ - + + + + @@ -104,11 +139,14 @@ - - - - - + + + + + @@ -120,14 +158,23 @@ diff --git a/admin/src/views/pm/pmowner/index.vue b/admin/src/views/pm/pmowner/index.vue index f8e6219..040658e 100644 --- a/admin/src/views/pm/pmowner/index.vue +++ b/admin/src/views/pm/pmowner/index.vue @@ -34,7 +34,7 @@ @click="addOrUpdateHandle()">新增业主 批量删除 + :disabled="dataListSelections.length <= 0">批量移除 @@ -75,7 +75,7 @@ {{ '修改' }} 删除 + @click="deleteHandle(scope.row.id)" style="color: #f56c6c;">移除 @@ -207,31 +207,31 @@ export default { this.$refs.addOrUpdate.init(id) }) }, - // 删除处理(支持单个删除和批量删除) + // 移除处理(支持单个移除和批量移除) deleteHandle(id) { let ids = [] let idText = '' - // 如果传入了单个id参数,则为单个删除 + // 如果传入了单个id参数,则为单个移除 if (id) { ids = [id] idText = id } else { - // 否则为批量删除 + // 否则为批量移除 ids = this.dataListSelections.map(item => { return item.id }) idText = ids.join(',') } - this.$confirm(`确定进行删除操作?`, '提示', { + this.$confirm(`确定进行移除操作?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { - // 调用批量删除API + // 调用批量移除API api.pmownerDeleteApi(ids).then(res => { - this.$message.success('删除成功') + this.$message.success('移除成功') this.getDataList() }) }) diff --git a/admin/src/views/pm/pmowner/record/index.vue b/admin/src/views/pm/pmowner/record/index.vue index de07393..4b38969 100644 --- a/admin/src/views/pm/pmowner/record/index.vue +++ b/admin/src/views/pm/pmowner/record/index.vue @@ -238,7 +238,7 @@ export default { if (id) { pmHouseApi.pmhouseFreeApi([id]).then(() => { this.$message.success('删除成功') - this.rentRecords.splice(index, 1) + this.getRentRecords() // 删除后重新加载数据 }).catch(() => { this.$message.error('删除失败') }) diff --git a/admin/src/views/pm/project/DispatchList.vue b/admin/src/views/pm/project/DispatchList.vue index aa1d418..a46b19f 100644 --- a/admin/src/views/pm/project/DispatchList.vue +++ b/admin/src/views/pm/project/DispatchList.vue @@ -1,8 +1,28 @@ - - 新增楼栋 - + + + + + + + + + + + + + 查询 + 重置 + + 新增楼栋 + + + - - 新增房屋 - @@ -108,6 +125,7 @@ 查询 重置 + 新增房屋 { this.dataListLoading = false this.dataList = res.list || [] @@ -303,6 +326,16 @@ this.dataListLoading = false }) }, + + // 重置表单 + resetForm() { + this.dataForm = { + buildingNo: '', + buildingType: '' + } + this.pageIndex = 1 + this.getDataList() + }, sizeChangeHandle (val) { this.pageSize = val this.pageIndex = 1 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java index 5f7ce1d..d1bb0a9 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java @@ -15,10 +15,12 @@ import com.zbkj.common.response.CommonResult; import com.zbkj.common.page.CommonPage; import com.zbkj.common.exception.ExceptionCodeEnum; import com.zbkj.modules.autogencode.entity.*; +import com.zbkj.modules.autogencode.entity.CkStockChange; import com.zbkj.modules.autogencode.service.CkBillCargoService; import com.zbkj.modules.autogencode.service.CkBillStockService; import com.zbkj.modules.autogencode.service.CkCargoStockService; import com.zbkj.modules.autogencode.service.CkBillCargoMenuRelService; +import com.zbkj.modules.autogencode.service.CkStockChangeService; import com.zbkj.modules.autogencode.service.PmDailyMenuDtlService; import com.zbkj.modules.autogencode.service.PmDailyMenuService; import com.zbkj.service.service.SystemAttachmentService; @@ -67,6 +69,9 @@ public class CkBillController { @Autowired private PmDailyMenuService pmDailyMenuService; + + @Autowired + private CkStockChangeService ckStockChangeService; /** * 条件设置 @@ -438,10 +443,30 @@ public class CkBillController { */ @RequestMapping(value = "/delete", method = RequestMethod.POST) public CommonResult delete(@RequestBody Long[] ids){ - if (ckBillService.removeByIds(Arrays.asList(ids))) { - return CommonResult.success(); + for (int i = 0; i < ids.length; i++) { + Long id = ids[i]; + CkBill ckBill = ckBillService.getById(id); + if (ckBill.getBillStatus().equals("1")) { + return CommonResult.failed("此单据已经提交,不允许删除"); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(CkBillCargo::getId); + wrapper.eq(CkBillCargo::getBillId,id); + List list = ckBillCargoService.listObjs(wrapper); + ckBillCargoService.remove(wrapper); +// ckBillCargoService.removeBatchByIds(list); + //删除入库记录 + ckStockChangeService.remove(new LambdaQueryWrapper().eq(CkStockChange::getBillId,id)); + //单据明细下出入库信息 + if (!list.isEmpty()) { + LambdaQueryWrapper stockWapper = new LambdaQueryWrapper<>(); + stockWapper.in(CkBillStock::getBillCargoId,list); + ckBillStockService.remove(stockWapper); + } + ckBillService.removeById(id); } - return CommonResult.failed(); + + return CommonResult.success(); } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmCustQualifyController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmCustQualifyController.java index 8364b02..8ab6d89 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmCustQualifyController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmCustQualifyController.java @@ -19,7 +19,9 @@ import org.springframework.security.access.prepost.PreAuthorize; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zbkj.modules.autogencode.entity.CmCustQualify; +import com.zbkj.modules.autogencode.entity.CmCustQualifyFile; import com.zbkj.modules.autogencode.service.CmCustQualifyService; +import com.zbkj.modules.autogencode.service.CmCustQualifyFileService; @@ -32,6 +34,9 @@ import com.zbkj.modules.autogencode.service.CmCustQualifyService; public class CmCustQualifyController { @Autowired private CmCustQualifyService cmCustQualifyService; + + @Autowired + private CmCustQualifyFileService cmCustQualifyFileService; @@ -174,6 +179,17 @@ public class CmCustQualifyController { */ @RequestMapping(value = "/delete", method = RequestMethod.POST) public CommonResult delete(@RequestBody Long[] ids){ + // 检查是否有已经提交的资质文件 + for (Long id : ids) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CmCustQualifyFile::getQualifyId, id); + queryWrapper.eq(CmCustQualifyFile::getDelFlag, "0"); + long count = cmCustQualifyFileService.count(queryWrapper); + if (count > 0) { + return CommonResult.failed("删除失败,该资质下存在已经提交的资质文件,请先删除这些文件"); + } + } + if (cmCustQualifyService.removeByIds(Arrays.asList(ids))) { return CommonResult.success(); } @@ -181,3 +197,7 @@ public class CmCustQualifyController { } } + + + + diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmShelfController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmShelfController.java index c1a49c9..6d537bb 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmShelfController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmShelfController.java @@ -60,12 +60,12 @@ public class CmShelfController { // 货架代码 if (StrUtil.isNotBlank(request.getShelfCode())) { - queryWrapper.eq(CmShelf::getShelfCode, request.getShelfCode()); + queryWrapper.like(CmShelf::getShelfCode, request.getShelfCode()); } // 货架名称 if (StrUtil.isNotBlank(request.getShelfName())) { - queryWrapper.eq(CmShelf::getShelfName, request.getShelfName()); + queryWrapper.like(CmShelf::getShelfName, request.getShelfName()); } // 归属仓库ID diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmBuildingController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmBuildingController.java index bc106f2..9b33121 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmBuildingController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmBuildingController.java @@ -59,7 +59,7 @@ public class PmBuildingController { // 楼栋编号 if (StrUtil.isNotBlank(request.getBuildingNo())) { - queryWrapper.eq(PmBuilding::getBuildingNo, request.getBuildingNo()); + queryWrapper.like(PmBuilding::getBuildingNo, request.getBuildingNo()); } // 总层数 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmCheckInController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmCheckInController.java index bae4c10..f5936be 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmCheckInController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmCheckInController.java @@ -673,6 +673,24 @@ public class PmCheckInController { */ @RequestMapping(value = "/delete", method = RequestMethod.POST) public CommonResult delete(@RequestBody Long[] ids){ + // 检查是否有对应的退房信息 + List checkInList = pmCheckInService.listByIds(Arrays.asList(ids)); + List tenantHouseIds = new ArrayList<>(); + for (PmCheckIn checkIn : checkInList) { + if (checkIn.getTenantHouseId() != null) { + tenantHouseIds.add(checkIn.getTenantHouseId()); + } + } + + if (!tenantHouseIds.isEmpty()) { + LambdaQueryWrapper checkoutQuery = new LambdaQueryWrapper<>(); + checkoutQuery.in(PmCheckOut::getTenantHouseId, tenantHouseIds); + long checkoutCount = pmCheckOutService.count(checkoutQuery); + if (checkoutCount > 0) { + return CommonResult.failed("删除失败,该入住记录下存在对应的退房信息,请先删除对应的退房信息"); + } + } + if (pmCheckInService.removeByIds(Arrays.asList(ids))) { return CommonResult.success(); } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmComplaintSuggestionController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmComplaintSuggestionController.java index f4087ea..19bf797 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmComplaintSuggestionController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmComplaintSuggestionController.java @@ -575,6 +575,7 @@ public class PmComplaintSuggestionController { */ @RequestMapping(value = "/delete", method = RequestMethod.POST) public CommonResult delete(@RequestBody Long[] ids){ + if (pmComplaintSuggestionService.removeByIds(Arrays.asList(ids))) { return CommonResult.success(); } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmFacilityMaintenaceRecordController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmFacilityMaintenaceRecordController.java index 42576e0..3ba6f68 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmFacilityMaintenaceRecordController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmFacilityMaintenaceRecordController.java @@ -1,13 +1,22 @@ package com.zbkj.modules.autogencode.controller; import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.Random; +import java.util.stream.Collectors; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zbkj.common.model.system.SysDept; +import com.zbkj.common.model.system.SystemAttachment; +import com.zbkj.common.model.user.User; import com.zbkj.common.request.PageParamRequest; import com.zbkj.common.response.CommonResult; import com.zbkj.common.page.CommonPage; +import com.zbkj.service.service.SysDeptService; +import com.zbkj.service.service.SystemAttachmentService; +import com.zbkj.service.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -32,6 +41,15 @@ import com.zbkj.modules.autogencode.service.PmFacilityMaintenaceRecordService; public class PmFacilityMaintenaceRecordController { @Autowired private PmFacilityMaintenaceRecordService pmFacilityMaintenaceRecordService; + + @Autowired + private SysDeptService sysDeptService; + + @Autowired + private UserService userService; + + @Autowired + private SystemAttachmentService systemAttachmentService; @@ -90,6 +108,14 @@ public class PmFacilityMaintenaceRecordController { if (request.getExecTime() != null) { queryWrapper.eq(PmFacilityMaintenaceRecord::getExecTime, request.getExecTime()); } + + // 执行时间范围查询 + if (request.getExecTimeStart() != null) { + queryWrapper.ge(PmFacilityMaintenaceRecord::getExecTime, request.getExecTimeStart()); + } + if (request.getExecTimeEnd() != null) { + queryWrapper.le(PmFacilityMaintenaceRecord::getExecTime, request.getExecTimeEnd()); + } // 实际维保内容 if (StrUtil.isNotBlank(request.getContent())) { @@ -160,6 +186,18 @@ public class PmFacilityMaintenaceRecordController { if (StrUtil.isNotBlank(request.getTenantId())) { queryWrapper.eq(PmFacilityMaintenaceRecord::getTenantId, request.getTenantId()); } + + // 执行人名称(虚拟字段,通过子查询关联用户表) + if (StrUtil.isNotBlank(request.getExecutorName())) { + queryWrapper.inSql(PmFacilityMaintenaceRecord::getExecutorId, + "select uid from eb_user where real_name like '%" + request.getExecutorName() + "%'"); + } + + // 执行部门名称(虚拟字段,通过子查询关联部门表) + if (StrUtil.isNotBlank(request.getExecutorDeptName())) { + queryWrapper.inSql(PmFacilityMaintenaceRecord::getExecutorDept, + "select dept_id from sys_dept where dept_name like '%" + request.getExecutorDeptName() + "%'"); + } } @@ -176,8 +214,44 @@ public class PmFacilityMaintenaceRecordController { // 应用搜索条件 condition(queryWrapper, request); + + + List pmFacilityMaintenaceRecords = pmFacilityMaintenaceRecordService.pageList(queryWrapper, pageParamRequest); - CommonPage page = CommonPage.restPage(pmFacilityMaintenaceRecordService.pageList(queryWrapper, pageParamRequest)); + // 查询出用户表和部门表,然后做成map,之后为pmFacilityMaintenaceRecords赋值,执行部门名称和执行人名称,也就是虚拟字段 + if (pmFacilityMaintenaceRecords != null && !pmFacilityMaintenaceRecords.isEmpty()) { + // 查询用户表,做成map + LambdaQueryWrapper userQueryWrapper = new LambdaQueryWrapper<>(); + List userList = userService.list(userQueryWrapper); + Map userMap = userList.stream() + .collect(Collectors.toMap( + user -> Long.valueOf(user.getUid()), + User::getRealName, + (existing, replacement) -> existing + )); + + // 查询部门表,做成map + LambdaQueryWrapper deptQueryWrapper = new LambdaQueryWrapper<>(); + List deptList = sysDeptService.list(deptQueryWrapper); + Map deptMap = deptList.stream() + .collect(Collectors.toMap( + SysDept::getDeptId, + SysDept::getDeptName, + (existing, replacement) -> existing + )); + + // 为pmFacilityMaintenaceRecords赋值执行部门名称和执行人名称 + for (PmFacilityMaintenaceRecord record : pmFacilityMaintenaceRecords) { + if (userMap != null && record.getExecutorId() != null) { + record.setExecutorName(userMap.get(record.getExecutorId())); + } + if (deptMap != null && record.getExecutorDept() != null) { + record.setExecutorDeptName(deptMap.get(record.getExecutorDept())); + } + } + } + + CommonPage page = CommonPage.restPage(pmFacilityMaintenaceRecords); return CommonResult.success(page); } @@ -188,6 +262,9 @@ public class PmFacilityMaintenaceRecordController { @RequestMapping(value = "/info/{id}", method = RequestMethod.GET) public CommonResult info(@PathVariable("id") Long id){ PmFacilityMaintenaceRecord pmFacilityMaintenaceRecord = pmFacilityMaintenaceRecordService.getById(id); + + // 设置文件列表 + setFile(pmFacilityMaintenaceRecord); return CommonResult.success(pmFacilityMaintenaceRecord); } @@ -197,6 +274,11 @@ public class PmFacilityMaintenaceRecordController { */ @RequestMapping(value = "/save", method = RequestMethod.POST) public CommonResult save(@RequestBody PmFacilityMaintenaceRecord pmFacilityMaintenaceRecord){ + // 处理文件保存 + if (pmFacilityMaintenaceRecord.getFiles() != null) { + updateFile(pmFacilityMaintenaceRecord); + } + if (pmFacilityMaintenaceRecordService.save(pmFacilityMaintenaceRecord)) { return CommonResult.success(); } @@ -208,11 +290,43 @@ public class PmFacilityMaintenaceRecordController { */ @RequestMapping(value = "/update", method = RequestMethod.POST) public CommonResult update(@RequestBody PmFacilityMaintenaceRecord pmFacilityMaintenaceRecord){ + // 处理文件保存 + if (pmFacilityMaintenaceRecord.getFiles() != null) { + updateFile(pmFacilityMaintenaceRecord); + } + if (pmFacilityMaintenaceRecordService.updateById(pmFacilityMaintenaceRecord)) { return CommonResult.success(); } return CommonResult.failed(); } + + /** + * 更新文件 + */ + private void updateFile(PmFacilityMaintenaceRecord pmFacilityMaintenaceRecord) { + Long newId = System.currentTimeMillis() + new Random().nextInt(1000); + List files = pmFacilityMaintenaceRecord.getFiles(); + if (files != null && !files.isEmpty()) { + for (SystemAttachment attachment : files) { + attachment.setFileId(String.valueOf(newId)); + } + systemAttachmentService.updateBatchById(files); + pmFacilityMaintenaceRecord.setFileId(newId); + } + } + + /** + * 设置文件列表 + */ + private void setFile(PmFacilityMaintenaceRecord pmFacilityMaintenaceRecord) { + Long fileId = pmFacilityMaintenaceRecord.getFileId(); + if (fileId != null) { + List list = systemAttachmentService.list(new LambdaQueryWrapper() + .eq(SystemAttachment::getFileId, fileId)); + pmFacilityMaintenaceRecord.setFiles(list); + } + } /** * 删除:根据id集合 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmHouseController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmHouseController.java index 8d0ac19..ce72e2e 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmHouseController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmHouseController.java @@ -353,27 +353,36 @@ public class PmHouseController { } pmHouseService.updateBatchById(list); - // 对应的PmTenantHouse ,还有 PmOwnerHouseRel 删除掉 + // 对应的PmOwnerHouseRel 删除掉 // 查询与这些房屋相关的PmOwnerHouseRel记录 List rels = pmOwnerHouseRelService.list(new LambdaQueryWrapper() .in(PmOwnerHouseRel::getHouseId, ids)); if (rels != null && !rels.isEmpty()) { - // 获取所有关联的tenantHouseId - List tenantHouseIds = rels.stream() - .map(PmOwnerHouseRel::getTenantHouseId) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - // 删除PmOwnerHouseRel记录 pmOwnerHouseRelService.removeByIds(rels.stream() .map(PmOwnerHouseRel::getId) .filter(Objects::nonNull) .collect(Collectors.toList())); - // 删除对应的PmTenantHouse记录 - if (!tenantHouseIds.isEmpty()) { - pmTenantHouseService.removeByIds(tenantHouseIds); + // 检查每个tenantHouseId是否还有其他关联的PmOwnerHouseRel记录 + // 如果没有,则删除对应的PmTenantHouse记录 + List tenantHouseIds = rels.stream() + .map(PmOwnerHouseRel::getTenantHouseId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + for (Long tenantHouseId : tenantHouseIds) { + // 查询该tenantHouseId是否还有其他关联的PmOwnerHouseRel记录 + int count = pmOwnerHouseRelService.count(new LambdaQueryWrapper() + .eq(PmOwnerHouseRel::getTenantHouseId, tenantHouseId) + .eq(PmOwnerHouseRel::getDelFlag, "0")); + + // 如果没有其他关联记录,则删除PmTenantHouse记录 + if (count == 0) { + pmTenantHouseService.removeById(tenantHouseId); + } } } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmMaintenanceOrderController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmMaintenanceOrderController.java index 8b36777..919a7a2 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmMaintenanceOrderController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmMaintenanceOrderController.java @@ -4,6 +4,8 @@ import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.ArrayList; +import java.util.HashMap; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -196,23 +198,71 @@ public class PmMaintenanceOrderController { CommonPage page = CommonPage.restPage(pmMaintenanceOrderService.pageList(queryWrapper, pageParamRequest)); - // 翻译业主名称和房屋名称 + // 收集所有需要查询的ID + List ownerIds = new ArrayList<>(); + List tenantIds = new ArrayList<>(); + List houseIds = new ArrayList<>(); + + for (PmMaintenanceOrder item : page.getList()) { + // 收集业主/租户ID + if (item.getOwnerId() != null) { + if ("1".equals(item.getOwnerType())) { + ownerIds.add(item.getOwnerId()); + } else if ("2".equals(item.getOwnerType())) { + tenantIds.add(item.getOwnerId()); + } + } + + // 收集房屋ID + if (item.getHouseId() != null) { + houseIds.add(item.getHouseId()); + } + } + + // 批量查询并构建map + Map ownerMap = new HashMap<>(); + if (!ownerIds.isEmpty()) { + List owners = pmOwnerService.listByIds(ownerIds); + for (PmOwner owner : owners) { + ownerMap.put(owner.getId(), owner); + } + } + + Map tenantMap = new HashMap<>(); + if (!tenantIds.isEmpty()) { + List tenants = pmTenantService.listByIds(tenantIds); + for (PmTenant tenant : tenants) { + tenantMap.put(tenant.getId(), tenant); + } + } + + Map houseMap = new HashMap<>(); + if (!houseIds.isEmpty()) { + List houses = pmHouseService.listByIds(houseIds); + for (PmHouse house : houses) { + houseMap.put(house.getId(), house); + } + } + + // 翻译业主名称、房屋名称并设置文件信息 for (PmMaintenanceOrder item : page.getList()) { + // 设置文件信息 + setFile(item); // 翻译业主名称 if (item.getOwnerId() != null) { if ("1".equals(item.getOwnerType())) { - PmOwner owner = pmOwnerService.getById(item.getOwnerId()); + PmOwner owner = ownerMap.get(item.getOwnerId()); item.setOwnerName(owner != null ? owner.getOwnerName() : ""); } else if ("2".equals(item.getOwnerType())) { - PmTenant tenant = pmTenantService.getById(item.getOwnerId()); + PmTenant tenant = tenantMap.get(item.getOwnerId()); item.setOwnerName(tenant != null ? tenant.getTenantName() : ""); } } // 翻译房屋名称 if (item.getHouseId() != null) { - PmHouse house = pmHouseService.getById(item.getHouseId()); + PmHouse house = houseMap.get(item.getHouseId()); if (house != null) { StringBuilder houseName = new StringBuilder(); if (house.getUnitNo() != null) { @@ -404,6 +454,46 @@ public class PmMaintenanceOrderController { } } + /** + * 修改状态和备注 + */ + @RequestMapping(value = "/updateStatusAndRemark", method = RequestMethod.POST) + public CommonResult updateStatusAndRemark(@RequestBody Map params) { + Long id = null; + Object idObj = params.get("id"); + if (idObj != null) { + if (idObj instanceof Number) { + id = ((Number) idObj).longValue(); + } else if (idObj instanceof String) { + try { + id = Long.parseLong((String) idObj); + } catch (NumberFormatException e) { + return CommonResult.failed("订单ID格式错误"); + } + } + } + String status = (String) params.get("status"); + String remark = (String) params.get("remark"); + + if (id == null) { + return CommonResult.failed("订单ID不能为空"); + } + + PmMaintenanceOrder pmMaintenanceOrder = pmMaintenanceOrderService.getById(id); + if (pmMaintenanceOrder == null) { + return CommonResult.failed("订单不存在"); + } + + // 只修改状态和备注 + pmMaintenanceOrder.setStatus(status); + pmMaintenanceOrder.setRemark(remark); + + if (pmMaintenanceOrderService.updateById(pmMaintenanceOrder)) { + return CommonResult.success(); + } + return CommonResult.failed(); + } + /** * 删除:根据id集合 */ diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmTenantController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmTenantController.java index bca8bc4..0bd256a 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmTenantController.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmTenantController.java @@ -3,6 +3,7 @@ package com.zbkj.modules.autogencode.controller; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.ArrayList; import java.util.stream.Collectors; import cn.hutool.core.util.StrUtil; @@ -290,7 +291,20 @@ public class PmTenantController { return CommonResult.failed("删除失败,该租户下存在关联的员工,请先处理相关员工"); } + // 获取租户对应的部门ID + List deptIds = new ArrayList<>(); + List tenants = pmTenantService.listByIds(Arrays.asList(ids)); + for (PmTenant tenant : tenants) { + if (tenant.getDeptId() != null) { + deptIds.add(tenant.getDeptId()); + } + } + if (pmTenantService.removeByIds(Arrays.asList(ids))) { + // 删除对应的SysDept + if (!deptIds.isEmpty()) { + sysDeptService.removeByIds(deptIds); + } return CommonResult.success(); } return CommonResult.failed(); diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmComplaintSuggestion.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmComplaintSuggestion.java index bfe7a56..d5336e2 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmComplaintSuggestion.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmComplaintSuggestion.java @@ -3,6 +3,8 @@ package com.zbkj.modules.autogencode.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -19,7 +21,8 @@ public class PmComplaintSuggestion implements Serializable { * id */ @ApiModelProperty(value = "id") - @TableId + @TableId + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** * 类型 diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmFacilityMaintenaceRecord.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmFacilityMaintenaceRecord.java index e61ad34..24de510 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmFacilityMaintenaceRecord.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmFacilityMaintenaceRecord.java @@ -1,14 +1,17 @@ package com.zbkj.modules.autogencode.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.zbkj.common.model.system.SystemAttachment; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; import java.io.Serializable; import java.util.Date; +import java.util.List; import lombok.Data; @@ -134,5 +137,35 @@ public class PmFacilityMaintenaceRecord implements Serializable { */ @ApiModelProperty(value = "租户ID") private String tenantId; + /** + * 执行人名称(虚拟字段) + */ + @ApiModelProperty(value = "执行人名称") + @TableField(exist = false) + private String executorName; + /** + * 执行部门名称(虚拟字段) + */ + @ApiModelProperty(value = "执行部门名称") + @TableField(exist = false) + private String executorDeptName; + /** + * 执行时间开始(查询用虚拟字段) + */ + @ApiModelProperty(value = "执行时间开始") + @TableField(exist = false) + private String execTimeStart; + /** + * 执行时间结束(查询用虚拟字段) + */ + @ApiModelProperty(value = "执行时间结束") + @TableField(exist = false) + private String execTimeEnd; + /** + * 附件列表(虚拟字段) + */ + @ApiModelProperty(value = "附件列表") + @TableField(exist = false) + private List files; } diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PubNoticeRel.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PubNoticeRel.java index f1b2cd5..f6b6414 100644 --- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PubNoticeRel.java +++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PubNoticeRel.java @@ -4,96 +4,97 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; - import java.io.Serializable; +import java.io.Serializable; import java.util.Date; + import lombok.Data; @Data @TableName("pub_notice_rel") public class PubNoticeRel implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** - * 通知关联ID - */ - @ApiModelProperty(value = "通知关联ID") - @TableId - private String relId; - /** - * 通知ID - */ - @ApiModelProperty(value = "通知ID") - private String noticeId; - /** - * 关联类型U用户D部门 - */ - @ApiModelProperty(value = "关联类型U用户D部门") - private String relType; - /** - * 通知人员 - */ - @ApiModelProperty(value = "通知人员") - private String userCode; - /** - * 是否已读 - */ - @ApiModelProperty(value = "是否已读") - private String isRead; - /** - * 阅读时间 - */ - @ApiModelProperty(value = "阅读时间") - private Date readTime; - /** - * 备注 - */ - @ApiModelProperty(value = "备注") - private String remark; - /** - * 部门ID - */ - @ApiModelProperty(value = "部门ID") - private String deptId; - /** - * 租户ID - */ - @ApiModelProperty(value = "租户ID") - private String tenantId; - /** - * 创建人 - */ - @ApiModelProperty(value = "创建人") - private String createBy; - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - /** - * 修改人 - */ - @ApiModelProperty(value = "修改人") - private String updateBy; - /** - * 修改时间 - */ - @ApiModelProperty(value = "修改时间") - private Date updateTime; - /** - * 更新时间戳 - */ - @ApiModelProperty(value = "更新时间戳") - private Date updatestamp; - /** - * 同步时间戳 - */ - @ApiModelProperty(value = "同步时间戳") - private Date syncstamp; - /** - * 删除标志 1=正常 0=已删除 - */ - @ApiModelProperty(value = "删除标志 1=正常 0=已删除") - private String delFlag; + /** + * 通知关联ID + */ + @ApiModelProperty(value = "通知关联ID") + @TableId + private String relId; + /** + * 通知ID + */ + @ApiModelProperty(value = "通知ID") + private String noticeId; + /** + * 关联类型U用户D部门 + */ + @ApiModelProperty(value = "关联类型U用户D部门") + private String relType; + /** + * 通知人员 + */ + @ApiModelProperty(value = "通知人员") + private String userCode; + /** + * 是否已读 + */ + @ApiModelProperty(value = "是否已读") + private String isRead; + /** + * 阅读时间 + */ + @ApiModelProperty(value = "阅读时间") + private Date readTime; + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + /** + * 部门ID + */ + @ApiModelProperty(value = "部门ID") + private String deptId; + /** + * 租户ID + */ + @ApiModelProperty(value = "租户ID") + private String tenantId; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private Date createTime; + /** + * 修改人 + */ + @ApiModelProperty(value = "修改人") + private String updateBy; + /** + * 修改时间 + */ + @ApiModelProperty(value = "修改时间") + private Date updateTime; + /** + * 更新时间戳 + */ + @ApiModelProperty(value = "更新时间戳") + private Date updatestamp; + /** + * 同步时间戳 + */ + @ApiModelProperty(value = "同步时间戳") + private Date syncstamp; + /** + * 删除标志 1=正常 0=已删除 + */ + @ApiModelProperty(value = "删除标志 1=正常 0=已删除") + private String delFlag; } diff --git a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java index 64b6706..5ebf18b 100644 --- a/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java +++ b/crmeb/crmeb-front/src/main/java/com/zbkj/front/config/JacksonConfig.java @@ -1,3 +1,11 @@ +/* + * @Author: zxf 1532322479@qq.com + * @Date: 2025-06-21 12:18:44 + * @LastEditors: zxf 1532322479@qq.com + * @LastEditTime: 2026-03-21 15:39:21 + * @FilePath: \crmebTwo\crmeb\crmeb-front\src\main\java\com\zbkj\front\config\JacksonConfig.java + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ package com.zbkj.front.config; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;