瀏覽代碼

'开发客户提醒信息表-发送、客户提醒信息表-分页接口、客户发票信息表-新增和客户发票信息表-分页4个接口'

james 1 年之前
父節點
當前提交
2ea1890f7c

+ 14 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomRemindController.java

@@ -2,15 +2,13 @@ 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.CrmCustomRemind;
 import com.usky.iot.service.CrmCustomRemindService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -38,5 +36,17 @@ public class CrmCustomRemindController {
         return ApiResult.success();
     }
 
+    /**
+     * 分页
+     * @param current
+     * @param size
+     * @return
+     */
+    @GetMapping("/page")
+    public ApiResult<CommonPage<CrmCustomRemind>> page(@RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
+                                                       @RequestParam(value = "size", required = false, defaultValue = "10") Integer size){
+        return ApiResult.success(crmCustomRemindService.page(current,size));
+    }
+
 }
 

+ 49 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmInvoiceInfoController.java

@@ -0,0 +1,49 @@
+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.CrmInvoiceInfo;
+import com.usky.iot.service.CrmInvoiceInfoService;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 客户发票信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+@RestController
+@RequestMapping("/crmInvoiceInfo")
+public class CrmInvoiceInfoController {
+
+    @Autowired
+    private CrmInvoiceInfoService crmInvoiceInfoService;
+
+    /**
+     * 新增
+     * @param invoiceInfo
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmInvoiceInfo invoiceInfo){
+        crmInvoiceInfoService.add(invoiceInfo);
+        return ApiResult.success();
+    }
+
+    @PostMapping("/page")
+    public ApiResult<CommonPage<CrmInvoiceInfo>> page(@RequestBody CrmInvoiceInfoRequest crmInvoiceInfoRequest){
+        return ApiResult.success(crmInvoiceInfoService.page(crmInvoiceInfoRequest));
+    }
+
+}
+

+ 11 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomRemind.java

@@ -1,6 +1,7 @@
 package com.usky.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
@@ -87,5 +88,15 @@ public class CrmCustomRemind implements Serializable {
      */
     private Integer tenantId;
 
+    /**
+     * 单位名称
+     */
+    @TableField(exist = false)
+    private String companyName;
 
+    /**
+     * 到期日期
+     */
+    @TableField(exist = false)
+    private String expireDate;
 }

+ 111 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmInvoiceInfo.java

@@ -0,0 +1,111 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+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-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmInvoiceInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户管理id
+     */
+    private Integer customId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 税号
+     */
+    private String dutyId;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 申请人
+     */
+    private String applicant;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 金额
+     */
+    private Double amount;
+
+    /**
+     * 发票类型;1:普票,2:专票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 发票性质;1:电子发票,2:纸质发票
+     */
+    private Integer invoiceAttribute;
+
+    /**
+     * 邮寄地址
+     */
+    private String sendAddress;
+
+    /**
+     * 付款回执
+     */
+    private String paymentReceipt;
+
+    /**
+     * 创建用户
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 项目编号
+     */
+    @TableField(exist = false)
+    private Integer projectId;
+}

+ 21 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmInvoiceInfoMapper.java

