Browse Source

12/8

master
wangpengfei 1 year ago
parent
commit
02cbfc8b67
  1. 125
      src/main/java/com/yxt/yyth/api/empcard/EmpAppletVo.java
  2. 35
      src/main/java/com/yxt/yyth/api/empcard/EmpCard.java
  3. 35
      src/main/java/com/yxt/yyth/api/empcard/EmpCardDto.java
  4. 23
      src/main/java/com/yxt/yyth/api/empcard/EmpCardExport.java
  5. 18
      src/main/java/com/yxt/yyth/api/empcard/EmpCardQuery.java
  6. 29
      src/main/java/com/yxt/yyth/api/empcard/EmpCardVo.java
  7. 31
      src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecord.java
  8. 30
      src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordDto.java
  9. 15
      src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordQuery.java
  10. 19
      src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordVo.java
  11. 34
      src/main/java/com/yxt/yyth/api/lpkgiftcard/AppletVo.java
  12. 39
      src/main/java/com/yxt/yyth/biz/empcard/EmpCardMapper.java
  13. 104
      src/main/java/com/yxt/yyth/biz/empcard/EmpCardMapper.xml
  14. 67
      src/main/java/com/yxt/yyth/biz/empcard/EmpCardRest.java
  15. 227
      src/main/java/com/yxt/yyth/biz/empcard/EmpCardService.java
  16. 22
      src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordMapper.java
  17. 22
      src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordMapper.xml
  18. 34
      src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordRest.java
  19. 59
      src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordService.java

125
src/main/java/com/yxt/yyth/api/empcard/EmpAppletVo.java

@ -0,0 +1,125 @@
package com.yxt.yyth.api.empcard;
import cn.hutool.core.date.DateUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.yyth.api.lpkgiftcard.GoodsVo;
import com.yxt.yyth.api.lpkreserveorder.LpkReserveOrderCardVo;
import com.yxt.yyth.api.lpkstore.StoreSelect;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author wangpengfei
* @date 2023/12/8 11:26
*/
@Data
public class EmpAppletVo {
private String dateStart;
private String dateEnd;
private String customerSid;
private String giftbagSid;
private String code;
private String sid ;
private String state;
private String states;
private boolean showBtn=true;
private boolean showRecord=true;
private String time;
private String name="卡号:";
private String pName;
private String start;
private String end;
private String store; //门店
private String reserveDate; //预约时间
private List<GoodsVo> goodsVos;
private List<StoreSelect> select;
private String storeSid;//上次提货地点
private String addressName;
private String isReservation;//是否超过预约时间 0 否 1是
private boolean notRese=true; //是否能预约
private List<LpkReserveOrderCardVo> orderCardVoList;
private String value;
private String serialNumber;
public String getStart() {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
start=sdf.format(DateUtil.offsetDay(new Date(),+2));
if(StringUtils.isNotBlank(dateEnd)){
int i=DateUtil.parse(sdf.format(DateUtil.parse(start))).compareTo(DateUtil.parse(sdf.format(DateUtil.parse(dateEnd))));
if(String.valueOf(i).equals("-1")){
end=sdf.format(DateUtil.parse(dateEnd));
}else{
end=sdf.format(DateUtil.offsetDay(DateUtil.parse(dateEnd),2));
}
}
return start;
}
public String getName() {
name=name+code;
return name;
}
public String getTime() {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy.MM.dd");
if(StringUtils.isNotBlank(dateStart)){
if(StringUtils.isNotBlank(dateEnd)){
time=sdf.format(DateUtil.parse(dateStart))+"~"+sdf.format(DateUtil.parse(dateEnd));
}
}
return time;
}
public boolean isShowBtn() {
if(states.equals("5")){
if(isReservation.equals("1")){
this.state="已完成";
showBtn=false;
}
}
return showBtn;
}
public String getState() {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
if(StringUtils.isNotBlank(dateEnd)){
int i=DateUtil.parse(sdf.format(DateUtil.parse(dateEnd))).compareTo(DateUtil.parse(sdf.format(DateUtil.date())));
if( String.valueOf(i).equals("-1")){
state="已过期";
showBtn=false;
}else{
state="待提货";
if(states.equals("5")){
if(isReservation.equals("0")){
this.state="已预约";
this.notRese=false;
}else{
this.state="已完成";
showBtn=false;
}
}else if(states.equals("4")){
if(isReservation.equals("0")){
this.state="已预约";
}else{
this.state="待提货";
}
}
}
}else{
state="待提货";
if(states.equals("5")){
if(isReservation.equals("0")){
this.state="已预约";
}else{
this.state="已完成";
showBtn=false;
}
}
}
return state;
}
}

