diff --git a/mes-module-chemmes/mes-module-chemmes-api/src/main/java/com/ningxia/yunxi/chemmes/module/biz/enums/ErrorCodeConstants.java b/mes-module-chemmes/mes-module-chemmes-api/src/main/java/com/ningxia/yunxi/chemmes/module/biz/enums/ErrorCodeConstants.java index 698d596..d167711 100644 --- a/mes-module-chemmes/mes-module-chemmes-api/src/main/java/com/ningxia/yunxi/chemmes/module/biz/enums/ErrorCodeConstants.java +++ b/mes-module-chemmes/mes-module-chemmes-api/src/main/java/com/ningxia/yunxi/chemmes/module/biz/enums/ErrorCodeConstants.java @@ -67,4 +67,7 @@ public interface ErrorCodeConstants { ErrorCode PROC_CODE_DUPLICATE = new ErrorCode(1_001_023, "工序编码不能重复"); ErrorCode PROC_LINE_CODE_DUPLICATE = new ErrorCode(1_001_023, "产线编码不能重复"); + + ErrorCode CUSTOMER_CODE_DUPLICATE = new ErrorCode(1_001_024, "客户编码不能重复"); + ErrorCode CUSTOMER_NAME_DUPLICATE = new ErrorCode(1_001_025, "客户名称不能重复"); } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/customer/vo/CustomerRespVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/customer/vo/CustomerRespVO.java index b52d1f6..05b22b2 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/customer/vo/CustomerRespVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/customer/vo/CustomerRespVO.java @@ -109,7 +109,7 @@ public class CustomerRespVO { @Schema(description = "启用状态(1:启用2:未启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty(value = "启用状态(1:启用2:未启用)", converter = DictConvert.class) - @DictFormat("system_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private String enabledStatus; + @DictFormat("system_status") + private Integer enabledStatus; } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/customer/CustomerDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/customer/CustomerDO.java index d76543f..2410506 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/customer/CustomerDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/customer/CustomerDO.java @@ -1,11 +1,11 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.customer; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO; +import com.sun.xml.bind.v2.TODO; +import lombok.*; /** * 客户主数据 DO @@ -122,6 +122,6 @@ public class CustomerDO extends BaseDO { * * 枚举 {@link TODO system_status 对应的类} */ - private String enabledStatus; + private Integer enabledStatus; -} \ No newline at end of file +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/customer/CustomerMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/customer/CustomerMapper.java index 638cf19..f2c13db 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/customer/CustomerMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/customer/CustomerMapper.java @@ -1,13 +1,11 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.customer; -import java.util.*; - import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; -import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX; +import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.customer.vo.CustomerPageReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.customer.CustomerDO; import org.apache.ibatis.annotations.Mapper; -import com.ningxia.yunxi.chemmes.module.biz.controller.admin.customer.vo.*; /** * 客户主数据 Mapper @@ -19,11 +17,19 @@ public interface CustomerMapper extends BaseMapperX { default PageResult selectPage(CustomerPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(CustomerDO::getCustNo, reqVO.getCustNo()) + .likeIfPresent(CustomerDO::getCustNo, reqVO.getCustNo()) .likeIfPresent(CustomerDO::getCustName, reqVO.getCustName()) .likeIfPresent(CustomerDO::getCustSimName, reqVO.getCustSimName()) .eqIfPresent(CustomerDO::getEnabledStatus, reqVO.getEnabledStatus()) .orderByDesc(CustomerDO::getId)); } -} \ No newline at end of file + default CustomerDO selectByCustNo(String custNo) { + return selectOne(CustomerDO::getCustNo, custNo); + } + + default CustomerDO selectByCustName(String custName) { + return selectOne(CustomerDO::getCustName, custName); + } + +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/customer/CustomerServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/customer/CustomerServiceImpl.java index b3be7b6..342d70d 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/customer/CustomerServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/customer/CustomerServiceImpl.java @@ -11,6 +11,10 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.ningxia.yunxi.chemmes.module.biz.enums.ErrorCodeConstants.CUSTOMER_CODE_DUPLICATE; +import static com.ningxia.yunxi.chemmes.module.biz.enums.ErrorCodeConstants.CUSTOMER_NAME_DUPLICATE; + /** * 客户主数据 Service 实现类 * @@ -25,6 +29,8 @@ public class CustomerServiceImpl implements CustomerService { @Override public Integer createCustomer(CustomerSaveReqVO createReqVO) { + validateCustomerCodeUnique(null, createReqVO.getCustNo()); + validateCustomerNameUnique(null, createReqVO.getCustName()); // 插入 CustomerDO customer = BeanUtils.toBean(createReqVO, CustomerDO.class); customerMapper.insert(customer); @@ -36,11 +42,15 @@ public class CustomerServiceImpl implements CustomerService { public void updateCustomer(CustomerSaveReqVO updateReqVO) { // 校验存在 validateCustomerExists(updateReqVO.getId()); + validateCustomerCodeUnique(updateReqVO.getId(), updateReqVO.getCustNo()); + validateCustomerNameUnique(updateReqVO.getId(), updateReqVO.getCustName()); // 更新 CustomerDO updateObj = BeanUtils.toBean(updateReqVO, CustomerDO.class); customerMapper.updateById(updateObj); } + + @Override public void deleteCustomer(Integer id) { // 校验存在 @@ -51,7 +61,36 @@ public class CustomerServiceImpl implements CustomerService { private void validateCustomerExists(Integer id) { if (customerMapper.selectById(id) == null) { -// throw exception(CUSTOMER_NOT_EXISTS); + throw exception("数据不存在"); + } + } + + private void validateCustomerCodeUnique(Integer id, String custNo) { + CustomerDO customer = customerMapper.selectByCustNo(custNo); + if (customer == null) { + return; + } + if (id == null) { + throw exception(CUSTOMER_CODE_DUPLICATE); + } + if (!customer.getId().equals(id)) { + throw exception(CUSTOMER_CODE_DUPLICATE); + } + } + + private void validateCustomerNameUnique(Integer id, String custName) { + if (custName == null || custName.isEmpty()) { + return; + } + CustomerDO customer = customerMapper.selectByCustName(custName); + if (customer == null) { + return; + } + if (id == null) { + throw exception(CUSTOMER_NAME_DUPLICATE); + } + if (!customer.getId().equals(id)) { + throw exception(CUSTOMER_NAME_DUPLICATE); } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/proline/ProLineServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/proline/ProLineServiceImpl.java index 60a0ff6..6e142de 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/proline/ProLineServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/proline/ProLineServiceImpl.java @@ -71,7 +71,7 @@ public class ProLineServiceImpl implements ProLineService { private void validateProLineExists(Integer id) { if (proLineMapper.selectById(id) == null) { -// throw exception(PRO_LINE_NOT_EXISTS); + throw exception("数据不存在"); } } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/customer/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/customer/index.vue index 4f197ff..125c725 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/customer/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/customer/index.vue @@ -99,6 +99,11 @@ + + +