Selaa lähdekoodia

'新增客户管理信息表-新增、修改、删除和分页四个接口'

james 1 vuosi sitten
vanhempi
commit
80e61ca5ef

+ 73 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomInfoController.java

@@ -0,0 +1,73 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 客户管理信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@RestController
+@RequestMapping("/crmCustomInfo")
+public class CrmCustomInfoController {
+
+    @Autowired
+    private CrmCustomInfoService crmCustomInfoService;
+
+    /**
+     * 新增
+     * @param crmCustomInfo
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmCustomInfo crmCustomInfo){
+        crmCustomInfoService.add(crmCustomInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param crmCustomInfo
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody CrmCustomInfo crmCustomInfo){
+        crmCustomInfoService.edit(crmCustomInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    public ApiResult<Void> remove(@PathVariable("id") Integer id){
+        crmCustomInfoService.remove(id);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param crmCustomInfoRequestVO
+     * @return
+     */
+    @PostMapping("/page")
+    public ApiResult<CommonPage<CrmCustomInfo>> page(@RequestBody CrmCustomInfoRequestVO crmCustomInfoRequestVO){
+        return ApiResult.success(crmCustomInfoService.page(crmCustomInfoRequestVO));
+    }
+
+}
+

+ 126 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomInfo.java

