diff --git a/urbanops-module-workorder/pom.xml b/urbanops-module-workorder/pom.xml index b8e6f0d..b481e7c 100644 --- a/urbanops-module-workorder/pom.xml +++ b/urbanops-module-workorder/pom.xml @@ -126,6 +126,12 @@ urbanops-module-system ${revision} + + com.zteits.boot + urbanops-module-bpm + ${revision} + + diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java new file mode 100644 index 0000000..ead6f8a --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/api/constant/BpmCommonConstant.java @@ -0,0 +1,35 @@ +package com.zteits.urbanops.module.workorder.api.constant; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 流程业务定义key + * @date 2025/12/3 10:35 + */ +public class BpmCommonConstant { + /** + * 园林巡检工单 流程业务key + */ + public static final String BPM_GARDEN_INSPECT_WO = "garden_inspect_wo"; + /** + * 物业巡检工单 流程业务key + */ + public static final String BPM_PROPERTY_INSPECT_WO = "property_inspect_wo"; + /** + * 市政巡检工单 流程业务key + */ + public static final String BPM_MUNICIPAL_INSPECT_WO = "municipal_inspect_wo"; + /** + * 园林问题单图片类型 + */ + public static final String GARDEN_INSPECT_WO_ATTACH1 = "01"; + /** + * 园林街道图片类型 + */ + public static final String GARDEN_INSPECT_WO_ATTACH2 = "02"; + /** + * 园林远景图片类型 + */ + public static final String GARDEN_INSPECT_WO_ATTACH3 = "03"; + +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java new file mode 100644 index 0000000..82e0240 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/BpmGardenInspectController.java @@ -0,0 +1,64 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.module.bpm.controller.admin.oa.vo.BpmOALeaveCreateReqVO; +import com.zteits.urbanops.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO; +import com.zteits.urbanops.module.bpm.controller.admin.oa.vo.BpmOALeaveRespVO; +import com.zteits.urbanops.module.bpm.dal.dataobject.oa.BpmOALeaveDO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderCreateReqVo; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderRespVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; +import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林巡检工单 + * @date 2025/12/3 11:03 + */ +@Tag(name = "管理后台 - 园林巡检工单") +@RestController +@RequestMapping("/bpm/garden/inspection") +@Validated +public class BpmGardenInspectController { + @Resource + private BpmGardenService gardenService; + + @PostMapping("/create") + @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:create')") + @Operation(summary = "创建请求申请") + public CommonResult createGardenInspection(@Valid @RequestBody BpmGardenWorkOrderCreateReqVo createReqVO) { + return success(gardenService.createWorkOrder(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:query')") + @Operation(summary = "获得园林工单申请") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getGardenInspection(@RequestParam("id") Long id) { + BpmGardenWorkOrderDO gardenInspection = gardenService.getWorkOrder(id); + return success(BeanUtils.toBean(gardenInspection, BpmGardenWorkOrderRespVO.class)); + } + + @GetMapping("/page") + @PreAuthorize("@ss.hasPermission('bpm:garden-inspection:query')") + @Operation(summary = "获得园林巡检工单申请分页") + public CommonResult> getGardenInspectionPage(@Valid BpmGardenWorkOrderPageReqVO pageVO) { + PageResult pageResult = gardenService.getGardenInspectionPage(getLoginUserId(), pageVO); + return success(BeanUtils.toBean(pageResult, BpmGardenWorkOrderRespVO.class)); + } +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderCreateReqVo.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderCreateReqVo.java new file mode 100644 index 0000000..7ef247d --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderCreateReqVo.java @@ -0,0 +1,80 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林工单请求创建 Request VO + * @date 2025/12/1 11:17 + */ +@Schema(description = "园林工单请求创建 Request VO") +@Data +public class BpmGardenWorkOrderCreateReqVo { + + @Schema(description = "业务线:yl 园林,wy 物业,sz 市政 ", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线:yl 园林,wy 物业,sz 市政 不能为空") + private String busiLine; + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21128") + @NotNull(message = "道路ID不能为空") + private Long roadId; + + @Schema(description = "上传图片", example = "9184") + private List imgs; + @Schema(description = "街道照片", example = "9184") + private List streetImgList; + @Schema(description = "远景照片", example = "9184") + private List longRangeImgList; + + @Schema(description = "工单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") + @NotEmpty(message = "工单描述不能为空") + @Length(max = 500) + private String remark; + + @Schema(description = "经纬度类型: 1:国标; 2:百度;3:高德;4:腾讯", example = "2") + private Integer latLonType; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "经度不能为空") + private BigDecimal lat; + + @Schema(description = "维度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "维度不能为空") + private BigDecimal lon; + + @Schema(description = "经纬度地址", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "经纬度地址不能为空") + private String lonLatAddress; + + @Schema(description = "紧急程度:1:特急;2:紧急;3:一般", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "紧急程度:1:特急;2:紧急;3:一般不能为空") + private Integer pressingType; + + @Schema(description = "来源ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "来源ID不能为空") + private Integer sourceId; + + @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "园林") + @NotEmpty(message = "来源名称不能为空") + private String sourceName; + + @Schema(description = "三方工单ID") + private String thirdWorkNo; + + @Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}") + private Map> startUserSelectAssignees; + + @Schema(description = "是否需要养护人员修复,'0' 是,'1' 否") + private String isYesOrNo; + + +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java new file mode 100644 index 0000000..459683a --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderPageReqVO.java @@ -0,0 +1,16 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林工单申请分页 Request VO + * @date 2025/12/3 11:32 + */ +@Schema(description = "管理后台 - 园林工单申请分页 Request VO") +@Data +public class BpmGardenWorkOrderPageReqVO extends PageParam { +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java new file mode 100644 index 0000000..30bbe4e --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/garden/vo/BpmGardenWorkOrderRespVO.java @@ -0,0 +1,15 @@ +package com.zteits.urbanops.module.workorder.controller.admin.garden.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林工单流程 Response VO + * @date 2025/12/3 11:31 + */ +@Schema(description = "管理后台 - 园林工单流程 Response VO") +@Data +public class BpmGardenWorkOrderRespVO { +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/garden/BpmGardenWorkOrderDO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/garden/BpmGardenWorkOrderDO.java new file mode 100644 index 0000000..8f52d51 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/dataobject/garden/BpmGardenWorkOrderDO.java @@ -0,0 +1,12 @@ +package com.zteits.urbanops.module.workorder.dal.dataobject.garden; + +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: TODO + * @date 2025/12/1 11:34 + */ +public class BpmGardenWorkOrderDO extends MainInfoDO { +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java index 70d1a17..aac2cf7 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/dal/mysql/maininfo/MainInfoMapper.java @@ -49,4 +49,36 @@ public interface MainInfoMapper extends BaseMapperX { .orderByDesc(MainInfoDO::getId)); } + default PageResult selectPage(Long loginUserId,MainInfoPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MainInfoDO::getBusiLine, reqVO.getBusiLine()) + .eqIfPresent(MainInfoDO::getOrderNo, reqVO.getOrderNo()) + .likeIfPresent(MainInfoDO::getOrderName, reqVO.getOrderName()) + .eqIfPresent(MainInfoDO::getSourceId, reqVO.getSourceId()) + .likeIfPresent(MainInfoDO::getSourceName, reqVO.getSourceName()) + .eqIfPresent(MainInfoDO::getRoadId, reqVO.getRoadId()) + .likeIfPresent(MainInfoDO::getRoadName, reqVO.getRoadName()) + .eqIfPresent(MainInfoDO::getStreetId, reqVO.getStreetId()) + .likeIfPresent(MainInfoDO::getStreetName, reqVO.getStreetName()) + .eqIfPresent(MainInfoDO::getCuringLevelId, reqVO.getCuringLevelId()) + .likeIfPresent(MainInfoDO::getCuringLevelName, reqVO.getCuringLevelName()) + .betweenIfPresent(MainInfoDO::getCommitDate, reqVO.getCommitDate()) + .eqIfPresent(MainInfoDO::getPressingType, reqVO.getPressingType()) + .eqIfPresent(MainInfoDO::getUserId, loginUserId) + .likeIfPresent(MainInfoDO::getUserName, reqVO.getUserName()) + .eqIfPresent(MainInfoDO::getCompanyId, reqVO.getCompanyId()) + .eqIfPresent(MainInfoDO::getLatLonType, reqVO.getLatLonType()) + .eqIfPresent(MainInfoDO::getLat, reqVO.getLat()) + .eqIfPresent(MainInfoDO::getLon, reqVO.getLon()) + .eqIfPresent(MainInfoDO::getLonLatAddress, reqVO.getLonLatAddress()) + .eqIfPresent(MainInfoDO::getThirdWorkNo, reqVO.getThirdWorkNo()) + .eqIfPresent(MainInfoDO::getThirdPushState, reqVO.getThirdPushState()) + .eqIfPresent(MainInfoDO::getBuzStatus, reqVO.getBuzStatus()) + .eqIfPresent(MainInfoDO::getStatus, reqVO.getStatus()) + .eqIfPresent(MainInfoDO::getProcessInstanceId, reqVO.getProcessInstanceId()) + .eqIfPresent(MainInfoDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MainInfoDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MainInfoDO::getId)); + } + } \ No newline at end of file diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java index 9ebffe2..1fc204b 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/enums/ErrorCodeConstants.java @@ -11,9 +11,9 @@ import com.zteits.urbanops.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { // ========== server 工单 1-100-001-000 ========== - ErrorCode MAIN_INFO_NOT_EXISTS = new ErrorCode(1-100-001-000, "工单信息不存在"); + ErrorCode MAIN_INFO_NOT_EXISTS = new ErrorCode(1-900-001-000, "工单信息不存在"); - ErrorCode ATTACHMENT_NOT_EXISTS = new ErrorCode(1-100-002-000, "工单附件信息不存在"); + ErrorCode ATTACHMENT_NOT_EXISTS = new ErrorCode(1-900-001-001, "工单附件信息不存在"); - ErrorCode MATERIAL_DETAIL_NOT_EXISTS = new ErrorCode(1-100-003-000, "工单耗材明细不存在"); + ErrorCode MATERIAL_DETAIL_NOT_EXISTS = new ErrorCode(1-900-001-002, "工单耗材明细不存在"); } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java new file mode 100644 index 0000000..ac24566 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenService.java @@ -0,0 +1,46 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderCreateReqVo; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; +import jakarta.validation.Valid; +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林工作流 + * @date 2025/12/1 11:13 + */ +public interface BpmGardenService { + /** + * 园林工单申请 Service 接口 + * @param userId + * @param createRequestVo + * @return + */ + Long createWorkOrder(Long userId,@Valid BpmGardenWorkOrderCreateReqVo createRequestVo); + + /** + * 更新工单申请的状态 + * + * @param id 编号 + * @param status 结果 + */ + void updateWorkOrderStatus(Long id, Integer status); + + /** + * 获得工单详情 + * + * @param id 编号 + * @return 工单详情 + */ + BpmGardenWorkOrderDO getWorkOrder(Long id); + + /** + * 获得工单分页数据 + * @param loginUserId + * @param pageVO + * @return + */ + PageResult getGardenInspectionPage(Long loginUserId, BpmGardenWorkOrderPageReqVO pageVO); +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java new file mode 100644 index 0000000..4f6fb7d --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/BpmGardenServiceImpl.java @@ -0,0 +1,163 @@ +package com.zteits.urbanops.module.workorder.service.garden; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; +import com.zteits.urbanops.framework.common.util.object.ObjectUtils; +import com.zteits.urbanops.module.bpm.api.task.BpmProcessInstanceApi; +import com.zteits.urbanops.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zteits.urbanops.module.bpm.enums.task.BpmTaskStatusEnum; +import com.zteits.urbanops.module.workorder.api.constant.BpmCommonConstant; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderCreateReqVo; +import com.zteits.urbanops.module.workorder.controller.admin.garden.vo.BpmGardenWorkOrderPageReqVO; +import com.zteits.urbanops.module.workorder.controller.admin.maininfo.vo.MainInfoPageReqVO; +import com.zteits.urbanops.module.workorder.dal.dataobject.attachment.AttachmentDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.garden.BpmGardenWorkOrderDO; +import com.zteits.urbanops.module.workorder.dal.dataobject.maininfo.MainInfoDO; +import com.zteits.urbanops.module.workorder.dal.mysql.attachment.AttachmentMapper; +import com.zteits.urbanops.module.workorder.dal.mysql.maininfo.MainInfoMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zteits.urbanops.module.workorder.enums.ErrorCodeConstants.MAIN_INFO_NOT_EXISTS; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 园林工作流实现类 + * @date 2025/12/1 11:38 + */ +@Service +@Validated +public class BpmGardenServiceImpl implements BpmGardenService{ + + @Resource + private AttachmentMapper attachmentMapper; + @Resource + private MainInfoMapper workOrderMapper; + @Resource + private BpmProcessInstanceApi processInstanceApi; + @Override + @Transactional(rollbackFor = Exception.class) + public Long createWorkOrder(Long userId, BpmGardenWorkOrderCreateReqVo createRequestVo) { + List imgList = createRequestVo.getImgs(); + List streetImgList = createRequestVo.getStreetImgList(); + List longRangeImgList = createRequestVo.getLongRangeImgList(); + String isYesOrNo = createRequestVo.getIsYesOrNo(); + // 插入 工单 + MainInfoDO workOrder = BeanUtils.toBean(createRequestVo, MainInfoDO.class) + .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); + //TODO 设置其它值 需从道路表获取 + workOrder.setStreetId("test"); + workOrder.setBuzStatus("t1");//需给出映射关系 + workOrder.setCommitDate(LocalDateTime.now()); + workOrderMapper.insert(workOrder); + + //附件插入 + attachmentApend(imgList,streetImgList,longRangeImgList,workOrder); + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + processInstanceVariables.put("isYesOrNo", isYesOrNo); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(BpmCommonConstant.BPM_GARDEN_INSPECT_WO) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(workOrder.getId())) + .setStartUserSelectAssignees(createRequestVo.getStartUserSelectAssignees())); + + // 将工作流的编号,更新到 工单中 + workOrderMapper.updateById(new MainInfoDO().setId(workOrder.getId()).setProcessInstanceId(processInstanceId)); + return workOrder.getId(); + } + + /** + * 附件插入 + * @param imgList 问题照片 P1 + * @param streetImgList 街道照片 P2 + * @param longRangeImgList 远景照片 P3 + * @param workOrder + */ + private void attachmentApend(List imgList, List streetImgList, List longRangeImgList, MainInfoDO workOrder) { + //问题图片 + if(ObjectUtils.isNotAllEmpty(imgList)){ + AttachmentDO saveDO = new AttachmentDO(); + saveDO.setBusiLine(workOrder.getBusiLine()); + saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH1); + saveDO.setOrderNo(workOrder.getOrderNo()); + String filePaths = String.join(",",imgList); + saveDO.setFileNames(filePaths); + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() + .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine()) + .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH1) + .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo()); + attachmentMapper.delete(deleteWrapper); + attachmentMapper.insert(saveDO); + } + //街道图片 + if(ObjectUtils.isNotAllEmpty(streetImgList)){ + AttachmentDO saveDO = new AttachmentDO(); + saveDO.setBusiLine(workOrder.getBusiLine()); + saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2); + saveDO.setOrderNo(workOrder.getOrderNo()); + String filePaths = String.join(",",streetImgList); + saveDO.setFileNames(filePaths); + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() + .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine()) + .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH2) + .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo()); + attachmentMapper.delete(deleteWrapper); + attachmentMapper.insert(saveDO); + } + //远景图片 + if(ObjectUtils.isNotAllEmpty(longRangeImgList)){ + AttachmentDO saveDO = new AttachmentDO(); + saveDO.setBusiLine(workOrder.getBusiLine()); + saveDO.setBusiType(BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH3); + saveDO.setOrderNo(workOrder.getOrderNo()); + String filePaths = String.join(",",longRangeImgList); + saveDO.setFileNames(filePaths); + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper() + .eq(AttachmentDO::getBusiLine, workOrder.getBusiLine()) + .eq(AttachmentDO::getBusiType, BpmCommonConstant.GARDEN_INSPECT_WO_ATTACH3) + .eq(AttachmentDO::getOrderNo, workOrder.getOrderNo()); + attachmentMapper.delete(deleteWrapper); + attachmentMapper.insert(saveDO); + } + + + } + + + @Override + public void updateWorkOrderStatus(Long id, Integer status) { + validateExists(id); + workOrderMapper.updateById(new MainInfoDO().setId(id).setStatus(status)); + } + private void validateExists(Long id) { + if (workOrderMapper.selectById(id) == null) { + throw exception(MAIN_INFO_NOT_EXISTS); + } + } + + @Override + public BpmGardenWorkOrderDO getWorkOrder(Long id) { + MainInfoDO workOrder = workOrderMapper.selectById(id); + BpmGardenWorkOrderDO targetVo = BeanUtils.toBean(workOrder, BpmGardenWorkOrderDO.class); + //TODO 定义页面展示字段在此扩展 + return targetVo; + } + + @Override + public PageResult getGardenInspectionPage(Long loginUserId, BpmGardenWorkOrderPageReqVO pageVO) { + MainInfoPageReqVO mainInfoPageReqVo = BeanUtils.toBean(pageVO,MainInfoPageReqVO.class); + PageResult pageList = workOrderMapper.selectPage(loginUserId, mainInfoPageReqVo); + PageResult targetList = BeanUtils.toBean(pageList,BpmGardenWorkOrderDO.class); + return targetList; + } +} diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BomGardenWorkOrderStatusListener.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BomGardenWorkOrderStatusListener.java new file mode 100644 index 0000000..75d3a54 --- /dev/null +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/garden/listener/BomGardenWorkOrderStatusListener.java @@ -0,0 +1,29 @@ +package com.zteits.urbanops.module.workorder.service.garden.listener; + +import com.zteits.urbanops.module.bpm.api.event.BpmProcessInstanceStatusEvent; +import com.zteits.urbanops.module.bpm.api.event.BpmProcessInstanceStatusEventListener; +import com.zteits.urbanops.module.workorder.service.garden.BpmGardenService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +/** + * @author yanhuiqing + * @version 1.0 + * @description: 工作流状态监听类 + * @date 2025/12/1 11:45 + */ +@Component +public class BomGardenWorkOrderStatusListener extends BpmProcessInstanceStatusEventListener { + @Resource + private BpmGardenService gardenService; + @Override + protected String getProcessDefinitionKey() { + + return null; + } + + @Override + protected void onEvent(BpmProcessInstanceStatusEvent event) { + gardenService.updateWorkOrderStatus(Long.parseLong(event.getBusinessKey()), event.getStatus()); + } +}