diff --git a/urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/validation/ValidationUtils.java b/urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/validation/ValidationUtils.java index 228fd35..f3129fa 100644 --- a/urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/validation/ValidationUtils.java +++ b/urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/validation/ValidationUtils.java @@ -18,8 +18,9 @@ import java.util.regex.Pattern; */ public class ValidationUtils { - private static final Pattern PATTERN_MOBILE = Pattern.compile("^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[0,1,4-9])|(?:5[0-3,5-9])|(?:6[2,5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[0-3,5-9]))\\d{8}$"); - + //private static final Pattern PATTERN_MOBILE = Pattern.compile("^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[0,1,4-9])|(?:5[0-3,5-9])|(?:6[2,5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[0-3,5-9]))\\d{8}$"); + //add by wq 20260327 手机号码校验覆盖全号段 + private static final Pattern PATTERN_MOBILE = Pattern.compile("^(?:\\+86|0086)?1[3-9]\\d{9}$"); private static final Pattern PATTERN_URL = Pattern.compile("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); private static final Pattern PATTERN_XML_NCNAME = Pattern.compile("[a-zA-Z_][\\-_.0-9_a-zA-Z$]*"); @@ -51,5 +52,4 @@ public class ValidationUtils { throw new ConstraintViolationException(constraintViolations); } } - } diff --git a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/material/MaterialInventoryOutDto.java b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/material/MaterialInventoryOutDto.java index 53f388e..ddba1f0 100644 --- a/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/material/MaterialInventoryOutDto.java +++ b/urbanops-module-api/urbanops-module-garden-api/src/main/java/com/zteits/urbanops/module/garden/dto/material/MaterialInventoryOutDto.java @@ -17,6 +17,9 @@ public class MaterialInventoryOutDto { @Schema(description = "入库ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18713") private Long id; + @Schema(description = "库存ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "111") + private Long inventoryId; + @Schema(description = "物料ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14541") @NotNull(message = "物料ID不能为空") private Long materialId; diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java index eaee2f2..d596d95 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/costfee/CostFeeServiceImpl.java @@ -206,6 +206,8 @@ public class CostFeeServiceImpl implements CostFeeService { log.info("数据列表为空,跳过插入操作"); return; } + //总公司 + DeptRespDTO deptRespDTO = deptApi.getDept(getCompanyId()); //单位集合 List companyList = deptApi.getSubDeptList(); // 1. 预加载部门映射(循环外加载,避免重复查询) @@ -220,7 +222,7 @@ public class CostFeeServiceImpl implements CostFeeService { )); - // 模板类型校验 + // 模板类型校验 Class importClass = template.getImportClass(); // 从枚举获取导入类,避免switch // 根据不同模板类型执行不同的处理逻辑 if (WaterFeeImport.class.isAssignableFrom(importClass)) { @@ -239,8 +241,8 @@ public class CostFeeServiceImpl implements CostFeeService { WaterFeeDO fee = new WaterFeeDO(); BeanUtils.copyProperties(importObj, fee); fee.setCompanyId(String.valueOf(getCompanyId())); - if (getCompanyId() == 100) { - fee.setCompanyName("蓟城山水"); + if (deptRespDTO.getParentId() == 0) { + fee.setCompanyName(Objects.toString(deptRespDTO.getName(), "")); } else { // 设置单位id fee.setCompanyName(String.valueOf(companyIdToNamedMap.get(getCompanyId()))); @@ -612,7 +614,7 @@ public class CostFeeServiceImpl implements CostFeeService { Set> violations = validator.validate(importBean); if (!violations.isEmpty()) { // 收集所有校验错误信息(比如“用水量不能为空”“格式应为两位小数”) - // StringBuilder errorMsg = new StringBuilder(); + // StringBuilder errorMsg = new StringBuilder(); for (ConstraintViolation violation : violations) { //errorMsg.append(violation.getMessage()).append(";"); throw exception0(BAD_REQUEST.getCode() ,String.format( @@ -644,13 +646,13 @@ public class CostFeeServiceImpl implements CostFeeService { // 收集所有校验错误信息(比如“用水量不能为空”“格式应为两位小数”) //StringBuilder errorMsg = new StringBuilder(); for (ConstraintViolation violation : violations) { - // errorMsg.append(violation.getMessage()).append(";"); + // errorMsg.append(violation.getMessage()).append(";"); throw exception0(BAD_REQUEST.getCode() ,String.format( "第[{}]条数据:"+ violation.getMessage() ), rowNum); } // 抛出包含行号和所有错误的异常 - // throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations); + // throw exception0(BAD_REQUEST.getCode(), errorMsg.toString().trim(), violations); } Long companyId = nameToCompanyIdMap.get(importBean.getCompanyName()); //单位校验 @@ -766,9 +768,9 @@ public class CostFeeServiceImpl implements CostFeeService { Set> violations = validator.validate(importBean); if (!violations.isEmpty()) { // 收集所有校验错误信息(比如“用水量不能为空”“格式应为两位小数”) - // StringBuilder errorMsg = new StringBuilder(); + // StringBuilder errorMsg = new StringBuilder(); for (ConstraintViolation violation : violations) { - // errorMsg.append(violation.getMessage()).append(";"); + // errorMsg.append(violation.getMessage()).append(";"); throw exception0(BAD_REQUEST.getCode() ,String.format( "第[{}]条数据:"+violation.getMessage() ), rowNum); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java index ab684d6..01dc4e1 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zteits.urbanops.framework.common.exception.ErrorCode; 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; @@ -89,6 +90,12 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { @Transactional(rollbackFor = Exception.class) @Override public CommonResult createInspectionPlan(InspectionPlanSaveReqVO createReqVO) { + createReqVO.getRoadListReqVO().forEach(road -> { + if (road.getDeptId() == null || road.getRoadId() == 0L) { + ErrorCode errorCode = new ErrorCode(INSPECTION_PLAN_NOT_EXISTS.getCode(), road.getRoadName()+"未配置部门信息,请在道路管理界面配置班组"); + throw exception(errorCode); + } + }); //存在性校验 validateInspectionPlanExists(createReqVO); LocalDateTime now = LocalDateTime.now(); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java index af7934b..c036166 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/maintainplan/MaintainPlanServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zteits.urbanops.framework.common.exception.ErrorCode; import com.zteits.urbanops.framework.common.pojo.CommonResult; import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; @@ -102,6 +103,12 @@ public class MaintainPlanServiceImpl implements MaintainPlanService { @Override public CommonResult createMaintainPlan(MaintainPlanSaveReqVO createReqVO) { + createReqVO.getRoadListReqVO().forEach(road -> { + if (road.getDeptId() == null || road.getRoadId() == 0L) { + ErrorCode errorCode = new ErrorCode(INSPECTION_PLAN_NOT_EXISTS.getCode(), road.getRoadName() + "未配置部门信息,请在道路管理界面配置班组"); + throw exception(errorCode); + } + }); //存在性校验 validateMaintainPlanExists(createReqVO); LocalDateTime now = LocalDateTime.now(); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventoryout/MaterialInventoryOutServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventoryout/MaterialInventoryOutServiceImpl.java index 714a128..5f5f3ea 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventoryout/MaterialInventoryOutServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/materialinventoryout/MaterialInventoryOutServiceImpl.java @@ -15,6 +15,7 @@ import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; import jakarta.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -55,6 +56,7 @@ public class MaterialInventoryOutServiceImpl implements MaterialInventoryOutServ if(null == material){ throw exception0(BAD_REQUEST.getCode(), "无效参数-materialId"); } + MaterialInventoryDO materialInventory = materialInventoryService.getMaterialInventory(createReqVO.getInventoryId()); if(null == materialInventory){ throw exception0(BAD_REQUEST.getCode(),createReqVO.getMaterialName()+"没有库存"); diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java index ec4c775..118592d 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/admin/materialdetail/vo/MaterialDetailSaveReqVO.java @@ -79,4 +79,7 @@ public class MaterialDetailSaveReqVO { @Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED, example = "规格") @NotEmpty(message = "规格不能为空") private String specifications; + + @Schema(description = "库存ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "111") + private Long inventoryId; } diff --git a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java index 4e3a438..c5c49de 100644 --- a/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java +++ b/urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/service/materialdetail/MaterialDetailServiceImpl.java @@ -133,12 +133,13 @@ public class MaterialDetailServiceImpl implements MaterialDetailService { // } // } //耗材出库 - for (MaterialDetailDO materialDetailDO : materialDetailList) { + for (MaterialDetailSaveReqVO materialDetailDO : createReqVO) { MaterialInventoryOutDto outDto = new MaterialInventoryOutDto(); outDto.setMaterialId(materialDetailDO.getMaterialId()); outDto.setMaterialName(materialDetailDO.getMaterialName()); - outDto.setOutInventoryNum(materialDetailDO.getUserCount()); + outDto.setOutInventoryNum(Long.valueOf(materialDetailDO.getUserCount())); outDto.setOutDate(LocalDateTime.now()); + outDto.setInventoryId(materialDetailDO.getInventoryId()); materialApi.createMaterialInventoryOut(outDto); } //保存耗材