提交 5ea6e123 authored 作者: 李秋林's avatar 李秋林

打卡、上报销量添加战区等信息

上级 ab7c15cc
...@@ -2,7 +2,7 @@ package com.wangxiaolu.promotion.controller.activity.employee; ...@@ -2,7 +2,7 @@ package com.wangxiaolu.promotion.controller.activity.employee;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus; import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.employee.vo.ApproveVO; import com.wangxiaolu.promotion.pojo.activity.employee.vo.ApproveVO;
import com.wangxiaolu.promotion.result.basedata.R; import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode; import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.employee.EmployeeCoreTemActivityService; import com.wangxiaolu.promotion.service.activity.employee.EmployeeCoreTemActivityService;
......
...@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*;
/** /**
* @author : liqiulin * @author : liqiulin
* @date : 2024-05-29 14 * @date : 2024-05-29 14
* @describe : 员工查询促销员活动上报信息 * @describe : 员工查询促销员打卡信息
*/ */
@Slf4j @Slf4j
@RestController @RestController
......
package com.wangxiaolu.promotion.controller.activity.temporary;
import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.promotion.common.redis.RedisKeys;
import com.wangxiaolu.promotion.common.redis.service.RedisCache;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.service.activity.temporary.PromotionStoreCoreService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author : liqiulin
* @date : 2024-06-18 13
* @describe : 店铺操作
*/
@Slf4j
@RestController
@RequestMapping("/activity/promotion/store/core")
public class PromotionStoreCoreController {
@Autowired
PromotionStoreCoreService promotionStoreCoreService;
@Autowired
RedisCache redisCache;
@PostMapping("/save")
public R saveStore(@RequestHeader("Authorization") String authorization, @RequestBody PromotionStoreDto promotionStoreDto) {
// 在缓存中查询
JSONObject userJson = redisCache.getToJson(RedisKeys.UserKeys.TEMPORARY_TOKEN.getKey() + authorization);
promotionStoreDto.setTemporaryId(userJson.getInteger("id"));
promotionStoreDto.setTemporaryName(userJson.getString("name"));
promotionStoreDto.setDeptQcId(userJson.getString("deptQcId"));
promotionStoreDto.setDeptQcOrgName(userJson.getString("deptQcOrgName"));
promotionStoreDto.setChargerQcId(userJson.getString("chargerQcId"));
promotionStoreDto.setChargerName(userJson.getString("chargerName"));
promotionStoreCoreService.saveStore(promotionStoreDto);
return R.success();
}
}
package com.wangxiaolu.promotion.controller.activity.temporary;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.PromotionStoreVo;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.service.activity.temporary.PromotionStoreQueryService;
import lombok.extern.slf4j.Slf4j;
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;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-06-18 15
* @describe :
*/
@Slf4j
@RestController
@RequestMapping("/activity/promotion/store/query")
public class PromotionStoreQueryController {
@Autowired
PromotionStoreQueryService promotionStoreQueryService;
/**
* 查询店铺列表:目前不分页
*/
@PostMapping("/list")
public R findStoreList(@RequestBody PromotionStoreVo promotionStoreVo){
List<PromotionStoreDto> storeDtos = promotionStoreQueryService.findStoreList(promotionStoreVo);
return R.success(storeDtos);
}
}
package com.wangxiaolu.promotion.controller.activity.temporary; package com.wangxiaolu.promotion.controller.activity.temporary;
import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.promotion.enums.activity.ClockType; import com.wangxiaolu.promotion.enums.activity.ClockType;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
...@@ -36,12 +37,12 @@ public class TemporaryActivityClockCoreController { ...@@ -36,12 +37,12 @@ public class TemporaryActivityClockCoreController {
* 促销员当日打卡信息保存 * 促销员当日打卡信息保存
*/ */
@PostMapping("/today/clock") @PostMapping("/today/clock")
public R clockInTodayActivity(@RequestBody @Validated TemporaryClockVo clockVo) { public R clockInTodayActivity(@RequestBody TemporaryClockVo clockVo) {
clockVo.validate(); clockVo.validate();
Integer clockType = clockVo.getClockType(); Integer clockType = clockVo.getClockType();
boolean isClockIn = ClockType.TEMPORARY_CLOCK_IN.equals(clockType); boolean isClockIn = ClockType.TEMPORARY_CLOCK_IN.equals(clockType);
// 上班卡必需有店铺id // 上班卡必需有店铺id
if (isClockIn && StringUtils.isBlank(clockVo.getStoreQcId())) { if (isClockIn && (Objects.isNull(clockVo.getStoreId()) || clockVo.getStoreId() <= 0)) {
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null); throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
} }
// 非上班卡必需有打卡记录ID // 非上班卡必需有打卡记录ID
...@@ -50,7 +51,7 @@ public class TemporaryActivityClockCoreController { ...@@ -50,7 +51,7 @@ public class TemporaryActivityClockCoreController {
} }
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡 // 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates()); // tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
/** /**
* todo redis打卡-限制重复提交 * todo redis打卡-限制重复提交
...@@ -59,7 +60,7 @@ public class TemporaryActivityClockCoreController { ...@@ -59,7 +60,7 @@ public class TemporaryActivityClockCoreController {
Date clockTime = new Date(); Date clockTime = new Date();
TemporaryClockDto dto = new TemporaryClockDto(clockVo.getClockType(), clockVo.getId(), clockVo.getTemporaryId(), clockVo.getTemporaryName()); TemporaryClockDto dto = new TemporaryClockDto(clockVo.getClockType(), clockVo.getId(), clockVo.getTemporaryId(), clockVo.getTemporaryName(), clockVo.getClockProvince(), clockVo.getClockCity());
// 上班卡、午休下班卡、午休上班卡、下班卡 // 上班卡、午休下班卡、午休上班卡、下班卡
if (isClockIn) { if (isClockIn) {
builderClockInData(clockVo, dto, clockTime); builderClockInData(clockVo, dto, clockTime);
...@@ -82,7 +83,7 @@ public class TemporaryActivityClockCoreController { ...@@ -82,7 +83,7 @@ public class TemporaryActivityClockCoreController {
clockDto.setTemporaryId(clockVo.getTemporaryId()) clockDto.setTemporaryId(clockVo.getTemporaryId())
.setTemporaryName(clockVo.getTemporaryName()) .setTemporaryName(clockVo.getTemporaryName())
.setStoreQcId(clockVo.getStoreQcId()) .setStoreId(clockVo.getStoreId())
.setStoreName(clockVo.getStoreName()) .setStoreName(clockVo.getStoreName())
.setClockInAddress(clockVo.getClockAddress()) .setClockInAddress(clockVo.getClockAddress())
.setClockInCoordinates(clockVo.getClockCoordinates()) .setClockInCoordinates(clockVo.getClockCoordinates())
......
...@@ -31,7 +31,7 @@ public class TemporaryActivityCoreController { ...@@ -31,7 +31,7 @@ public class TemporaryActivityCoreController {
* 返回活动生成id * 返回活动生成id
*/ */
@PostMapping("/today/reported") @PostMapping("/today/reported")
public R todayActivityDataReported(@RequestBody @Validated TemporaryActivityDataVo activityVo) { public R todayActivityDataReported(@RequestBody TemporaryActivityDataVo activityVo) {
TemporaryActivityReportedDto temActDto = new TemporaryActivityReportedDto(); TemporaryActivityReportedDto temActDto = new TemporaryActivityReportedDto();
BeanUtils.copyProperties(activityVo, temActDto); BeanUtils.copyProperties(activityVo, temActDto);
temActDto.setId(activityVo.getActivityReportedId()); temActDto.setId(activityVo.getActivityReportedId());
...@@ -49,7 +49,7 @@ public class TemporaryActivityCoreController { ...@@ -49,7 +49,7 @@ public class TemporaryActivityCoreController {
* 修改审批状态 * 修改审批状态
*/ */
@PutMapping("/reported/approve/submit/{id}") @PutMapping("/reported/approve/submit/{id}")
public R activityReportedSubmit(@PathVariable("id") @NotNull Long id) { public R activityReportedSubmit(@PathVariable("id") Long id) {
tempActivityCoreService.activityReportedSubmit(id); tempActivityCoreService.activityReportedSubmit(id);
return R.success(); return R.success();
} }
......
package com.wangxiaolu.promotion.domain.activity.dao;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.PromotionStoreWrapper;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.PromotionStoreVo;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-06-18 13
* @describe :
*/
public interface PromotionStoreDao {
void save(PromotionStoreDto promotionStoreDto);
List<PromotionStoreDto> findList(PromotionStoreWrapper promotionStoreWrapper);
PromotionStoreDto selectOneById(Long id);
}
...@@ -33,11 +33,4 @@ public interface TemporaryActivityClockDao { ...@@ -33,11 +33,4 @@ public interface TemporaryActivityClockDao {
*/ */
void employeePage(String employeeQcId, PageInfo pageInfo); void employeePage(String employeeQcId, PageInfo pageInfo);
/**
* 员工查询负责的促销员打卡信息(分页查询)
*/
} }
package com.wangxiaolu.promotion.domain.activity.dao.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wangxiaolu.promotion.domain.activity.dao.PromotionStoreDao;
import com.wangxiaolu.promotion.domain.activity.mapper.PromotionStoreMapper;
import com.wangxiaolu.promotion.domain.activity.mapper.entity.PromotionStoreDO;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.PromotionStoreWrapper;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-06-18 13
* @describe :
*/
@Service
@Slf4j
public class PromotionStoreDaoImpl implements PromotionStoreDao {
@Autowired
PromotionStoreMapper promotionStoreMapper;
/**
* 保存店铺
*/
@Override
public void save(PromotionStoreDto promotionStoreDto) {
PromotionStoreDO storeDo = new PromotionStoreDO();
BeanUtils.copyProperties(promotionStoreDto, storeDo);
promotionStoreMapper.insert(storeDo);
log.info("录入店铺:{}", JSONObject.toJSONString(storeDo));
}
@Override
public List<PromotionStoreDto> findList(PromotionStoreWrapper promotionStoreWrapper) {
LambdaQueryWrapper<PromotionStoreDO> qw = buildWrapper(promotionStoreWrapper);
qw.select(PromotionStoreDO::getStoreName,PromotionStoreDO::getId);
List<PromotionStoreDO> promotionStoreDOS = promotionStoreMapper.selectList(qw);
return transitionDtos(promotionStoreDOS);
}
@Override
public PromotionStoreDto selectOneById(Long id) {
PromotionStoreDO promotionStoreDO = promotionStoreMapper.selectById(id);
return transitionDto(promotionStoreDO);
}
private LambdaQueryWrapper<PromotionStoreDO> buildWrapper(PromotionStoreWrapper promotionStoreWrapper){
LambdaQueryWrapper<PromotionStoreDO> lqw = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(promotionStoreWrapper.getArea())){
lqw.eq(PromotionStoreDO::getArea,promotionStoreWrapper.getArea());
}
return lqw;
}
/**
* DO to DTO (单个对象)
*
* @param storeDos DO对象List
* @return DTO对象
*/
private List<PromotionStoreDto> transitionDtos(List<PromotionStoreDO> storeDos) {
if (CollectionUtils.isEmpty(storeDos)) {
return new ArrayList<>();
}
List<PromotionStoreDto> dtos = new ArrayList<>(storeDos.size() * 2);
for (PromotionStoreDO storeDo : storeDos) {
dtos.add(transitionDto(storeDo));
}
return dtos;
}
private PromotionStoreDto transitionDto(PromotionStoreDO storeDo) {
PromotionStoreDto dto = null;
if (Objects.isNull(storeDo)) {
return dto;
}
dto = new PromotionStoreDto();
BeanUtils.copyProperties(storeDo, dto);
return dto;
}
}
...@@ -108,7 +108,6 @@ public class TemporaryActivityReportedDaoImpl implements TemporaryActivityReport ...@@ -108,7 +108,6 @@ public class TemporaryActivityReportedDaoImpl implements TemporaryActivityReport
@Override @Override
public void findListToEmployeePage(TemporaryActivityWrapper tw, PageInfo pageInfo) { public void findListToEmployeePage(TemporaryActivityWrapper tw, PageInfo pageInfo) {
LambdaQueryWrapper<TemporaryActivityReportedDO> qw = buildQueryList(tw); LambdaQueryWrapper<TemporaryActivityReportedDO> qw = buildQueryList(tw);
// qw.orderByDesc(TemporaryActivityReportedDO::getApproveStatus);
Page<TemporaryActivityReportedDO> page = new Page<>(pageInfo.getPageNum(), pageInfo.getPageSize()); Page<TemporaryActivityReportedDO> page = new Page<>(pageInfo.getPageNum(), pageInfo.getPageSize());
Page<TemporaryActivityReportedDO> temDoPage = temporaryActivityReportedMapper.selectPage(page, qw); Page<TemporaryActivityReportedDO> temDoPage = temporaryActivityReportedMapper.selectPage(page, qw);
pageInfo.pageCovert(temDoPage); pageInfo.pageCovert(temDoPage);
......
package com.wangxiaolu.promotion.domain.activity.mapper;
import com.wangxiaolu.promotion.domain.activity.mapper.entity.PromotionStoreDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
* @author a02200059
* @description 针对表【promotion_store(促销店铺数据)】的数据库操作Mapper
* @createDate 2024-06-18 11:56:57
* @Entity com.wangxiaolu.promotion.domain.activity.mapper.entity.PromotionStoreDO
*/
@Repository
@Mapper
public interface PromotionStoreMapper extends BaseMapper<PromotionStoreDO> {
}
package com.wangxiaolu.promotion.domain.activity.mapper.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 促销店铺数据
* @TableName promotion_store
*/
@TableName(value ="promotion_store")
@Data
public class PromotionStoreDO implements Serializable {
/**
* 主键id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 店铺名称
*/
private String storeName;
/**
* 店铺照片
*/
private String storePhotoUrl;
/**
* 系统名称
*/
private String lineName;
/**
* 店铺经纬度
*/
private String coordinates;
/**
* 门店所属行政区域-省份名称,如:北京市、江苏省
*/
private String province;
/**
* 门店所属行政区域-城市名称,如:南京市
*/
private String city;
/**
* 门店所属行政区域-区县名称,如:鼓楼区
*/
private String area;
/**
* 门店所属行政区域-乡镇街道名称,如:宁海路街道
*/
private String street;
/**
* 详细地址
*/
private String address;
/**
* 门店提交人id
*/
private Integer temporaryId;
/**
* 门店提交人
*/
private String temporaryName;
/**
* 所属战区id
*/
private String deptQcId;
/**
* 所属战区名称
*/
private String deptQcOrgName;
/**
* 负责人-勤策ID
*/
private String chargerQcId;
/**
* 负责人姓名
*/
private String chargerName;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date modifyTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
...@@ -36,11 +36,24 @@ public class TemporaryActivityClockDO implements Serializable { ...@@ -36,11 +36,24 @@ public class TemporaryActivityClockDO implements Serializable {
*/ */
private String storeQcId; private String storeQcId;
private Long storeId;
/** /**
* qince_clientele_store表store_name * qince_clientele_store表store_name
*/ */
private String storeName; private String storeName;
/**
* 打卡所在地-省
*/
String clockProvince;
/**
* 打卡所在地-市
*/
String clockCity;
/** /**
* 上班打卡地址 * 上班打卡地址
*/ */
......
...@@ -37,6 +37,8 @@ public class TemporaryActivityReportedDO implements Serializable { ...@@ -37,6 +37,8 @@ public class TemporaryActivityReportedDO implements Serializable {
*/ */
private String storeQcId; private String storeQcId;
private Long storeId;
/** /**
* 关联—活动店铺名称(例:小美超市) * 关联—活动店铺名称(例:小美超市)
*/ */
...@@ -47,6 +49,16 @@ public class TemporaryActivityReportedDO implements Serializable { ...@@ -47,6 +49,16 @@ public class TemporaryActivityReportedDO implements Serializable {
*/ */
private String storeAddr; private String storeAddr;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/** /**
* 关联—审核人员qc_id * 关联—审核人员qc_id
*/ */
......
package com.wangxiaolu.promotion.domain.activity.wrapperQo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author : liqiulin
* @date : 2024-06-18 15
* @describe :
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PromotionStoreWrapper {
Long id;
/**
* 区域
* 例:顺义区
*/
private String area;
private String storeNameLike;
}
...@@ -56,8 +56,7 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao { ...@@ -56,8 +56,7 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
@Override @Override
public void findTemporaryInfoByEmployeeQcId(String employeeQcId, PageInfo pageInfo) { public void findTemporaryInfoByEmployeeQcId(String employeeQcId, PageInfo pageInfo) {
TemporaryWrapper tw = new TemporaryWrapper() TemporaryWrapper tw = new TemporaryWrapper();
.setChargerQcId(employeeQcId);
LambdaQueryWrapper<TemporaryInfoDO> qw = buildQueryList(tw); LambdaQueryWrapper<TemporaryInfoDO> qw = buildQueryList(tw);
List<TemporaryInfoDO> temporaryInfoDOS = temporaryInfoMapper.selectList(qw); List<TemporaryInfoDO> temporaryInfoDOS = temporaryInfoMapper.selectList(qw);
pageInfo.setRecords(transitionDtos(temporaryInfoDOS)); pageInfo.setRecords(transitionDtos(temporaryInfoDOS));
......
package com.wangxiaolu.promotion.pojo.activity.temporary.employee.vo; package com.wangxiaolu.promotion.pojo.activity.employee.vo;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus; import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
......
package com.wangxiaolu.promotion.pojo.activity.temporary.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 促销店铺数据
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class PromotionStoreDto implements Serializable {
/**
* 主键id
*/
private Long id;
/**
* 店铺名称
*/
private String storeName;
/**
* 店铺照片
*/
private String storePhotoUrl;
/**
* 系统名称
*/
private String lineName;
/**
* 店铺经纬度
*/
private String coordinates;
/**
* 门店所属行政区域-省份名称,如:北京市、江苏省
*/
private String province;
/**
* 门店所属行政区域-城市名称,如:南京市
*/
private String city;
/**
* 门店所属行政区域-区县名称,如:鼓楼区
*/
private String area;
/**
* 门店所属行政区域-乡镇街道名称,如:宁海路街道
*/
private String street;
/**
* 详细地址
*/
private String address;
/**
* 门店提交人id
*/
private Integer temporaryId;
/**
* 门店提交人
*/
private String temporaryName;
/**
* 所属战区id
*/
private String deptQcId;
/**
* 所属战区名称
*/
private String deptQcOrgName;
/**
* 负责人-勤策ID
*/
private String chargerQcId;
/**
* 负责人姓名
*/
private String chargerName;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date modifyTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
...@@ -38,7 +38,7 @@ public class TemporaryActivityReportedDto { ...@@ -38,7 +38,7 @@ public class TemporaryActivityReportedDto {
/** /**
* 关联—活动店铺id * 关联—活动店铺id
*/ */
private String storeQcId; private Long storeId;
/** /**
* 关联—活动店铺名称(例:小美超市) * 关联—活动店铺名称(例:小美超市)
...@@ -50,6 +50,16 @@ public class TemporaryActivityReportedDto { ...@@ -50,6 +50,16 @@ public class TemporaryActivityReportedDto {
*/ */
private String storeAddr; private String storeAddr;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/** /**
* 关联—审核人员qc_id * 关联—审核人员qc_id
* *
......
...@@ -32,7 +32,8 @@ public class TemporaryClockDto { ...@@ -32,7 +32,8 @@ public class TemporaryClockDto {
String temporaryName; String temporaryName;
// 店铺勤策id // 店铺勤策id
String storeQcId; // String storeQcId;
Long storeId;
// 店铺名称 // 店铺名称
String storeName; String storeName;
...@@ -49,6 +50,12 @@ public class TemporaryClockDto { ...@@ -49,6 +50,12 @@ public class TemporaryClockDto {
// 上班打卡时间 // 上班打卡时间
Date clockInTime; Date clockInTime;
// 打卡所在地-省
String clockProvince;
// 打卡所在地-市
String clockCity;
// 午休下班打卡地点 // 午休下班打卡地点
String noonClockOutAddress; String noonClockOutAddress;
...@@ -85,11 +92,16 @@ public class TemporaryClockDto { ...@@ -85,11 +92,16 @@ public class TemporaryClockDto {
// 下班打卡时间 // 下班打卡时间
Date clockOutTime; Date clockOutTime;
public TemporaryClockDto(Integer clockType, Long id, Integer temporaryId, String temporaryName) { // 创建日期YYYY-MM-DD
private String createDate;
public TemporaryClockDto(Integer clockType, Long id, Integer temporaryId, String temporaryName, String clockProvince, String clockCity) {
if (!ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) { if (!ClockType.TEMPORARY_CLOCK_IN.equals(clockType)) {
this.id = id; this.id = id;
} }
this.temporaryId = temporaryId; this.temporaryId = temporaryId;
this.temporaryName = temporaryName; this.temporaryName = temporaryName;
this.clockProvince = clockProvince;
this.clockCity = clockCity;
} }
} }
package com.wangxiaolu.promotion.pojo.activity.temporary.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author : liqiulin
* @date : 2024-06-18 15
* @describe : 促销店铺VO模型
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PromotionStoreVo {
/**
* 区域
* 例:顺义区
*/
private String area;
private String storeNameLike;
}
...@@ -27,7 +27,6 @@ public class TemporaryActivityDataVo { ...@@ -27,7 +27,6 @@ public class TemporaryActivityDataVo {
* 促销员id * 促销员id
* temporaryInfo表id * temporaryInfo表id
*/ */
@NotNull(message = "促销员账号异常")
private Integer temporaryId; private Integer temporaryId;
/** /**
...@@ -40,8 +39,7 @@ public class TemporaryActivityDataVo { ...@@ -40,8 +39,7 @@ public class TemporaryActivityDataVo {
/** /**
* 活动店铺Id * 活动店铺Id
*/ */
@NotNull(message = "活动店铺异常") private Long storeId;
private String storeQcId;
/** /**
* 推广试吃照片 * 推广试吃照片
......
...@@ -31,36 +31,42 @@ public class TemporaryClockVo { ...@@ -31,36 +31,42 @@ public class TemporaryClockVo {
/** /**
* 打卡类型:1、上班卡;2、午休下班卡;3、午休上班卡;4、下班卡 * 打卡类型:1、上班卡;2、午休下班卡;3、午休上班卡;4、下班卡
*/ */
// @NotNull(message = "无打卡类型")
// @Range(max = 4, min = 1, message = "超出状态")
Integer clockType; Integer clockType;
/** /**
* temporaryId * temporaryId
*/ */
// @NotNull(message = "找不到打卡人")
Integer temporaryId; Integer temporaryId;
String temporaryName; String temporaryName;
// 店铺勤策id // 店铺id
String storeQcId; // String storeQcId;
Long storeId;
// 店铺名称 // 店铺名称
String storeName; String storeName;
// 上班打卡地点 // 上班打卡地点
// @NotBlank(message = "请选择打卡地址")
String clockAddress; String clockAddress;
// 上班打卡经纬度 // 上班打卡经纬度
// @NotBlank(message = "请选择打卡地点")
String clockCoordinates; String clockCoordinates;
// 上班打卡图片 // 上班打卡图片
// @NotBlank(message = "请上传图片")
String clockPhoto; String clockPhoto;
// 打卡省
String clockProvince;
// 打卡城市
String clockCity;
public void validate(){ public void validate(){
if (Objects.isNull(clockType) || !(clockType >= 1 && clockType <= 4)){ if (Objects.isNull(clockType) || !(clockType >= 1 && clockType <= 4)){
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null); throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
......
...@@ -68,10 +68,6 @@ public class WxTemporaryInfoDto { ...@@ -68,10 +68,6 @@ public class WxTemporaryInfoDto {
*/ */
String deptQcOrgName; String deptQcOrgName;
/**
* 创建时间
*/
Date createTime;
/** /**
* 此促销员的任务人-勤策id * 此促销员的任务人-勤策id
*/ */
...@@ -81,4 +77,9 @@ public class WxTemporaryInfoDto { ...@@ -81,4 +77,9 @@ public class WxTemporaryInfoDto {
* 此促销员的任务人姓名 * 此促销员的任务人姓名
*/ */
String chargerName; String chargerName;
/**
* 创建时间
*/
Date createTime;
} }
package com.wangxiaolu.promotion.service.activity.employee; package com.wangxiaolu.promotion.service.activity.employee;
import com.wangxiaolu.promotion.pojo.activity.temporary.employee.vo.ApproveVO; import com.wangxiaolu.promotion.pojo.activity.employee.vo.ApproveVO;
/** /**
* @author : liqiulin * @author : liqiulin
......
...@@ -6,7 +6,7 @@ import com.wangxiaolu.promotion.enums.activity.LogType; ...@@ -6,7 +6,7 @@ import com.wangxiaolu.promotion.enums.activity.LogType;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus; import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.employee.vo.ApproveVO; import com.wangxiaolu.promotion.pojo.activity.employee.vo.ApproveVO;
import com.wangxiaolu.promotion.result.basedata.RCode; import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.employee.EmployeeCoreTemActivityService; import com.wangxiaolu.promotion.service.activity.employee.EmployeeCoreTemActivityService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
...@@ -28,8 +28,8 @@ public class EmployeeQueryTemActivityServiceImpl implements EmployeeQueryTemActi ...@@ -28,8 +28,8 @@ public class EmployeeQueryTemActivityServiceImpl implements EmployeeQueryTemActi
public void getEmployeeApproveActivityPage(String employeeQcId, PageInfo pageInfo) { public void getEmployeeApproveActivityPage(String employeeQcId, PageInfo pageInfo) {
TemporaryActivityWrapper tw = JSONObject.parseObject(JSONObject.toJSONString(pageInfo.getQueryParams()), TemporaryActivityWrapper.class); TemporaryActivityWrapper tw = JSONObject.parseObject(JSONObject.toJSONString(pageInfo.getQueryParams()), TemporaryActivityWrapper.class);
tw = Objects.isNull(tw) ? new TemporaryActivityWrapper() : tw; tw = Objects.isNull(tw) ? new TemporaryActivityWrapper() : tw;
tw.setApproverId(employeeQcId) // tw.setApproverId(employeeQcId)
.setNotApproveStatus(TemActApproveStatus.SUBMITTED.name()); tw.setNotApproveStatus(TemActApproveStatus.SUBMITTED.name());
temporaryActivityReportedDao.findListToEmployeePage(tw, pageInfo); temporaryActivityReportedDao.findListToEmployeePage(tw, pageInfo);
} }
} }
package com.wangxiaolu.promotion.service.activity.temporary;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
/**
* @author : liqiulin
* @date : 2024-06-18 13
* @describe :
*/
public interface PromotionStoreCoreService {
void saveStore(PromotionStoreDto promotionStoreDto);
}
package com.wangxiaolu.promotion.service.activity.temporary;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.PromotionStoreVo;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-06-18 15
* @describe :
*/
public interface PromotionStoreQueryService {
List<PromotionStoreDto> findStoreList(PromotionStoreVo promotionStoreVo);
}
package com.wangxiaolu.promotion.service.activity.temporary.impl;
import com.wangxiaolu.promotion.domain.activity.dao.PromotionStoreDao;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.service.activity.temporary.PromotionStoreCoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author : liqiulin
* @date : 2024-06-18 13
* @describe :
*/
@Service
public class PromotionStoreCoreServiceImpl implements PromotionStoreCoreService {
@Autowired
PromotionStoreDao promotionStoreDao;
@Override
public void saveStore(PromotionStoreDto promotionStoreDto) {
promotionStoreDao.save(promotionStoreDto);
}
}
package com.wangxiaolu.promotion.service.activity.temporary.impl;
import com.wangxiaolu.promotion.domain.activity.dao.PromotionStoreDao;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.PromotionStoreWrapper;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.PromotionStoreVo;
import com.wangxiaolu.promotion.service.activity.temporary.PromotionStoreQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : liqiulin
* @date : 2024-06-18 15
* @describe :
*/
@Service
public class PromotionStoreQueryServiceImpl implements PromotionStoreQueryService {
@Autowired
PromotionStoreDao promotionStoreDao;
@Override
public List<PromotionStoreDto> findStoreList(PromotionStoreVo promotionStoreVo) {
PromotionStoreWrapper promotionStoreWrapper = new PromotionStoreWrapper();
promotionStoreWrapper.setStoreNameLike(promotionStoreVo.getStoreNameLike());
promotionStoreWrapper.setArea("全国".equals(promotionStoreVo.getArea()) ? "" : promotionStoreVo.getArea());
return promotionStoreDao.findList(promotionStoreWrapper);
}
}
package com.wangxiaolu.promotion.service.activity.temporary.impl; package com.wangxiaolu.promotion.service.activity.temporary.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao; import com.wangxiaolu.promotion.domain.activity.dao.*;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityLogDao;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityReportedDao;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryClockWrapper;
import com.wangxiaolu.promotion.domain.user.dao.QinCeClienteleStoreDao; import com.wangxiaolu.promotion.domain.user.dao.QinCeClienteleStoreDao;
import com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao; import com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao;
import com.wangxiaolu.promotion.domain.user.wrapperQo.StoreWrapper; import com.wangxiaolu.promotion.domain.user.wrapperQo.StoreWrapper;
...@@ -15,6 +11,7 @@ import com.wangxiaolu.promotion.enums.activity.LogType; ...@@ -15,6 +11,7 @@ import com.wangxiaolu.promotion.enums.activity.LogType;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus; import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.exception.FlowException; import com.wangxiaolu.promotion.exception.FlowException;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.user.dto.QinCeClienteleStoreDto; import com.wangxiaolu.promotion.pojo.user.dto.QinCeClienteleStoreDto;
...@@ -30,6 +27,7 @@ import org.springframework.stereotype.Service; ...@@ -30,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
...@@ -51,7 +49,7 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -51,7 +49,7 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
private TemporaryActivityClockDao temporaryActivityClockDao; private TemporaryActivityClockDao temporaryActivityClockDao;
@Autowired @Autowired
private QinCeClienteleStoreDao qinCeClienteleStoreDao; private PromotionStoreDao promotionStoreDao;
@Autowired @Autowired
private TemporaryActivityPhotoDao tempActivityPhotoDao; private TemporaryActivityPhotoDao tempActivityPhotoDao;
...@@ -81,13 +79,17 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -81,13 +79,17 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
WxTemporaryInfoDto wxTemporaryInfoDto = temporaryInfoDao.selectOneById(temActDto.getTemporaryId()); WxTemporaryInfoDto wxTemporaryInfoDto = temporaryInfoDao.selectOneById(temActDto.getTemporaryId());
// 初始化任务状态:已保存 // 初始化任务状态:已保存
temActDto.setApproveStatus(TemActApproveStatus.SUBMITTED); temActDto.setApproveStatus(TemActApproveStatus.APPROVED);
temActDto.setApproverId(wxTemporaryInfoDto.getChargerQcId()); temActDto.setApproverId(wxTemporaryInfoDto.getChargerQcId());
temActDto.setApproveName(wxTemporaryInfoDto.getChargerName()); temActDto.setApproveName(wxTemporaryInfoDto.getChargerName());
temActDto.setApproveTime(new Date());
// 根据storeQcId查询店铺信息,进行店铺信息补充 // 根据storeQcId查询店铺信息,进行店铺信息补充
QinCeClienteleStoreDto storeDto = qinCeClienteleStoreDao.getOneStore(new StoreWrapper().setQcId(temActDto.getStoreQcId())); PromotionStoreDto promotionStoreDto = promotionStoreDao.selectOneById(temActDto.getStoreId());
temActDto.setStoreName(storeDto.getStoreName()).setStoreAddr(storeDto.getStoreAddr()); temActDto.setStoreName(promotionStoreDto.getStoreName())
.setStoreAddr(promotionStoreDto.getAddress())
.setProvince(promotionStoreDto.getProvince())
.setCity(promotionStoreDto.getCity());
// 保存活动数据 temporary_activity_reported // 保存活动数据 temporary_activity_reported
long reportedId = temporaryActivityReportedDao.activityDataSave(temActDto); long reportedId = temporaryActivityReportedDao.activityDataSave(temActDto);
...@@ -178,11 +180,11 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe ...@@ -178,11 +180,11 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
*/ */
@Override @Override
public void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates) { public void clockStoreCalDistance(String storeQcId, Long id, String clockCoordinates) {
if (Objects.nonNull(id)) { // if (Objects.nonNull(id)) {
TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id)); // TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id));
storeQcId = clockDto.getStoreQcId(); // storeQcId = clockDto.getStoreQcId();
} // }
clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates); // clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates);
} }
private void clockStoreCalDistanceByStoreQcId(String storeQcId, String clockCoordinates) { private void clockStoreCalDistanceByStoreQcId(String storeQcId, String clockCoordinates) {
......
<?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.wangxiaolu.promotion.domain.activity.mapper.PromotionStoreMapper">
<resultMap id="BaseResultMap" type="com.wangxiaolu.promotion.domain.activity.mapper.entity.PromotionStoreDO">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="storeName" column="store_name" jdbcType="VARCHAR"/>
<result property="storePhotoUrl" column="store_photo_url" jdbcType="VARCHAR"/>
<result property="lineName" column="line_name" jdbcType="VARCHAR"/>
<result property="coordinates" column="coordinates" jdbcType="VARCHAR"/>
<result property="province" column="province" jdbcType="VARCHAR"/>
<result property="city" column="city" jdbcType="VARCHAR"/>
<result property="area" column="area" jdbcType="VARCHAR"/>
<result property="street" column="street" jdbcType="VARCHAR"/>
<result property="address" column="address" jdbcType="VARCHAR"/>
<result property="temporaryId" column="temporary_id" jdbcType="INTEGER"/>
<result property="temporaryName" column="temporary_name" jdbcType="VARCHAR"/>
<result property="deptQcId" column="dept_qc_id" jdbcType="VARCHAR"/>
<result property="deptQcOrgName" column="dept_qc_org_name" jdbcType="VARCHAR"/>
<result property="chargerQcId" column="charger_qc_id" jdbcType="VARCHAR"/>
<result property="chargerName" column="charger_name" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="modifyTime" column="modify_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,store_name,store_photo_url,
line_name,coordinates,province,
city,area,street,
address,temporary_id,temporary_name,
dept_qc_id,dept_qc_org_name,charger_qc_id,
charger_name,create_time,modify_time
</sql>
</mapper>
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
<result property="noonClockInTime" column="noon_clock_in_time" jdbcType="TIMESTAMP"/> <result property="noonClockInTime" column="noon_clock_in_time" jdbcType="TIMESTAMP"/>
<result property="clockOutTime" column="clock_out_time" jdbcType="TIMESTAMP"/> <result property="clockOutTime" column="clock_out_time" jdbcType="TIMESTAMP"/>
<result property="createDate" column="create_date" jdbcType="CHAR"/> <result property="createDate" column="create_date" jdbcType="CHAR"/>
<result property="clockProvince" column="clock_province" jdbcType="VARCHAR"/>
<result property="clockCity" column="clock_city" jdbcType="VARCHAR"/>
<result property="createDate" column="create_date" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
...@@ -36,12 +39,14 @@ ...@@ -36,12 +39,14 @@
tc.clock_in_time, tc.clock_in_time,
tc.noon_clock_out_time, tc.noon_clock_out_time,
tc.noon_clock_in_time, tc.noon_clock_in_time,
tc.clock_out_time tc.clock_out_time,
tc.clock_province,
tc.clock_city,
tc.create_date
from temporary_info ti from temporary_info ti
inner join temporary_activity_clock tc on ti.id = tc.temporary_id inner join temporary_activity_clock tc on ti.id = tc.temporary_id
where tc.id &lt;= (select max(id) where tc.id &lt;= (select max(id)
from temporary_activity_clock) from temporary_activity_clock)
and ti.charger_qc_id = #{employeeQcId}
order by id desc order by id desc
limit #{skipNum}, #{pageSize}; limit #{skipNum}, #{pageSize};
</select> </select>
...@@ -54,11 +59,13 @@ ...@@ -54,11 +59,13 @@
tc.clock_in_time, tc.clock_in_time,
tc.noon_clock_out_time, tc.noon_clock_out_time,
tc.noon_clock_in_time, tc.noon_clock_in_time,
tc.clock_out_time tc.clock_out_time,
tc.clock_province,
tc.clock_city,
tc.create_date
from temporary_info ti from temporary_info ti
inner join temporary_activity_clock tc on ti.id = tc.temporary_id inner join temporary_activity_clock tc on ti.id = tc.temporary_id
where tc.id &lt; #{maxId} where tc.id &lt; #{maxId}
and ti.charger_qc_id = #{employeeQcId}
order by id desc limit #{pageSize}; order by id desc limit #{pageSize};
</select> </select>
...@@ -68,7 +75,6 @@ ...@@ -68,7 +75,6 @@
inner join temporary_activity_clock tc on ti.id = tc.temporary_id inner join temporary_activity_clock tc on ti.id = tc.temporary_id
where tc.id &lt;= (select max(id) where tc.id &lt;= (select max(id)
from temporary_activity_clock) from temporary_activity_clock)
and ti.charger_qc_id = #{employeeQcId}
</select> </select>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论