@@ -0,0 +1,126 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 客户管理信息表
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmCustomInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 客户负责人
+     */
+    private String customPerson;
+
+    /**
+     * 客户电话
+     */
+    private String phone;
+
+    /**
+     * 备用电话
+     */
+    private String phone1;
+
+    /**
+     * 维保费
+     */
+    private Double maintainAmount;
+
+    /**
+     * 客户邮箱
+     */
+    private String email;
+
+    /**
+     * 销售负责人
+     */
+    private String salePerson;
+
+    /**
+     * 状态;1:使用中,2:已到期
+     */
+    private Integer maintainStatus;
+
+    /**
+     * 到期时间
+     */
+    private LocalDateTime expireTime;
+
+    /**
+     * 客户地址
+     */
+    private String customAddress;
+
+    /**
+     * 备注
+     */
+    private String context;
+
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updatedTime;
+
+    /**
+     * 租户号
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomInfoMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 客户管理信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+public interface CrmCustomInfoMapper extends CrudMapper<CrmCustomInfo> {
+
+}

+ 27 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomInfoService.java

@@ -0,0 +1,27 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+
+/**
+ * <p>
+ * 客户管理信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+public interface CrmCustomInfoService extends CrudService<CrmCustomInfo> {
+    void add(CrmCustomInfo crmCustomInfo);
+
+    void edit(CrmCustomInfo crmCustomInfo);
+
+    void remove(Integer id);
+
+    CommonPage<CrmCustomInfo> page(CrmCustomInfoRequestVO crmCustomInfoRequestVO);
+
+    boolean checkNameUnique(CrmCustomInfo crmCustomInfo);
+
+}

+ 98 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomInfoServiceImpl.java

@@ -0,0 +1,98 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.iot.mapper.CrmCustomInfoMapper;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * <p>
+ * 客户管理信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@Service
+public class CrmCustomInfoServiceImpl extends AbstractCrudService<CrmCustomInfoMapper, CrmCustomInfo> implements CrmCustomInfoService {
+
+    @Override
+    public void add(CrmCustomInfo crmCustomInfo){
+        if(checkNameUnique(crmCustomInfo)){
+            throw new BusinessException("新增客户管理失败,项目名称"+crmCustomInfo.getProjectName()+"已经存在");
+        }
+
+        if(crmCustomInfo.getExpireTime().compareTo(LocalDateTime.now())<0){
+            crmCustomInfo.setMaintainStatus(2);
+        }else{
+            crmCustomInfo.setMaintainStatus(1);
+        }
+        crmCustomInfo.setCreatedBy(SecurityUtils.getUsername());
+        crmCustomInfo.setCreatedTime(LocalDateTime.now());
+        crmCustomInfo.setTenantId(SecurityUtils.getTenantId());
+        this.save(crmCustomInfo);
+
+    }
+
+    @Override
+    public void edit(CrmCustomInfo crmCustomInfo){
+        if(checkNameUnique(crmCustomInfo)){
+            throw new BusinessException("修改客户管理信息失败,项目名称"+crmCustomInfo.getProjectName()+"已经存在");
+        }
+        crmCustomInfo.setUpdatedBy(SecurityUtils.getUsername());
+        crmCustomInfo.setUpdatedTime(LocalDateTime.now());
+        this.updateById(crmCustomInfo);
+    }
+
+    @Override
+    public void remove(Integer id){
+        CrmCustomInfo crmCustomInfo = this.getById(id);
+        Optional.ofNullable(crmCustomInfo).orElseThrow(()->new BusinessException("客户管理信息不存在"));
+        crmCustomInfo.setDeleteFlag(1);
+        this.updateById(crmCustomInfo);
+    }
+
+    @Override
+    public CommonPage<CrmCustomInfo> page(CrmCustomInfoRequestVO cus){
+        IPage<CrmCustomInfo> page = new Page<>(cus.getCurrent(),cus.getSize());
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(cus.getProjectName()),CrmCustomInfo::getProjectName,cus.getProjectName())
+                .like(StringUtils.isNotBlank(cus.getCompanyName()),CrmCustomInfo::getCompanyName,cus.getCompanyName())
+                .eq(cus.getMaintainStatus() != null,CrmCustomInfo::getMaintainStatus,cus.getMaintainStatus())
+                .between(StringUtils.isNotBlank(cus.getStartTime())&&StringUtils.isNotBlank(cus.getEndTime()),CrmCustomInfo::getExpireTime,cus.getStartTime(),cus.getEndTime())
+                .eq(CrmCustomInfo::getDeleteFlag,0)
+                .orderByDesc(CrmCustomInfo::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),cus.getSize(),cus.getCurrent());
+
+    }
+
+    @Override
+    public boolean checkNameUnique(CrmCustomInfo crmCustomInfo){
+        Integer id = null == crmCustomInfo.getId()?-1:crmCustomInfo.getId();
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(CrmCustomInfo::getProjectName,crmCustomInfo.getProjectName())
+                    .eq(CrmCustomInfo::getDeleteFlag,0);
+        CrmCustomInfo one = this.getOne(queryWrapper);
+        return null != one && !Objects.equals(one.getId(),id);
+
+    }
+
+}

+ 3 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -78,9 +78,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     public void update(DmpDeviceInfo dmpDeviceInfo) {
         dmpDeviceInfo.setUpdatedBy(SecurityUtils.getUsername());
         dmpDeviceInfo.setUpdatedTime(LocalDateTime.now());
-//        if (checkNameUnique(dmpDeviceInfo)){
-//            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
-//        }
+        if (checkNameUnique(dmpDeviceInfo)){
+            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+        }
         this.updateById(dmpDeviceInfo);
 
     }

+ 40 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmCustomInfoRequestVO.java

@@ -0,0 +1,40 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmCustomInfoRequestVO {
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 状态;1:使用中,2:已到期
+     */
+    private Integer maintainStatus;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+}

+ 29 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomInfoMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.iot.mapper.CrmCustomInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmCustomInfo">
+        <id column="id" property="id" />
+        <result column="project_id" property="projectId" />
+        <result column="project_name" property="projectName" />
+        <result column="company_name" property="companyName" />
+        <result column="custom_person" property="customPerson" />
+        <result column="phone" property="phone" />
+        <result column="phone1" property="phone1" />
+        <result column="maintain_amount" property="maintainAmount" />
+        <result column="email" property="email" />
+        <result column="sale_person" property="salePerson" />
+        <result column="maintain_status" property="maintainStatus" />
+        <result column="expire_time" property="expireTime" />
+        <result column="custom_address" property="customAddress" />
+        <result column="context" property="context" />
+        <result column="delete_flag" property="deleteFlag" />
+        <result column="created_by" property="createdBy" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_by" property="updatedBy" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>