Browse Source

拜访流程调整、OSS调整

contract
Yen 2 years ago
parent
commit
051d5d70cf
  1. 25
      src/main/java/com/qs/serve/common/config/properties/AliYunOssProperties.java
  2. 48
      src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java
  3. 11
      src/main/java/com/qs/serve/modules/biz/entity/BizCusVisit.java
  4. 7
      src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java
  5. 44
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java
  6. 3
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java
  7. 8
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  8. 10
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisit.java
  9. 12
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java
  10. 2
      src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java
  11. 18
      src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java
  12. 24
      src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java
  13. 1
      src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java
  14. 10
      src/main/resources/application-dev.yml
  15. 15
      src/main/resources/mapper/his/HisUserSupplierMapper.xml

25
src/main/java/com/qs/serve/common/config/properties/AliYunOssProperties.java

@ -0,0 +1,25 @@
package com.qs.serve.common.config.properties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @Author: YenHex
* @Date: 2021/3/3
* @Version: 1.0
**/
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliYunOssProperties {
private String bucket;
private String accessKeyId;
private String accessKeySecret;
private String endpoint;
private String prefix;
}

48
src/main/java/com/qs/serve/modules/biz/controller/api/BizCusVisitApi.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.biz.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.biz.entity.BizCusVisit;
@ -10,13 +11,10 @@ import com.qs.serve.modules.biz.entity.BizVisit;
import com.qs.serve.modules.biz.entity.bo.BizCusVisitBo;
import com.qs.serve.modules.biz.service.BizCusVisitService;
import com.qs.serve.modules.biz.service.BizVisitService;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierVisitForm;
import com.qs.serve.modules.bms.entity.BmsSupplierVisitType;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.bms.service.BmsSupplierVisitFormService;
import com.qs.serve.modules.bms.service.BmsSupplierVisitTypeService;
import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserSalesService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.service.WxUserService;
@ -25,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List;
/**
@ -43,8 +42,12 @@ public class BizCusVisitApi {
private SysUserService sysUserService;
private BmsSupplierService supplierService;
private BmsSupplierVisitService bmsSupplierVisitService;
private BmsSupplierVisitTypeService bmsSupplierVisitTypeService;
private BmsSupplierVisitFormService bmsSupplierVisitFormService;
private BmsSupplierVisitAddressService bmsSupplierVisitAddressService;
private SysUserSalesService sysUserSalesService;
/**
* 翻页
@ -65,6 +68,21 @@ public class BizCusVisitApi {
return R.byPageHelperList(list);
}
/**
* 翻页我的下属拜访记录
* @param param
* @return
*/
@GetMapping("/page4Under")
public R<PageVo<BizCusVisit>> page4Under(BizCusVisit param){
List<String> userIds = sysUserSalesService.listByChildIds(AuthContextUtils.getSysUserId());
PageUtil.startPage();
LambdaQueryWrapper<BizCusVisit> visitWrapper = new LambdaQueryWrapper<>(param);
visitWrapper.in(BizCusVisit::getVisitorId,userIds);
List<BizCusVisit> list = bizVisitService.list(visitWrapper);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
@ -130,6 +148,8 @@ public class BizCusVisitApi {
BmsSupplierVisitType visitType = bmsSupplierVisitTypeService.getById(param.getSignTypeId());
cusVisit.setSignTypeId(visitType.getId());
cusVisit.setSignType(visitType.getTypeName());
BmsSupplierVisitAddress visitAddress = bmsSupplierVisitAddressService.getById(param.getAddressId());
cusVisit.setAddress(visitAddress.getAddressDetail());
if(visitType.getTypeFormId()!=null){
BmsSupplierVisitForm visitForm = bmsSupplierVisitFormService.getById(visitType.getTypeFormId());
cusVisit.setSignTypeFormId(visitForm.getId());
@ -137,6 +157,22 @@ public class BizCusVisitApi {
cusVisit.setSignTypeFormValue(param.getFormJson());
}
bizVisitService.saveOrUpdate(cusVisit);
LambdaQueryWrapper<BmsSupplierVisit> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplierVisit::getSupplierId,supplier.getId());
BmsSupplierVisit supplierVisit = bmsSupplierVisitService.getOne(lqw);
if(supplierVisit==null){
supplierVisit = new BmsSupplierVisit();
supplierVisit.setSupplierId(supplier.getId());
supplierVisit.setVisitCount(1);
supplierVisit.setLastVisitTime(LocalDateTime.now());
supplierVisit.setNextVisitDate(param.getNextTimeVisit());
bmsSupplierVisitService.save(supplierVisit);
}else {
supplierVisit.setVisitCount(supplierVisit.getVisitCount()+1);
supplierVisit.setLastVisitTime(LocalDateTime.now());
supplierVisit.setNextVisitDate(param.getNextTimeVisit());
bmsSupplierVisitService.updateById(supplierVisit);
}
}
/**

11
src/main/java/com/qs/serve/modules/biz/entity/BizCusVisit.java

@ -46,10 +46,16 @@ public class BizCusVisit implements Serializable {
@Length(max = 255,message = "经度长度不能超过255字")
private String localY;
/** 地址 */
/** 目标拜访的地址 */
@Length(max = 512,message = "地址长度不能超过512字")
private String address;
/** 地图标记的地址 */
private String inputAddress;
/** 目标拜访的地址ID */
private String addressId;
/** 签到类型Id */
@NotNull(message = "签到类型不能为空")
private Long signTypeId;
@ -123,9 +129,10 @@ public class BizCusVisit implements Serializable {
cusVisit.setPhotos(source.getPhotos());
cusVisit.setLocalX(source.getLocalX());
cusVisit.setLocalY(source.getLocalY());
cusVisit.setAddress(source.getAddress());
cusVisit.setAddressId(source.getAddressId());
cusVisit.setCustomerId(source.getCustomerId());
cusVisit.setRemark(source.getRemark());
cusVisit.setInputAddress(source.getInputAddress());
return cusVisit;
}

7
src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java

@ -38,7 +38,10 @@ public class BizCusVisitBo implements Serializable {
private String localY;
/** 地址 */
private String address;
private String addressId;
/** 地图标记的地址 */
private String inputAddress;
/** 签到类型Id */
private Long signTypeId;
@ -60,6 +63,8 @@ public class BizCusVisitBo implements Serializable {
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 指定的下属 */
private String userId;
}

44
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java

@ -7,11 +7,9 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierVisit;
import com.qs.serve.modules.bms.entity.so.BmsSupplierVisitSo;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.*;
@ -70,7 +68,7 @@ public class BmsSupplierVisitAddressController {
* @return
*/
@PostMapping("/getPageForVisit")
public R<PageVo<BmsSupplier>> getPageForVisit(@Valid @RequestBody BmsSupplierVisitSo param){
public R<PageVo<HisUserSupplierAddressVo>> getPageForVisit(@Valid @RequestBody BmsSupplierVisitSo param){
String userId = AuthContextUtils.getSysUserId();
hisUserSupplierService.initByUserId(userId,false);
HisUserSupplier userSupplier = new HisUserSupplier();
@ -82,24 +80,27 @@ public class BmsSupplierVisitAddressController {
userSupplier.setLocalX(param.getLocalX());
userSupplier.setLocalY(param.getLocalY());
//PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<HisUserSupplierAddressVo> list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier);
List<String> supplierIds = list.stream().map(HisUserSupplierAddressVo::getSupplierId).collect(Collectors.toList());
List<BmsSupplier> supplierList = bmsSupplierService.listByIds(supplierIds);
List<BmsSupplier> supplierResultList = new ArrayList<>();
for (HisUserSupplierAddressVo addressVo : list) {
for (BmsSupplier supplier : supplierList) {
if(addressVo.getSupplierId().equals(supplier.getId())){
BmsSupplierVisitAddress visitAddress = bmsSupplierVisitAddressService.getById(addressVo.getAddressId());
supplier.setVisitAddressInfo(visitAddress);
supplier.setVisitDistance(addressVo.getDistance());
supplierResultList.add(supplier);
break;
if(CollectionUtil.isNotEmpty(supplierIds)){
List<BmsSupplier> supplierList = bmsSupplierService.listByIds(supplierIds);
for (HisUserSupplierAddressVo addressVo : list) {
for (BmsSupplier supplier : supplierList) {
if(addressVo.getSupplierId().equals(supplier.getId())){
addressVo.setSupplierCode(supplier.getCode());
addressVo.setSupplierName(supplier.getName());
BmsSupplierVisitAddress visitAddress = bmsSupplierVisitAddressService.getById(addressVo.getAddressId());
BmsSupplierVisit visitInfo = bmsSupplierVisitService.getById(supplier.getId());
addressVo.setAddressInfo(visitAddress);
addressVo.setVisitInfo(visitInfo);
break;
}
}
}
}
return R.byPageHelperList(list,supplierResultList);
return R.byPageHelperList(list);
}
/**
@ -131,6 +132,9 @@ public class BmsSupplierVisitAddressController {
@PreAuthorize("hasRole('bms:supplierVisitAddress:query')")
public R<BmsSupplierVisitAddress> getById(@PathVariable("id") String id){
BmsSupplierVisitAddress bmsSupplierVisitAddress = bmsSupplierVisitAddressService.getById(id);
BmsSupplier supplier = bmsSupplierService.getById(bmsSupplierVisitAddress.getSupplierId());
bmsSupplierVisitAddress.setSupplierName(supplier.getName());
bmsSupplierVisitAddress.setSupplierCode(supplier.getCode());
return R.ok(bmsSupplierVisitAddress);
}
@ -158,8 +162,8 @@ public class BmsSupplierVisitAddressController {
@SysLog(module = SystemModule.BASE, title = "供应商拜访地址", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:supplierVisitAddress:insert')")
public R<?> save(@RequestBody @Valid BmsSupplierVisitAddress param){
boolean result = bmsSupplierVisitAddressService.save(param);
return R.isTrue(result);
bmsSupplierVisitAddressService.save(param);
return R.ok(param);
}
/**
@ -171,7 +175,7 @@ public class BmsSupplierVisitAddressController {
@SysLog(module = SystemModule.BASE, title = "供应商拜访地址", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:supplierVisitAddress:delete')")
public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids);
List<String> idsLong = StringUtils.splitIdString(ids);
boolean result = bmsSupplierVisitAddressService.removeByIds(idsLong);
return R.isTrue(result);
}

3
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java

@ -41,11 +41,10 @@ public class BmsSupplierVisitTypeController {
* @param param
* @return
*/
//@GetMapping("/list")
@GetMapping("/list")
@PreAuthorize("hasRole('bms:supplierVisitType:query')")
public R<List<BmsSupplierVisitType>> getList(BmsSupplierVisitType param){
LambdaQueryWrapper<BmsSupplierVisitType> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<BmsSupplierVisitType> list = bmsSupplierVisitTypeService.list(lqw);
return R.ok(list);
}

8
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -238,14 +238,6 @@ public class BmsSupplier implements Serializable {
@TableField(exist = false)
private Integer pageSize;
@TableField(exist = false)
private Object visitAddressInfo;
/**
* 距离
*/
@TableField(exist = false)
private Double visitDistance;
public List<String> listBizRegionIds(){
List<String> list = new ArrayList<>();

10
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisit.java

@ -33,18 +33,24 @@ public class BmsSupplierVisit implements Serializable {
/** 供应商id */
@NotNull(message = "供应商id不能为空")
private Long supplierId;
private String supplierId;
/** 拜访次数 */
@NotNull(message = "拜访次数不能为空")
private Integer visitCount;
/** 上次拜访时间 */
@Length(max = 0,message = "上次拜访时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime lastVisitTime;
/** 下次拜访时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate nextVisitDate;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

12
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java

@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -22,19 +24,23 @@ import javax.validation.constraints.NotBlank;
* @since 2023-03-28
*/
@Data
@TableName("bms_supplier_visit_address")
@TableName(value = "bms_supplier_visit_address",autoResultMap = true)
public class BmsSupplierVisitAddress implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
@TableId(type = IdType.ASSIGN_UUID)
private String id;
/** 供应商id */
@NotNull(message = "供应商id不能为空")
private Long supplierId;
/** 图片 */
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] photos;
/** 详细地址 */
@NotBlank(message = "详细地址不能为空")
@Length(max = 255,message = "详细地址长度不能超过255字")

2
src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java

@ -32,10 +32,8 @@ public class BmsSupplierVisitSo {
*/
String searchValue;
@NotNull
Double localY;
@NotNull
Double localX;
/** 翻页参数 */

18
src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.his.entity.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
/**
@ -9,10 +10,23 @@ import lombok.Data;
@Data
public class HisUserSupplierAddressVo {
/** 供应商id */
String supplierId;
/** 地址id*/
String addressId;
/** 距离 */
Double distance;
Long addressId;
/** 供应商编码*/
String supplierCode;
/** 供应商*/
String supplierName;
Double distance;
/** 地址相关 */
Object addressInfo;
/** 访问相关 */
Object visitInfo;
}

24
src/main/java/com/qs/serve/modules/oss/service/impl/OssServiceImpl.java

@ -5,38 +5,41 @@ import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.model.MatchMode;
import com.aliyun.oss.model.PolicyConditions;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.config.properties.AliYunOssProperties;
import com.qs.serve.modules.oss.entity.OssPolicySignVo;
import com.qs.serve.modules.oss.service.OssService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author YenHex
* @since 2023/3/23
*/
@Service
@AllArgsConstructor
public class OssServiceImpl implements OssService {
AliYunOssProperties aliYunOSSProperties;
@Override
public OssPolicySignVo getPolicySign() {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "oss-cn-guangzhou.aliyuncs.com";
String endpoint = aliYunOSSProperties.getEndpoint();
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "LTAI5tHvNJT7M9YZJ9BSmURK";
String accessKeySecret = "OzH0ea3w8fgjrll9P0XTQlqmEg3Cky";
String accessKeyId = aliYunOSSProperties.getAccessKeyId();
String accessKeySecret = aliYunOSSProperties.getAccessKeySecret();
// 填写Bucket名称,例如examplebucket。
String bucketName = "qsjslservice";
String bucketName = aliYunOSSProperties.getBucket();
// 创建OSSClient实例。
String accessUrl = "https://"+bucketName+"."+endpoint;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM/dd");
String dir = "jsl/" + sdf.format(new Date());
String prefix = aliYunOSSProperties.getPrefix();
String dir = prefix + "/" + sdf.format(new Date())+"/";
long expireTime = 30;
@ -65,9 +68,4 @@ public class OssServiceImpl implements OssService {
return policySignVo;
}
public static void main(String[] args) {
OssPolicySignVo v = new OssServiceImpl().getPolicySign();
System.out.println(JsonUtil.objectToJson(v));
}
}

1
src/main/java/com/qs/serve/modules/sys/service/impl/SysUserLoginServiceImpl.java

@ -113,6 +113,7 @@ public class SysUserLoginServiceImpl implements SysUserLoginService {
String key = RedisCacheKeys.LOGIN_KEY_WX + wxtoken;
LambdaQueryWrapper<WxUser> wxUsrLqw = new LambdaQueryWrapper<>();
wxUsrLqw.eq(WxUser::getSysUserId,loginUser.getUserId());
wxUsrLqw.eq(WxUser::getSysUserId,loginUser.getUserId());
WxUser wxUser = null;
try {
wxUser = wxUserMapper.selectOne(wxUsrLqw);

10
src/main/resources/application-dev.yml

@ -5,7 +5,7 @@ project:
url: 'http://192.168.0.9:7444'
upload:
#上传映射地址
proxy-url: http://192.168.0.9:9000/
proxy-url: https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/jsl/
#物理存储地址
logical-path: D:\\WebMapPath\\
#腾讯云配置
@ -16,7 +16,13 @@ tencent:
sdkAppId: 1400174031
signName: 柒胜软件
templateId: 341678
aliyun:
oss:
bucket: qsjslservice
accessKeyId: LTAI5tHvNJT7M9YZJ9BSmURK
accessKeySecret: OzH0ea3w8fgjrll9P0XTQlqmEg3Cky
endpoint: oss-cn-guangzhou.aliyuncs.com
prefix: jsl
#服务配置
server:
port: 7400

15
src/main/resources/mapper/his/HisUserSupplierMapper.xml

@ -57,14 +57,17 @@
<select id="selectHisUserSupplierAddressList" parameterType="com.qs.serve.modules.his.entity.HisUserSupplier" resultMap="supplierVisitAddressMap">
SELECT DISTINCT
his_user_supplier.supplier_id,
bms_supplier_visit_address.id as address_id,
st_distance_sphere (
POINT ( bms_supplier_visit_address.local_y, bms_supplier_visit_address.local_x ),
POINT ( #{query.localY}, #{query.localX} )) AS distance
bms_supplier_visit_address.id as address_id
<if test="query.localY!=null and query.localX!=null">
,st_distance_sphere (
POINT ( bms_supplier_visit_address.local_y, bms_supplier_visit_address.local_x ),
POINT ( #{query.localY}, #{query.localX} )) AS distance
</if>
FROM
`his_user_supplier` `his_user_supplier`
LEFT JOIN `bms_supplier_visit_address` `bms_supplier_visit_address`
ON `his_user_supplier`.`supplier_id` = bms_supplier_visit_address.`supplier_id`
and `bms_supplier_visit_address`.`del_flag` != 1
<where>
and `his_user_supplier`.`supplier_id` != 0
<if test="query.id != null"> and `his_user_supplier`.`id` = #{query.id}</if>
@ -97,7 +100,9 @@
</if>
</where>
ORDER BY
distance DESC,
<if test="query.localY!=null and query.localX!=null">
-distance desc,
</if>
his_user_supplier.supplier_id,
bms_supplier_visit_address.id
</select>

Loading…
Cancel
Save