35
src/main/java/com/yxt/yyth/api/empcard/EmpCard.java

@ -0,0 +1,35 @@
package com.yxt.yyth.api.empcard;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.UUID;
/**
* @author wangpengfei
* @date 2023/12/8 9:10
*/
@Data
public class EmpCard {
private String id;
private String sid= UUID.randomUUID().toString();
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private String remarks;
private String isEnable;
private String recordId;
private String recordSid;
private String giftbagSid;
private String serialNumber;
private String code;
private String codeKey;
private String state;
private String grantName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date grantDate;
private String customerSid;
private String customerMobile;
private Date bindDate;
}

35
src/main/java/com/yxt/yyth/api/empcard/EmpCardDto.java

@ -0,0 +1,35 @@
package com.yxt.yyth.api.empcard;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
import java.util.Date;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardDto implements Dto {
private String id;
private String sid;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private String remarks;
private String isEnable;
private String recordId;
private String recordSid;
private String serialNumber;
private String code;
private String codeKey;
private String state;
private String grantName;
private String grantDate;
private String customerSid;
private String customerMobile;
private String giftbagSid;
private String num;
private String cardArea;
}

23
src/main/java/com/yxt/yyth/api/empcard/EmpCardExport.java

@ -0,0 +1,23 @@
package com.yxt.yyth.api.empcard;
import com.yxt.common.core.utils.ExportEntityMap;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 11:29
*/
@Data
public class EmpCardExport {
@ExportEntityMap(CnName = "企业卡二维码", EnName = "pic")
private String pic;
@ExportEntityMap(CnName = "企业卡编码第一行", EnName = "code1")
private String code1;
@ExportEntityMap(CnName = "企业卡编码第二行", EnName = "code2")
private String code2;
@ExportEntityMap(CnName = "企业卡密码", EnName = "codeKey")
private String codeKey;
@ExportEntityMap(CnName = "序列号", EnName = "serialNumber")
private String serialNumber;
private String code;
}

18
src/main/java/com/yxt/yyth/api/empcard/EmpCardQuery.java

@ -0,0 +1,18 @@
package com.yxt.yyth.api.empcard;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardQuery implements Query {
private String state;
private String noEnd;
private String noStart;
private String number;
private String sid;
}

29
src/main/java/com/yxt/yyth/api/empcard/EmpCardVo.java

@ -0,0 +1,29 @@
package com.yxt.yyth.api.empcard;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardVo implements Vo {
private String id;
private String sid;
private String createTime;
private String remarks;
private String isEnable;
private String recordId;
private String recordSid;
private String giftbagSid;
private String serialNumber;
private String code;
private String codeKey;
private String state;
private String grantName;
private String grantDate;
private String customerSid;
private String customerMobile;
}

31
src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecord.java

@ -0,0 +1,31 @@
package com.yxt.yyth.api.empcardbuildrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.UUID;
/**
* @author wangpengfei
* @date 2023/12/8 9:10
*/
@Data
public class EmpCardBuildRecord {
private String id;
private String sid= UUID.randomUUID().toString();
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private String remarks;
// private String isEnable;
private String giftbagSid;
private String startNumber;
private String endNumber;
private String countNumber;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date buildDate;
private String cardArea;
}