@@ -0,0 +1,21 @@
+package com.usky.iot.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import com.usky.iot.service.vo.CrmInvoiceInfoVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 客户发票信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+public interface CrmInvoiceInfoMapper extends CrudMapper<CrmInvoiceInfo> {
+    Page<CrmInvoiceInfo> page(IPage<CrmInvoiceInfo> page, @Param("gr")CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+}

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomRemindService.java

@@ -1,5 +1,6 @@
 package com.usky.iot.service;
 
+import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.CrmCustomRemind;
 import com.usky.common.mybatis.core.CrudService;
 
@@ -15,4 +16,6 @@ public interface CrmCustomRemindService extends CrudService<CrmCustomRemind> {
 
     void add(CrmCustomRemind crmCustomRemind);
 
+    CommonPage<CrmCustomRemind> page(Integer current, Integer size);
+
 }

+ 22 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmInvoiceInfoService.java

@@ -0,0 +1,22 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 客户发票信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+public interface CrmInvoiceInfoService extends CrudService<CrmInvoiceInfo> {
+
+    void add(CrmInvoiceInfo invoiceInfo);
+
+    CommonPage<CrmInvoiceInfo> page(CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+}

+ 45 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomRemindServiceImpl.java

@@ -1,5 +1,11 @@
 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.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.util.DateUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.domain.CrmCustomRemind;
 import com.usky.iot.mapper.CrmCustomRemindMapper;
@@ -10,11 +16,16 @@ import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
 import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.profile.DefaultProfile;
 import com.google.gson.Gson;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
 import java.util.List;
 import java.util.Random;
 
@@ -33,20 +44,38 @@ public class CrmCustomRemindServiceImpl extends AbstractCrudService<CrmCustomRem
     public void add(CrmCustomRemind crmCustomRemind){
         String method = crmCustomRemind.getRemindMethod();
         StringBuffer sendStatus = new StringBuffer();
+        StringBuffer sendContext = new StringBuffer();
         //发送短信
-        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI9WERPIFIlHDg", "p7SQ0rYpraebcdoJ0l3tOtYmmgrR4q");
+        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
         IAcsClient client = new DefaultAcsClient(profile);
         SendSmsRequest request = new SendSmsRequest();
         request.setPhoneNumbers(crmCustomRemind.getPhone());//接收短信的手机号码
-        request.setSignName("永天智慧云");//短信签名名称
-        request.setTemplateCode("SMS_164095840");//短信模板CODE
-        String code = "test";
-        request.setTemplateParam("{\"code\":\""+code+"\"}");//短信模板变量对应的实际值
+        request.setSignName("上海永天科技股份有限公司");//短信签名名称
+        request.setTemplateCode("SMS_461735160");//短信模板CODE
+        Date date = DateUtils.parseDate(crmCustomRemind.getExpireDate());
+        long days = (date.getTime() - new Date().getTime())/(24*60*60*1000);
+        request.setTemplateParam("{\"name\":\""+crmCustomRemind.getCompanyName()+"\","+"\"days\":\""+days+"\","+"\"custom\":\""+crmCustomRemind.getCustomId()+"\"}");//短信模板变量对应的实际值
+
         try {
             SendSmsResponse response = client.getAcsResponse(request);
             if(response.getCode() != null){
                 if(response.getCode().equals("OK")){
                     sendStatus.append("1");
+
+                    //查询发送短信内容
+                    QuerySendDetailsRequest request1 = new QuerySendDetailsRequest();
+                    request1.setPhoneNumber(crmCustomRemind.getPhone());
+                    request1.setSendDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+                    request1.setPageSize((long)10);
+                    request1.setCurrentPage((long)1);
+                    QuerySendDetailsResponse response1 = client.getAcsResponse(request1);
+                    if(response1.getCode() != null){
+                        if(response1.getCode().equals("OK")){
+                            sendContext.append(response1.getSmsSendDetailDTOs().get(0).getContent());
+                        }
+
+                    }
+
                 }else{
                     sendStatus.append("2");
                 }
@@ -59,6 +88,7 @@ public class CrmCustomRemindServiceImpl extends AbstractCrudService<CrmCustomRem
         }
 
         crmCustomRemind.setSendStatus(sendStatus.toString());  //发送状态需要根据发送返回结果确认
+        crmCustomRemind.setSendContext(sendContext.toString()); //发送内容
         crmCustomRemind.setSendTime(LocalDateTime.now());
         crmCustomRemind.setCreateBy(SecurityUtils.getUsername());
         crmCustomRemind.setCreateTime(LocalDateTime.now());
@@ -66,4 +96,14 @@ public class CrmCustomRemindServiceImpl extends AbstractCrudService<CrmCustomRem
         this.save(crmCustomRemind);
     }
 
+    @Override
+    public CommonPage<CrmCustomRemind> page(Integer current, Integer size){
+        IPage<CrmCustomRemind> page = new Page<>(current,size);
+        LambdaQueryWrapper<CrmCustomRemind> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.orderByDesc(CrmCustomRemind::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
 }

+ 55 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmInvoiceInfoServiceImpl.java

@@ -0,0 +1,55 @@
+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.CollectionUtils;
+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.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.iot.mapper.CrmInvoiceInfoMapper;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.iot.service.CrmInvoiceInfoService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import com.usky.iot.service.vo.CrmInvoiceInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 客户发票信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+@Service
+public class CrmInvoiceInfoServiceImpl extends AbstractCrudService<CrmInvoiceInfoMapper, CrmInvoiceInfo> implements CrmInvoiceInfoService {
+    @Autowired
+    private CrmCustomInfoService crmCustomInfoService;
+
+    @Override
+    public void add(CrmInvoiceInfo crmInvoiceInfo){
+
+        crmInvoiceInfo.setCreateBy(SecurityUtils.getUsername());
+        crmInvoiceInfo.setCreateTime(LocalDateTime.now());
+        crmInvoiceInfo.setTenantId(SecurityUtils.getTenantId());
+        this.save(crmInvoiceInfo);
+    }
+
+    @Override
+    public CommonPage<CrmInvoiceInfo> page(CrmInvoiceInfoRequest crmInvoiceInfoRequest){
+        IPage<CrmInvoiceInfo> page = new Page<>(crmInvoiceInfoRequest.getCurrent(),crmInvoiceInfoRequest.getSize());
+        page = baseMapper.page(page,crmInvoiceInfoRequest);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
+}

+ 36 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoRequest.java

@@ -0,0 +1,36 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmInvoiceInfoRequest {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+}

+ 69 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoVO.java

@@ -0,0 +1,69 @@
+package com.usky.iot.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class CrmInvoiceInfoVO {
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 税号
+     */
+    private String dutyId;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 申请人
+     */
+    private String applicant;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 金额
+     */
+    private Double amount;
+
+    /**
+     * 发票类型;1:普票,2:专票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 发票性质;1:电子发票,2:纸质发票
+     */
+    private Integer invoiceAttribute;
+
+    /**
+     * 邮寄地址
+     */
+    private String sendAddress;
+
+    /**
+     * 付款回执
+     */
+    private String paymentReceipt;
+
+    /**
+     * 提交时间
+     */
+    private String createTime;
+}

+ 45 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmInvoiceInfoMapper.xml

@@ -0,0 +1,45 @@
+<?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.CrmInvoiceInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmInvoiceInfo">
+        <id column="id" property="id" />
+        <result column="custom_id" property="customId" />
+        <result column="invoice_title" property="invoiceTitle" />
+        <result column="duty_id" property="dutyId" />
+        <result column="email" property="email" />
+        <result column="applicant" property="applicant" />
+        <result column="phone" property="phone" />
+        <result column="amount" property="amount" />
+        <result column="invoice_type" property="invoiceType" />
+        <result column="invoice_attribute" property="invoiceAttribute" />
+        <result column="send_address" property="sendAddress" />
+        <result column="payment_receipt" property="paymentReceipt" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+    <select id="page" resultType="com.usky.iot.domain.CrmInvoiceInfo">
+        select
+        ci.*,
+        cc.project_id as projectId
+        from crm_invoice_info ci
+        left join crm_custom_info cc
+        on ci.custom_id = cc.id
+        <where>
+            <if test="gr.projectId != null">
+                and cc.project_id like CONCAT('%',#{gr.projectId},'%')
+            </if>
+            <if test="gr.invoiceTitle != null">
+                and ci.invoice_title like CONCAT('%',#{gr.invoiceTitle},'%')
+            </if>
+            <if test="gr.startTime != null and gr.startTime != '' and gr.endTime != null and gr.endTime != ''">
+                and  ci.create_time BETWEEN  #{gr.startTime} AND  #{gr.endTime}
+            </if>
+        </where>
+        order by ci.id desc
+    </select>
+</mapper>