Browse Source

拜访流程调整

contract
Yen 2 years ago
parent
commit
12ca0f0c88
  1. 20
      src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java
  2. 10
      src/main/java/com/qs/serve/common/model/dto/R.java
  3. 6
      src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java
  4. 43
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java
  5. 7
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java
  6. 9
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  7. 7
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java
  8. 1
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitForm.java
  9. 5
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitType.java
  10. 12
      src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java
  11. 6
      src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java
  12. 18
      src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java
  13. 4
      src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java
  14. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  15. 27
      src/main/resources/mapper/his/HisUserSupplierMapper.xml

20
src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java

@ -36,14 +36,15 @@ public class UnifiedExceptionHandler {
@ExceptionHandler(value = BusinessException.class)
@ResponseBody
public R handleBindException(BusinessException e,HttpServletRequest request) {
log.error("自定义异常触发【{},{}】,请求地址:{}",e.getCode(),e.getMessage(),request.getRequestURI());
log.warn("自定义异常触发【{},{}】,请求地址:{}",e.getCode(),e.getMessage(),request.getRequestURI());
return new R(e.getCode(),e.getMessage());
}
@ExceptionHandler(value = NullPointerException.class)
@ResponseBody
public R handleBindException(NullPointerException e) {
public R handleBindException(NullPointerException e,HttpServletRequest request) {
e.printStackTrace();
log.warn("空指针【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
return R.error("数据不存在或被移除");
}
@ -51,8 +52,9 @@ public class UnifiedExceptionHandler {
AccessDeniedException.class
})
@ResponseBody
public R handleAccessException(AccessDeniedException e) {
public R handleAccessException(AccessDeniedException e,HttpServletRequest request) {
HttpCode hc = HttpCode.FORBIDDEN_403;
log.warn("访问拦截【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
return new R(hc.getCode(),hc.getMsg());
}
@ -80,9 +82,10 @@ public class UnifiedExceptionHandler {
HttpRequestMethodNotSupportedException.class
})
@ResponseBody
public R handleDevPrintMsgException(Exception e) {
public R handleDevPrintMsgException(Exception e,HttpServletRequest request) {
log.warn("参数校验异常:{}",e.getMessage());
if(DevEnvironmentConfig.isDev()){
log.warn("参数校验异常【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
return R.error(e.getMessage());
}
return R.error();
@ -107,9 +110,8 @@ public class UnifiedExceptionHandler {
SQLIntegrityConstraintViolationException.class,
})
@ResponseBody
public R handleSqlIntegrityException(Exception e) {
String msg = e.getMessage();
e.printStackTrace();
public R handleSqlIntegrityException(Exception e,HttpServletRequest request) {
log.warn("数据库拦截【{}】,请求地址:{}",e.getMessage(),request.getRequestURI());
return new R(500,"数据库拦截,请联系管理员");
}
@ -126,8 +128,8 @@ public class UnifiedExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public R handleException(Exception e) {
log.error("Servlet异常\n异常类型:{}\n异常信息:{}\n异常体:",e.getClass().getSimpleName(),e.getMessage(),e);
public R handleException(Exception e,HttpServletRequest request) {
log.error("Servlet异常\n请求地址:{},异常类型:{}\n异常信息:{}\n异常体:",request.getRequestURI(),e.getClass().getSimpleName(),e.getMessage(),e);
if(DevEnvironmentConfig.isDev()){return R.error(e.getMessage());}
return R.error();
}

10
src/main/java/com/qs/serve/common/model/dto/R.java

@ -177,4 +177,14 @@ public class R<T> implements Serializable {
return R.ok(pageVo);
}
public static <TYPE> R<PageVo<TYPE>> byPageList(Integer pageNum,Integer pageSize,Long total,List<TYPE> data){
PageVo<TYPE> pageVo = new PageVo<>();
pageVo.setPageSize(pageSize);
pageVo.setPageNum(pageNum);
pageVo.setTotal(total);
pageVo.setList(data);
pageVo.setTotalPage(total%pageSize==0?total/pageSize:total/pageSize+1);
return R.ok(pageVo);
}
}

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

@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@ -50,6 +51,11 @@ public class BizCusVisitBo implements Serializable {
*/
private String formJson;
/**
* 计划下次访问时间
*/
private LocalDate nextTimeVisit;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

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

@ -14,10 +14,9 @@ import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.so.BmsSupplierVisitSo;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.entity.dto.HisUserSupplierAddressVo;
import com.qs.serve.modules.his.mapper.HisUserSupplierMapper;
import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.sys.service.SysUserService;
@ -27,9 +26,9 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsSupplierVisitAddress;
import com.qs.serve.modules.bms.service.BmsSupplierVisitAddressService;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@ -45,6 +44,8 @@ import java.util.stream.Collectors;
public class BmsSupplierVisitAddressController {
private BmsSupplierVisitAddressService bmsSupplierVisitAddressService;
private BmsSupplierVisitService bmsSupplierVisitService;
private BmsSupplierService bmsSupplierService;
private HisUserSupplierService hisUserSupplierService;
private HisUserSupplierMapper hisUserSupplierMapper;
@ -64,12 +65,12 @@ public class BmsSupplierVisitAddressController {
/**
* 翻页查询=1过滤当前用户负责数据
* 翻页查询过滤当前用户负责数据
* @param param
* @return
*/
@GetMapping("/getPageForVisit")
public R<PageVo<HisUserSupplier>> getPageForVisit(BmsSupplierVisitSo param){
@PostMapping("/getPageForVisit")
public R<PageVo<BmsSupplier>> getPageForVisit(@Valid @RequestBody BmsSupplierVisitSo param){
String userId = AuthContextUtils.getSysUserId();
hisUserSupplierService.initByUserId(userId,false);
HisUserSupplier userSupplier = new HisUserSupplier();
@ -78,14 +79,27 @@ public class BmsSupplierVisitAddressController {
userSupplier.setSupplierCode(param.getSupplierCode());
userSupplier.setQueryAddress(param.getAddress());
userSupplier.setQueryValue(param.getSearchValue());
userSupplier.setLocalX(param.getLocalX());
userSupplier.setLocalY(param.getLocalY());
//lqw.ne(HisUserSupplier::getSupplierId,0);
//PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageUtil.startPage();
List<HisUserSupplier> list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier);
//List<BmsSupplier> supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList());
return R.byPageHelperList(list);
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;
}
}
}
return R.byPageHelperList(list,supplierResultList);
}
/**
@ -99,6 +113,11 @@ public class BmsSupplierVisitAddressController {
LambdaQueryWrapper<BmsSupplierVisitAddress> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<BmsSupplierVisitAddress> list = bmsSupplierVisitAddressService.list(lqw);
for (BmsSupplierVisitAddress visitAddress : list) {
BmsSupplier supplier = bmsSupplierService.getById(visitAddress.getSupplierId());
visitAddress.setSupplierName(supplier.getName());
visitAddress.setSupplierCode(supplier.getCode());
}
return R.byPageHelperList(list);
}

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

@ -9,6 +9,8 @@ import com.qs.serve.common.model.enums.SystemModule;
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.modules.bms.entity.BmsSupplierVisitForm;
import com.qs.serve.modules.bms.service.BmsSupplierVisitFormService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -32,6 +34,7 @@ import java.util.List;
public class BmsSupplierVisitTypeController {
private BmsSupplierVisitTypeService bmsSupplierVisitTypeService;
private BmsSupplierVisitFormService bmsSupplierVisitFormService;
/**
* 列表
@ -71,6 +74,10 @@ public class BmsSupplierVisitTypeController {
@PreAuthorize("hasRole('bms:supplierVisitType:query')")
public R<BmsSupplierVisitType> getById(@PathVariable("id") String id){
BmsSupplierVisitType bmsSupplierVisitType = bmsSupplierVisitTypeService.getById(id);
if(bmsSupplierVisitType.getTypeFormId()!=null){
Object info = bmsSupplierVisitFormService.getById(bmsSupplierVisitType.getTypeFormId());
bmsSupplierVisitType.setFormInfo(info);
}
return R.ok(bmsSupplierVisitType);
}

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

@ -238,6 +238,15 @@ 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<>();
list.add(this.getRegion2First());

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

@ -40,6 +40,8 @@ public class BmsSupplierVisitAddress implements Serializable {
@Length(max = 255,message = "详细地址长度不能超过255字")
private String addressDetail;
private String localAddress;
/** 纬度 */
@Length(max = 255,message = "纬度长度不能超过255字")
private String localX;
@ -82,6 +84,11 @@ public class BmsSupplierVisitAddress implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
@TableField(exist = false)
private String supplierName;
@TableField(exist = false)
private String supplierCode;
public static BmsSupplierVisitAddress toNewObject(BmsSupplierVisitAddress source){
BmsSupplierVisitAddress supplierVisitAddress = new BmsSupplierVisitAddress();

1
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitForm.java

@ -46,7 +46,6 @@ public class BmsSupplierVisitForm implements Serializable {
/** 表单json */
@NotBlank(message = "表单json不能为空")
@Length(max = 0,message = "表单json长度不能超过0字")
private String formContext;
/** 表单版本 */

5
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitType.java

@ -75,6 +75,11 @@ public class BmsSupplierVisitType implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/**
* 表单信息
*/
@TableField(exist = false)
private Object formInfo;
public static BmsSupplierVisitType toNewObject(BmsSupplierVisitType source){
BmsSupplierVisitType supplierVisitType = new BmsSupplierVisitType();

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

@ -3,6 +3,8 @@ package com.qs.serve.modules.bms.entity.so;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2023/3/28
@ -30,11 +32,17 @@ public class BmsSupplierVisitSo {
*/
String searchValue;
@NotNull
Double localY;
@NotNull
Double localX;
/** 翻页参数 */
@TableField(exist = false)
private Integer pageNum;
private Integer pageRow;
/** 翻页参数2 */
@TableField(exist = false)
private Integer pageSize;
}

6
src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java

@ -114,6 +114,12 @@ public class HisUserSupplier implements Serializable {
@TableField(exist = false)
private String addressDetail;
@TableField(exist = false)
Double localY;
@TableField(exist = false)
Double localX;
public BmsSupplier toSupplier(){
BmsSupplier bmsSupplier = new BmsSupplier();
bmsSupplier.setId(this.getSupplierId()+"");

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

@ -0,0 +1,18 @@
package com.qs.serve.modules.his.entity.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2023/3/29
*/
@Data
public class HisUserSupplierAddressVo {
String supplierId;
Long addressId;
Double distance;
}

4
src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java

@ -1,7 +1,9 @@
package com.qs.serve.modules.his.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.so.BmsSupplierVisitSo;
import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.entity.dto.HisUserSupplierAddressVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -11,7 +13,7 @@ import java.util.List;
*/
public interface HisUserSupplierMapper extends BaseMapper<HisUserSupplier> {
List<HisUserSupplier> selectHisUserSupplierAddressList(@Param("query") HisUserSupplier param);
List<HisUserSupplierAddressVo> selectHisUserSupplierAddressList(@Param("query") HisUserSupplier param);
}

2
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

@ -455,7 +455,7 @@ public class TbsBudgetApplicationService {
return;
}
List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList());
//PS:排序规则:优先时间条件,其次匹配品牌条件
//PS:排序规则:优先满足时间条件,其次匹配品牌条件
//按品类条件,提取可用预算(列表已按小维度到大维度排列)
List<TbsBudget> currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds());
//关联无条件预算

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

@ -27,6 +27,12 @@
<result property="addressDetail" column="address_detail"/>
</resultMap>
<resultMap id="supplierVisitAddressMap" type="com.qs.serve.modules.his.entity.dto.HisUserSupplierAddressVo" >
<result property="supplierId" column="supplier_id"/>
<result property="addressId" column="address_id"/>
<result property="distance" column="distance"/>
</resultMap>
<sql id="hisUserSupplierSql">
his_user_supplier.`id`,
his_user_supplier.`user_id`,
@ -48,15 +54,17 @@
his_user_supplier.`tenant_id`,
his_user_supplier.`cost_flag` </sql>
<select id="selectHisUserSupplierAddressList" parameterType="com.qs.serve.modules.his.entity.HisUserSupplier" resultMap="hisUserSupplierMap">
SELECT
<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,
bms_supplier_visit_address.address_detail,
<include refid="hisUserSupplierSql"/>
FROM `bms_supplier_visit_address` `bms_supplier_visit_address`
left join
st_distance_sphere (
POINT ( bms_supplier_visit_address.local_y, bms_supplier_visit_address.local_x ),
POINT ( #{query.localY}, #{query.localX} )) AS distance
FROM
`his_user_supplier` `his_user_supplier`
on `his_user_supplier`.`supplier_id` = bms_supplier_visit_address.`supplier_id`
LEFT JOIN `bms_supplier_visit_address` `bms_supplier_visit_address`
ON `his_user_supplier`.`supplier_id` = bms_supplier_visit_address.`supplier_id`
<where>
and `his_user_supplier`.`supplier_id` != 0
<if test="query.id != null"> and `his_user_supplier`.`id` = #{query.id}</if>
@ -87,8 +95,11 @@
or `his_user_supplier`.`supplier_code` like concat('%',#{query.queryValue},'%')
)
</if>
</where>
ORDER BY
distance DESC,
his_user_supplier.supplier_id,
bms_supplier_visit_address.id
</select>
</mapper>

Loading…
Cancel
Save