30
src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordDto.java

@ -0,0 +1,30 @@
package com.yxt.yyth.api.empcardbuildrecord;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardBuildRecordDto implements Dto {
private String id;
private String sid;
private String createTime;
private String remarks;
private String isEnable;
private String recordId;
private String recordSid;
private String giftbagSid;
private String serialNumber;
private String code;
private String codeKey;
private String state;
private String grantName;
private String grantDate;
private String customerSid;
private String customerMobile;
private String Num;
private String cardArea;
}

15
src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordQuery.java

@ -0,0 +1,15 @@
package com.yxt.yyth.api.empcardbuildrecord;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardBuildRecordQuery implements Query {
private String startDate; //开始时间
private String endDate; //结束时间
private String countNumber; //总数
}

19
src/main/java/com/yxt/yyth/api/empcardbuildrecord/EmpCardBuildRecordVo.java

@ -0,0 +1,19 @@
package com.yxt.yyth.api.empcardbuildrecord;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @author wangpengfei
* @date 2023/12/8 9:11
*/
@Data
public class EmpCardBuildRecordVo implements Vo {
private String sid;
private String buildDate; //创建时间
private String countNumber; //总数
private String startNumber; //起始号
private String endNumber; //结束号
private String bagName;
private String grantCountNumber; //发放总数
}

34
src/main/java/com/yxt/yyth/api/lpkgiftcard/AppletVo.java

@ -1,5 +1,6 @@
package com.yxt.yyth.api.lpkgiftcard;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.yyth.api.lpkreserveorder.LpkReserveOrderCardVo;
@ -7,6 +8,10 @@ import com.yxt.yyth.api.lpkstore.StoreSelect;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
@ -46,13 +51,37 @@ public class AppletVo {
public String getStart() {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LocalDate today = LocalDate.now(); // 获取今天的日期
LocalTime timeOfDay = LocalTime.of(16, 0); // 设置下午4点的小时数为16,分钟数为0
LocalDateTime dateAndTime = LocalDateTime.of(today, timeOfDay); // 将日期和时间合并成完整的日期时间对象
ZoneId zoneId = ZoneId.systemDefault();
Date date = Date.from(dateAndTime.atZone(zoneId).toInstant());
System.out.println(date);
//1>2 1 、1<2 -1 、1=2 0
int k=DateUtil.parse(sdf1.format(DateUtil.parse(sdf1.format(new Date())))).compareTo(DateUtil.parse(sdf1.format(DateUtil.parse(sdf1.format(date)))));
if(String.valueOf(k).equals("1")){
start=sdf.format(DateUtil.offsetDay(new Date(),+2));
}else{
start=sdf.format(DateUtil.offsetDay(new Date(),+1));
}
if(StringUtils.isNotBlank(dateEnd)){
int i=DateUtil.parse(sdf.format(DateUtil.parse(start))).compareTo(DateUtil.parse(sdf.format(DateUtil.parse(dateEnd))));
if(String.valueOf(i).equals("-1")){
long o=DateUtil.between(DateUtil.parse(start),DateUtil.parse(dateEnd), DateUnit.DAY);
if(o<10){
end=sdf.format(DateUtil.offsetDay(DateUtil.parse(dateEnd),10));
}else{
end=sdf.format(DateUtil.parse(dateEnd));
}
}else{
if(String.valueOf(k).equals("1")){
end=sdf.format(DateUtil.offsetDay(DateUtil.parse(dateEnd),2));
}else{
end=sdf.format(DateUtil.offsetDay(DateUtil.parse(dateEnd),1));
}
}
}
return start;
@ -118,11 +147,6 @@ public class AppletVo {
showBtn=false;
}
}
// state="正常";
// if(states.equals("5")){
// this.state="失效";
// showBtn=false;
// }
}
return state;
}

39
src/main/java/com/yxt/yyth/biz/empcard/EmpCardMapper.java

