From e9f5e0fa037fac2dac7085dbcde74ccc57e79397 Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Mon, 3 Nov 2025 10:22:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/test/MaterialsTest.java | 33 +++++++++++++++++ .../SubConstructionUserFileController.java | 4 +-- .../ISubConstructionUserFileService.java | 3 +- .../SubConstructionUserFileServiceImpl.java | 12 ++++--- .../WebSocketConfig.java | 2 -- .../impl/HseSafetyInspectionServiceImpl.java | 6 +++- .../impl/HseTeamMeetingServiceImpl.java | 8 +++-- .../vehicletrip/VehVehicleTripQueryReq.java | 15 ++++++++ .../vehicle/domain/vo/VehVehicleTripMyVo.java | 10 ++++++ .../vehicle/domain/vo/VehVehicleTripVo.java | 5 +++ .../impl/VehVehicleApplyServiceImpl.java | 14 ++++++++ .../impl/VehVehicleTripServiceImpl.java | 16 +++++++-- .../mapper/vehicle/VehVehicleTripMapper.xml | 33 +++++++++-------- .../controller/app/FlowAppController.java | 35 ++++++++++--------- .../dromara/workflow/domain/vo/FlowAppVo.java | 10 +++--- 15 files changed, 156 insertions(+), 50 deletions(-) diff --git a/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/MaterialsTest.java b/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/MaterialsTest.java index 205c876d..e009b98e 100644 --- a/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/MaterialsTest.java +++ b/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/MaterialsTest.java @@ -46,18 +46,51 @@ public class MaterialsTest { @Test void test() { + // 获取所有材料 List materials = materialsService.lambdaQuery() .eq(MatMaterials::getProjectId, PROJECT_ID) .list(); Set materialIds = materials.stream().map(MatMaterials::getId).collect(Collectors.toSet()); + // 获取所有材料的出库数据 List inventoryList = materialsInventoryService.lambdaQuery() .in(MatMaterialsInventory::getMaterialsId, materialIds) .eq(MatMaterialsInventory::getOutPut, MatMaterialsInventoryOutPutEnum.OUT.getValue()) .list(); + // 按表单编号分组 Map> map = materials.stream() .collect(Collectors.groupingBy(MatMaterials::getFormCode)); + for (Map.Entry> entry : map.entrySet()) { + String formCode = entry.getKey(); + List materialsList = entry.getValue(); + // 获取入库数据 + MatMaterialReceive receive = materialReceiveService.lambdaQuery() + .eq(MatMaterialReceive::getFormCode, formCode) + .one(); + // 创建领料出库数据 + MatMaterialIssue issue = new MatMaterialIssue(); + issue.setProjectId(PROJECT_ID); + issue.setMaterialSource("2"); + issue.setFormCode(formCode); + issue.setProjectName(receive.getProjectName()); + issue.setMaterialName(receive.getMaterialName()); + issue.setOrderingUnit(receive.getOrderingUnit()); + issue.setSupplierUnit(receive.getSupplierUnit()); +// issue.setIssueUnit(inventory.getRecipient()); +// issue.setIssueUnitId(inventory.getRecipientId()); +// issue.setShipper(inventory.getShipper()); + + +// issue.setStorageUnit(); + issue.setCertCount(0); + issue.setReportCount(0); + issue.setTechDocCount(0); + issue.setLicenseCount(0); + log.info("领料出库数据:{}", issue); + log.info("============================="); + } + for (MatMaterials material : materials) { String formCode = material.getFormCode(); // 查看入库数据 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserFileController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserFileController.java index 9de34940..7ec70011 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserFileController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserFileController.java @@ -74,8 +74,8 @@ public class SubConstructionUserFileController extends BaseController { @Log(title = "施工人员文件存储", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/upload/zip") - public R uploadFileZip(@RequestParam("file") MultipartFile file) { - Boolean result = constructionUserFileService.batchUploadFileByZip(file); + public R uploadFileZip(@RequestParam("file") MultipartFile file, Long projectId) { + Boolean result = constructionUserFileService.batchUploadFileByZip(file, projectId); return R.ok(result); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserFileService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserFileService.java index e7e35eea..66209de4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserFileService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserFileService.java @@ -49,9 +49,10 @@ public interface ISubConstructionUserFileService extends IService 0) { + throw new ServiceException("您已申请过该行程,请勿重复申请", HttpStatus.BAD_REQUEST); + } boolean save = this.save(apply); if (!save) { throw new ServiceException("新增失败"); @@ -361,6 +374,7 @@ public class VehVehicleApplyServiceImpl extends ServiceImpl userApplies = vehicleApplyService.lambdaQuery() .eq(VehVehicleApply::getCreateBy, userId) .eq("1".equals(type), VehVehicleApply::getStatus, VehApplyStatusEnum.CONFIRMED.getValue()) - .notIn("2".equals(type), VehVehicleApply::getStatus, VehApplyStatusEnum.ARRIVED.getValue(), VehApplyStatusEnum.ALREADY.getValue()) + .notIn("2".equals(type), VehVehicleApply::getStatus, VehApplyStatusEnum.ARRIVED.getValue(), + VehApplyStatusEnum.ALREADY.getValue(), VehApplyStatusEnum.CANCELED.getValue()) .eq("3".equals(type), VehVehicleApply::getStatus, VehApplyStatusEnum.ARRIVED.getValue()) .list(); // 整合数据 @@ -172,7 +173,8 @@ public class VehVehicleTripServiceImpl extends ServiceImpl buildQueryWrapper(VehVehicleTripQueryReq req) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(req.getProjectId() != null, VehVehicleTrip::getProjectId, req.getProjectId()); + lqw.like(StringUtils.isNotBlank(req.getStartPlace()), VehVehicleTrip::getStartPlace, req.getStartPlace()); lqw.like(StringUtils.isNotBlank(req.getEndPlace()), VehVehicleTrip::getEndPlace, req.getEndPlace()); lqw.ge(req.getPeopleNum() != null, VehVehicleTrip::getPeopleNum, req.getPeopleNum()); lqw.eq(req.getReviewStatus() != null, VehVehicleTrip::getReviewStatus, req.getReviewStatus()); @@ -529,7 +532,14 @@ public class VehVehicleTripServiceImpl extends ServiceImpl Objects.equals(a.getCreateBy(), userId)) + .findFirst().orElse(null); + if (apply != null) { + tripMyVo.setApplyId(apply.getId()); + tripMyVo.setApplyStatus(apply.getStatus()); + } return tripMyVo; }).sorted(Comparator.comparing(VehVehicleTripMyVo::getStartTime)) .toList(); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/vehicle/VehVehicleTripMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/vehicle/VehVehicleTripMapper.xml index 86a8c5ee..ab792d83 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/vehicle/VehVehicleTripMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/vehicle/VehVehicleTripMapper.xml @@ -38,6 +38,14 @@ ), 2 ) AS distanceM, + -- 出发点至重点距离(米) + ROUND( + ST_Distance_Sphere( + POINT(#{req.startLng}, #{req.startLat}), + POINT(#{req.endLng}, #{req.endLat}) + ), 2 + ) AS startEndDistance, + -- 2. 距离评分(0-100) ROUND( GREATEST(0, LEAST(100, @@ -83,21 +91,18 @@ ), 2) AS total_score FROM veh_vehicle_trip - - - - AND project_id = #{req.projectId} - - - AND review_status = #{req.reviewStatus} - - - AND trip_status = #{req.tripStatus} - - - + where left_seat > 0 -- 只保留总评分 >= 60 的数据 - HAVING total_score >= 60 + and total_score >= 60 + + AND project_id = #{req.projectId} + + + AND review_status = #{req.reviewStatus} + + + AND trip_status = #{req.tripStatus} + ORDER BY total_score DESC diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/app/FlowAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/app/FlowAppController.java index 170930c8..e18e143c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/app/FlowAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/app/FlowAppController.java @@ -1,6 +1,5 @@ package org.dromara.workflow.controller.app; -import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.dto.UserDTO; @@ -13,14 +12,15 @@ import org.dromara.warm.flow.core.entity.Instance; import org.dromara.warm.flow.core.invoker.FrameInvoker; import org.dromara.warm.flow.ui.service.ChartExtService; import org.dromara.workflow.common.ConditionalOnEnable; -import org.dromara.workflow.domain.bo.FlowCategoryBo; import org.dromara.workflow.domain.vo.FlowAppVo; -import org.dromara.workflow.domain.vo.FlowCategoryVo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.stream.Collectors; @@ -29,7 +29,7 @@ import java.util.stream.Collectors; @Validated @RequiredArgsConstructor @RestController -@RequestMapping("/app/workflow/") +@RequestMapping("/app/workflow") public class FlowAppController { private final IFlwInstanceService flwInstanceService; @@ -39,21 +39,21 @@ public class FlowAppController { private final IFlwTaskAssigneeService flwTaskAssigneeService; @GetMapping("/{businessId}") - public R> list(@PathVariable("businessId") String businessId,Long projectId) { + public R> list(@PathVariable("businessId") String businessId, Long projectId) { Map stringObjectMap; try { stringObjectMap = flwInstanceService.flowHisTaskList(businessId); } catch (Exception e) { - return R.ok(null,null); + return R.ok(null, null); } - List list= (List) stringObjectMap.get("list"); + List list = (List) stringObjectMap.get("list"); Map map = list.stream().collect(Collectors.toMap(FlowHisTaskVo::getNodeCode, vo -> vo)); Long instanceId = (Long) stringObjectMap.get("instanceId"); String defJsonStr = ((Instance) FlowEngine.insService().getById(instanceId)).getDefJson(); - DefJson defJson = (DefJson)FlowEngine.jsonConvert.strToBean(defJsonStr, DefJson.class); + DefJson defJson = (DefJson) FlowEngine.jsonConvert.strToBean(defJsonStr, DefJson.class); ChartExtService chartExtService = (ChartExtService) FrameInvoker.getBean(ChartExtService.class); if (chartExtService != null) { chartExtService.initPromptContent(defJson); @@ -62,8 +62,8 @@ public class FlowAppController { List nodeList = defJson.getNodeList(); List nodeJsons = sortNodeList(nodeList); - List appVoList = new ArrayList<>(); - for (NodeJson nodeJson : nodeJsons ){ + List appVoList = new ArrayList<>(); + for (NodeJson nodeJson : nodeJsons) { FlowAppVo appVo = new FlowAppVo(); appVo.setNodeName(nodeJson.getNodeName()); @@ -71,20 +71,21 @@ public class FlowAppController { appVo.setNodeType(nodeJson.getNodeType()); String nodeCode = nodeJson.getNodeCode(); FlowHisTaskVo flowHisTaskVo = map.get(nodeCode); - if(flowHisTaskVo != null){ + if (flowHisTaskVo != null) { appVo.setFlowStatus(flowHisTaskVo.getFlowStatus()); - if(BusinessStatusEnum.WAITING.getStatus().equals(flowHisTaskVo.getFlowStatus())){ + appVo.setCreateTime(flowHisTaskVo.getCreateTime()); + if (BusinessStatusEnum.WAITING.getStatus().equals(flowHisTaskVo.getFlowStatus())) { appVo.setAuditName(userService.selectNicknameByIds(flowHisTaskVo.getApprover())); - }else { + } else { UserDTO userDTO = userService.selectUser(Long.valueOf(flowHisTaskVo.getApprover())); - if(userDTO != null){ + if (userDTO != null) { appVo.setApproveAvatar(userDTO.getAvatarUrl()); appVo.setApproveName(userDTO.getNickName()); } } - }else { + } else { appVo.setFlowStatus(BusinessStatusEnum.WAITING.getStatus()); - if(nodeJson.getNodeType()==1){ + if (nodeJson.getNodeType() == 1) { String permissionFlag = nodeJson.getPermissionFlag(); List userDTOS = flwTaskAssigneeService.fetchUsersByStorageIds(permissionFlag, projectId); String auditName = userDTOS.stream().map(UserDTO::getNickName).collect(Collectors.joining(",")); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowAppVo.java b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowAppVo.java index 7e6b00dd..779e32bc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowAppVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowAppVo.java @@ -2,11 +2,8 @@ package org.dromara.workflow.domain.vo; import lombok.Data; -import org.dromara.common.core.domain.dto.UserDTO; -import java.security.PrivilegedAction; -import java.util.List; -import java.util.Map; +import java.util.Date; @Data public class FlowAppVo { @@ -47,4 +44,9 @@ public class FlowAppVo { */ private Integer status; + /** + * 创建时间 + */ + private Date createTime; + }