@ -0,0 +1,39 @@
package com.yxt.yyth.biz.empcard;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.yyth.api.empcard.EmpAppletVo;
import com.yxt.yyth.api.empcard.EmpCard;
import com.yxt.yyth.api.empcard.EmpCardExport;
import com.yxt.yyth.api.empcard.EmpCardVo;
import com.yxt.yyth.api.lpkgiftcard.AppletVo;
import com.yxt.yyth.api.lpkgiftcard.LpkGiftCard;
import com.yxt.yyth.api.lpkgiftcard.LpkGiftCardListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Mapper
public interface EmpCardMapper extends BaseMapper<EmpCard> {
String selctMaxSerNum(@Param("cardArea") String cardArea);
IPage<EmpCardVo> cardList(IPage<EmpCard> page, @Param(Constants.WRAPPER) QueryWrapper<EmpCard> qw);
IPage<EmpCardVo> recordDetails(IPage<EmpCard> page, @Param(Constants.WRAPPER) QueryWrapper<EmpCard> qw);
@Select("SELECT card.*, case card.state WHEN 3 then '未提货' WHEN 4 then '已经预约提货(预约部分提货)' WHEN 5 then '已经提取完成' end stateValue,\n" +
"bag.dateStart as dateStart,bag.dateEnd as dateEnd,bag.name as pname,card.state as states,card.serialNumber as serialNumber\n" +
"FROM emp_card card LEFT JOIN lpk_giftbag bag on card.giftbagSid=bag.sid where card.sid=#{sid}")
EmpAppletVo getEmpCardBySid(@Param("sid") String sid);
List<EmpCardExport> exportExcel(@Param(Constants.WRAPPER) QueryWrapper<LpkGiftCard> qw);
@Select("select count(id) from emp_card where recordSid=#{recordSid} and grantRecordSid is not null")
Integer cardGrantCount(@Param("recordSid") String recordSid);
IPage<AppletVo> getGifCardByCustomerSid(IPage<LpkGiftCard> page, @Param(Constants.WRAPPER) QueryWrapper<LpkGiftCard> qw);
}

104
src/main/java/com/yxt/yyth/biz/empcard/EmpCardMapper.xml

@ -0,0 +1,104 @@
<?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.yxt.yyth.biz.empcard.EmpCardMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="ListPageVo" resultType="com.yxt.yyth.api.empcard.EmpCardVo">
select
*
from emp_card
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selctMaxSerNum" resultType="java.lang.String">
SELECT MAX(serialNumber) as sNo
FROM emp_card
WHERE LENGTH(serialNumber) = 8
AND LEFT (serialNumber
, 2) = #{cardArea}
</select>
<select id="cardList" resultType="com.yxt.yyth.api.empcard.EmpCardVo">
SELECT
sid,
date_format(createTime, '%Y-%m-%d') as createTime,
remarks,
giftbagSid,
serialNumber,
code,
codeKey,
CASE card.state
WHEN 1 THEN '未绑定'
WHEN 2 THEN '已绑定客户'
WHEN 3 THEN '已完成' END AS `state`,
grantName,
date_format(grantDate, '%Y-%m-%d') as grantDate,
customerMobile,
customerSid
FROM
emp_card
<where>
${ew.sqlSegment}
</where>
</select>
<select id="exportExcel" resultType="com.yxt.yyth.api.empcard.EmpCardExport">
SELECT
serialNumber,
code,
codeKey
FROM
emp_card
<where>
${ew.sqlSegment}
</where>
</select>
<select id="recordDetails" resultType="com.yxt.yyth.api.empcard.EmpCardVo">
SELECT
card.sid,
card.recordId,
date_format(card.createTime, '%Y-%m-%d') as createTime,
card.remarks,
card.giftbagSid,
card.serialNumber,
card.code,
card.codeKey,
CASE card.state
WHEN 1 THEN '未绑定'
WHEN 2 THEN '已绑定客户'
WHEN 3 THEN '已完成'
END AS `state`,
grantName,
date_format(card.grantDate, '%Y-%m-%d') as grantDate,
card.customerMobile,
card.customerSid
FROM
emp_card card
<where>
${ew.sqlSegment}
</where>
</select>
<select id="getGifCardByCustomerSid" resultType="com.yxt.yyth.api.lpkgiftcard.AppletVo">
SELECT
card.*,
case card.state
WHEN 2 then '已绑定'
WHEN 3 then '已完成'
end stateValue,
bag.dateStart as dateStart
,bag.dateEnd as dateEnd
,bag.name as pname,
card.state as states,
card.serialNumber as serialNumber
FROM
emp_card card
LEFT JOIN lpk_giftbag bag on card.giftbagSid=bag.sid
<where>
${ew.sqlSegment}
</where>
ORDER BY card.state desc,card.bindDate desc
</select>
</mapper>

67
src/main/java/com/yxt/yyth/biz/empcard/EmpCardRest.java

@ -0,0 +1,67 @@
package com.yxt.yyth.biz.empcard;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.yyth.api.empcard.EmpCardDto;
import com.yxt.yyth.api.empcard.EmpCardQuery;
import com.yxt.yyth.api.empcard.EmpCardVo;
import com.yxt.yyth.api.lpkgiftcard.BindCardDto;
import com.yxt.yyth.api.lpkgiftcard.LpkGiftCardListQuery;
import com.yxt.yyth.api.lpkgiftcard.LpkGiftCardListVo;
import com.yxt.yyth.api.lpkgiftcard.LpkGiftCardQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RestController;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Api(tags = "礼品卡信息")
@RestController
@RequestMapping("empcard")
public class EmpCardRest {
@Autowired
EmpCardService empCardService;
@PostMapping("/bindCard")
@ApiOperation(value = "客户绑定企业卡")
public ResultBean wxBindMobile(@RequestBody EmpCardDto dto) {
return empCardService.bindCard(dto);
}
@PostMapping("/generateCard")
@ApiOperation(value = "生成企业卡信息")
public ResultBean generateCard(@RequestBody EmpCardDto dto) {
return empCardService.generateCard(dto);
}
@PostMapping("/cardList")
@ApiOperation(value = "企业卡信息列表")
public ResultBean<PagerVo<EmpCardVo>> cardList(@RequestBody PagerQuery<EmpCardQuery> pq) {
return empCardService.cardList(pq);
}
@ApiOperation("查看记录详情列表")
@PostMapping("/recordDetails")
public ResultBean<PagerVo<EmpCardVo>> recordDetails(@RequestBody PagerQuery<EmpCardQuery> pq) {
return empCardService.recordDetails(pq);
}
@ApiOperation(value = "企业卡信息列表导出")
@PostMapping("/exportExcel")
public void exportExcel(@RequestBody LpkGiftCardListQuery query) {
empCardService.exportExcel(query);
}
@PostMapping("/gifCardByCustomerSid")
@ApiOperation(value = "获取客户绑定的礼包卡")
public ResultBean gifCardByCustomerSid(@RequestBody PagerQuery<LpkGiftCardQuery> query) {
return empCardService.getGifCardByCustomerSid(query);
}
}

227
src/main/java/com/yxt/yyth/biz/empcard/EmpCardService.java

@ -0,0 +1,227 @@
package com.yxt.yyth.biz.empcard;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.yyth.api.empcard.*;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecord;
import com.yxt.yyth.api.lpkgiftcard.*;
import com.yxt.yyth.biz.empcardbuildrecord.EmpCardBuildRecordService;
import com.yxt.yyth.biz.lpkgiftcard.generateRule.UniqueIdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Service
public class EmpCardService extends MybatisBaseService<EmpCardMapper, EmpCard> {
@Autowired
EmpCardBuildRecordService empCardBuildRecordService;
@Autowired
private HttpServletResponse response;
public ResultBean bindCard(EmpCardDto bindCardDto) {
ResultBean rb = new ResultBean().fail();
EmpCard lpkGiftCard = baseMapper.selectOne(new QueryWrapper<EmpCard>().eq("code", bindCardDto.getCode())
.eq("codeKey", bindCardDto.getCodeKey()));
if (null == lpkGiftCard) {
return rb.setMsg("请核对卡号和密钥");
}
EmpAppletVo vo = baseMapper.getEmpCardBySid(lpkGiftCard.getSid());
if (vo.getState().equals("已过期")) {
return rb.setMsg("该卡已过期");
}
if (StringUtils.isNotBlank(lpkGiftCard.getCustomerSid())) {
return rb.setMsg("该卡已绑定");
}
lpkGiftCard.setCustomerSid(bindCardDto.getCustomerSid());
lpkGiftCard.setState("2");
lpkGiftCard.setBindDate(new Date());
baseMapper.updateById(lpkGiftCard);
return rb.success().setMsg("绑定成功");
}
@Transactional(rollbackFor = Exception.class)
public ResultBean generateCard(EmpCardDto dto) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(dto.getGiftbagSid())) {
return rb.setMsg("请添加礼包");
}
if (StringUtils.isBlank(dto.getNum())) {
return rb.setMsg("请输入生成卡片的数量");
}
if (StringUtils.isBlank(dto.getCardArea())) {
return rb.setMsg("请输入区域号");
}
int i = Integer.parseInt(dto.getNum());
String cardArea = dto.getCardArea();
EmpCardBuildRecord record = new EmpCardBuildRecord();
record.setCountNumber(dto.getNum());
record.setBuildDate(new DateTime());
record.setCreateTime(new DateTime());
record.setGiftbagSid(dto.getGiftbagSid());
String startNum = "";
String endNum = "";
record.setCardArea(cardArea);
empCardBuildRecordService.insert(record);
EmpCardBuildRecord cardBuildRecord = empCardBuildRecordService.fetchBySid(record.getSid());
if (null != cardBuildRecord) {
for (int j = 0; j < i; j++) {
EmpCard card = new EmpCard();
card.setRecordSid(record.getSid());
card.setState("1");
card.setCreateTime(new DateTime());
card.setGiftbagSid(dto.getGiftbagSid());
String uuid = UniqueIdGenerator.generateUniqueID();
int randomNumber = new Random().nextInt(900000) + 100000;
card.setCodeKey(String.valueOf(randomNumber));
card.setCode(uuid);
String maxSerNum = baseMapper.selctMaxSerNum(cardArea);
if (StringUtils.isBlank(maxSerNum)) {
card.setSerialNumber(cardArea + "000001");
} else {
String substringSer = maxSerNum.substring(cardArea.length());
int i1 = Integer.parseInt(substringSer);
int finNum = i1 + 1;
int length = String.valueOf(finNum).length();
int len = 6 - length;
String num = String.valueOf(finNum);
for (int a = 0; a < len; a++) {
num = "0" + num;
}
card.setSerialNumber(cardArea + num);
}
if (j == 0) {
startNum = card.getSerialNumber();
}
if (j == i - 1) {
endNum = card.getSerialNumber();
}
card.setRecordId(cardBuildRecord.getId());
//生成二维码转base64
// genarateQRCodesToBase64(card.getCode(),card.getSid());
baseMapper.insert(card);
}
}
cardBuildRecord.setStartNumber(startNum);
cardBuildRecord.setEndNumber(endNum);
empCardBuildRecordService.updateById(cardBuildRecord);
return rb.success();
}
public ResultBean<PagerVo<EmpCardVo>> cardList(PagerQuery<EmpCardQuery> pq) {
ResultBean rb = ResultBean.fireFail();
EmpCardQuery query = pq.getParams();
QueryWrapper<EmpCard> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
qw.eq("1", "1");
String sNoStart = query.getNoStart();
String sNoEnd = query.getNoEnd();
qw.apply(StringUtils.isNotBlank(sNoStart), "serialNumber >=" + sNoStart).
apply(StringUtils.isNotBlank(sNoEnd), "serialNumber <=" + sNoEnd
);
qw.orderByDesc("id");
IPage<EmpCard> page = PagerUtil.queryToPage(pq);
IPage<EmpCardVo> pagging = baseMapper.cardList(page, qw);
PagerVo<EmpCardVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<PagerVo<EmpCardVo>> recordDetails(PagerQuery<EmpCardQuery> pq) {
ResultBean rb = ResultBean.fireFail();
EmpCardQuery query = pq.getParams();
QueryWrapper<EmpCard> qw = new QueryWrapper<>();
qw.eq("1", "1");
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
if (StringUtils.isNotBlank(query.getNumber())) {
qw.like("serialNumber", query.getNumber());
}
if (StringUtils.isNotBlank(query.getSid())) {
qw.eq("recordSid", query.getSid());
}
qw.orderByDesc("serialNumber");
IPage<EmpCard> page = PagerUtil.queryToPage(pq);
IPage<EmpCardVo> pagging = baseMapper.recordDetails(page, qw);
PagerVo<EmpCardVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public void exportExcel(LpkGiftCardListQuery query) {
String finUrl = "https://supervise.yxtsoft.com/lpkapi?qy=";
QueryWrapper<LpkGiftCard> qw = new QueryWrapper<>();
qw.eq("1", "1");
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
if (StringUtils.isNotBlank(query.getNumber())) {
qw.like("serialNumber", query.getNumber());
}
// qw.eq("recordSid", query.getSid());
//得到所有要导出的数据
List<EmpCardExport> exportList = baseMapper.exportExcel(qw);
if (!exportList.isEmpty()) {
for (EmpCardExport lpkGiftCardExport : exportList) {
if (StringUtils.isNotBlank(lpkGiftCardExport.getCode())) {
lpkGiftCardExport.setPic(finUrl + lpkGiftCardExport.getCode());
lpkGiftCardExport.setCode1(lpkGiftCardExport.getCode().substring(0, 10));
lpkGiftCardExport.setCode2(lpkGiftCardExport.getCode().substring(lpkGiftCardExport.getCode().length() - 10));
}
}
}
//定义导出的excel名字
String excelName = "1";
String fileNameURL = "1";
// try {
// fileNameURL = URLEncoder.encode(excelName, "UTF-8");
// fileNameURL = URLEncoder.encode(excelName, "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
//导出提货卡信息列表
ExportExcelUtils.export(fileNameURL, exportList, EmpCardExport.class, response);
}
public ResultBean<Integer> cardGrantCount(String recordSid) {
ResultBean rb = new ResultBean().fail();
Integer i = baseMapper.cardGrantCount(recordSid);
return rb.success().setData(i);
}
public ResultBean getGifCardByCustomerSid(PagerQuery<LpkGiftCardQuery> pq) {
ResultBean rb = new ResultBean().fail();
LpkGiftCardQuery query = pq.getParams();
if (StringUtils.isBlank(query.getCustomerSid())) {
return rb.setMsg("参数不能为空");
}
QueryWrapper<LpkGiftCard> qw = new QueryWrapper<>();
// updateIsItInvalid(query.getCustomerSid());
if (StringUtils.isNotBlank(query.getCustomerSid())) {
qw.eq("customerSid", query.getCustomerSid());
}
IPage<LpkGiftCard> page = PagerUtil.queryToPage(pq);
IPage<AppletVo> list = baseMapper.getGifCardByCustomerSid(page, qw);
PagerVo<AppletVo> p = PagerUtil.pageToVo(list, null);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return rb.success().setData(p);
}
}

22
src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordMapper.java

@ -0,0 +1,22 @@
package com.yxt.yyth.biz.empcardbuildrecord;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.yyth.api.empcard.EmpCard;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecord;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordVo;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecord;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecordVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Mapper
public interface EmpCardBuildRecordMapper extends BaseMapper<EmpCardBuildRecord> {
IPage<EmpCardBuildRecordVo> recordListPage(IPage<EmpCardBuildRecord> page, @Param(Constants.WRAPPER) QueryWrapper<EmpCardBuildRecord> qw);
}

22
src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordMapper.xml

@ -0,0 +1,22 @@
<?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.yxt.yyth.biz.empcardbuildrecord.EmpCardBuildRecordMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="recordListPage" resultType="com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordVo">
select
r.sid,
date_format(r.buildDate, '%Y-%m-%d') as buildDate,
r.countNumber,
r.startNumber,
r.endNumber,
g.name as bagName
from emp_card_build_record as r
left join lpk_giftbag as g on r.giftbagSid = g.sid
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

34
src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordRest.java

@ -0,0 +1,34 @@
package com.yxt.yyth.biz.empcardbuildrecord;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.yyth.api.empcard.EmpCardDto;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordQuery;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordVo;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecordQuery;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecordVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RestController;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Api(tags = "礼品卡信息")
@RestController
@RequestMapping("empcardbuildrecord")
public class EmpCardBuildRecordRest {
@Autowired
EmpCardBuildRecordService empCardBuildRecordService;
@ApiOperation("创建记录列表")
@PostMapping("/recordListPage")
public ResultBean<PagerVo<EmpCardBuildRecordVo>> recordListPage(@RequestBody PagerQuery<EmpCardBuildRecordQuery> pq) {
return empCardBuildRecordService.recordListPage(pq);
}
}

59
src/main/java/com/yxt/yyth/biz/empcardbuildrecord/EmpCardBuildRecordService.java

@ -0,0 +1,59 @@
package com.yxt.yyth.biz.empcardbuildrecord;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.yyth.api.empcard.EmpCard;
import com.yxt.yyth.api.empcard.EmpCardDto;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecord;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordQuery;
import com.yxt.yyth.api.empcardbuildrecord.EmpCardBuildRecordVo;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecord;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecordQuery;
import com.yxt.yyth.api.lpkcardbuildrecord.LpkCardBuildRecordVo;
import com.yxt.yyth.biz.empcard.EmpCardService;
import com.yxt.yyth.biz.lpkgiftcard.generateRule.UniqueIdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Random;
/**
* @author wangpengfei
* @date 2023/12/8 9:19
*/
@Service
public class EmpCardBuildRecordService extends MybatisBaseService<EmpCardBuildRecordMapper, EmpCardBuildRecord> {
@Autowired
EmpCardService empCardService;
public ResultBean<PagerVo<EmpCardBuildRecordVo>> recordListPage(PagerQuery<EmpCardBuildRecordQuery> pq) {
ResultBean rb = ResultBean.fireFail();
EmpCardBuildRecordQuery query = pq.getParams();
QueryWrapper<EmpCardBuildRecord> qw = new QueryWrapper<>();
qw.eq("1", "1");
if (StringUtils.isNotBlank(query.getCountNumber())) {
qw.eq("r.countNumber", query.getCountNumber());
}
String startDate = query.getStartDate();
String effEndTime = query.getEndDate();
qw.apply(org.apache.commons.lang3.StringUtils.isNotEmpty(startDate), "date_format (r.buildDate,'%Y-%m-%d') >= date_format('" + startDate + "','%Y-%m-%d')").
apply(org.apache.commons.lang3.StringUtils.isNotEmpty(effEndTime), "date_format (r.buildDate,'%Y-%m-%d') <= date_format('" + effEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("r.createTime");
IPage<EmpCardBuildRecord> page = PagerUtil.queryToPage(pq);
IPage<EmpCardBuildRecordVo> pagging = baseMapper.recordListPage(page, qw);
// for(EmpCardBuildRecordVo vo:pagging.getRecords()){
// vo.setGrantCountNumber(String.valueOf(empCardService.cardGrantCount(vo.getSid()).getData()));
// }
PagerVo<EmpCardBuildRecordVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
}
Loading…
Cancel
Save