From 12ca0f0c88b9d4c2df3bfbc225f3d258457ee40d Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 29 Mar 2023 11:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9C=E8=AE=BF=E6=B5=81=E7=A8=8B=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/UnifiedExceptionHandler.java | 20 +++++---- .../java/com/qs/serve/common/model/dto/R.java | 10 +++++ .../modules/biz/entity/bo/BizCusVisitBo.java | 6 +++ .../BmsSupplierVisitAddressController.java | 43 +++++++++++++------ .../BmsSupplierVisitTypeController.java | 7 +++ .../serve/modules/bms/entity/BmsSupplier.java | 9 ++++ .../bms/entity/BmsSupplierVisitAddress.java | 7 +++ .../bms/entity/BmsSupplierVisitForm.java | 1 - .../bms/entity/BmsSupplierVisitType.java | 5 +++ .../bms/entity/so/BmsSupplierVisitSo.java | 12 +++++- .../modules/his/entity/HisUserSupplier.java | 6 +++ .../entity/dto/HisUserSupplierAddressVo.java | 18 ++++++++ .../his/mapper/HisUserSupplierMapper.java | 4 +- .../service/TbsBudgetApplicationService.java | 2 +- .../mapper/his/HisUserSupplierMapper.xml | 29 +++++++++---- 15 files changed, 144 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java diff --git a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java b/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java index 443a25bc..722c5d12 100644 --- a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java +++ b/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(); } diff --git a/src/main/java/com/qs/serve/common/model/dto/R.java b/src/main/java/com/qs/serve/common/model/dto/R.java index 6e9d69b1..3ade45e4 100644 --- a/src/main/java/com/qs/serve/common/model/dto/R.java +++ b/src/main/java/com/qs/serve/common/model/dto/R.java @@ -177,4 +177,14 @@ public class R implements Serializable { return R.ok(pageVo); } + public static R> byPageList(Integer pageNum,Integer pageSize,Long total,List data){ + PageVo 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); + } + } diff --git a/src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java b/src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java index 68c77796..601350a2 100644 --- a/src/main/java/com/qs/serve/modules/biz/entity/bo/BizCusVisitBo.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java index 5a4ef84a..73343cd0 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java +++ b/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> getPageForVisit(BmsSupplierVisitSo param){ + @PostMapping("/getPageForVisit") + public R> 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 list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier); - //List supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList()); - return R.byPageHelperList(list); + List list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier); + List supplierIds = list.stream().map(HisUserSupplierAddressVo::getSupplierId).collect(Collectors.toList()); + List supplierList = bmsSupplierService.listByIds(supplierIds); + List 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 lqw = new LambdaQueryWrapper<>(param); PageUtil.startPage(); List 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); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java index 6c5ab9aa..055a153c 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitTypeController.java +++ b/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 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); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index 37272a78..f908b96f 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/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 listBizRegionIds(){ List list = new ArrayList<>(); list.add(this.getRegion2First()); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java index c520b0a8..9a023526 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java +++ b/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(); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitForm.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitForm.java index fdfed64b..2b2a1a14 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitForm.java +++ b/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; /** 表单版本 */ diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitType.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitType.java index 00a8444e..913ecfd3 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitType.java +++ b/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(); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java b/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java index f98cf3f6..566418ef 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierVisitSo.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java index da400923..6edf93f5 100644 --- a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java +++ b/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()+""); diff --git a/src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java b/src/main/java/com/qs/serve/modules/his/entity/dto/HisUserSupplierAddressVo.java new file mode 100644 index 00000000..b1edd2f6 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java b/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java index 98531207..14088f6a 100644 --- a/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java +++ b/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 { - List selectHisUserSupplierAddressList(@Param("query") HisUserSupplier param); + List selectHisUserSupplierAddressList(@Param("query") HisUserSupplier param); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java index f9c36177..b990df1d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java @@ -455,7 +455,7 @@ public class TbsBudgetApplicationService { return; } List budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList()); - //PS:排序规则:优先为时间条件,其次匹配品牌条件 + //PS:排序规则:优先满足时间条件,其次匹配品牌条件 //按品类条件,提取可用预算(列表已按小维度到大维度排列) List currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds()); //关联无条件预算 diff --git a/src/main/resources/mapper/his/HisUserSupplierMapper.xml b/src/main/resources/mapper/his/HisUserSupplierMapper.xml index 930d70a1..b8f1d4dc 100644 --- a/src/main/resources/mapper/his/HisUserSupplierMapper.xml +++ b/src/main/resources/mapper/his/HisUserSupplierMapper.xml @@ -27,6 +27,12 @@ + + + + + + his_user_supplier.`id`, his_user_supplier.`user_id`, @@ -48,15 +54,17 @@ his_user_supplier.`tenant_id`, his_user_supplier.`cost_flag` - + SELECT DISTINCT + his_user_supplier.supplier_id, bms_supplier_visit_address.id as address_id, - bms_supplier_visit_address.address_detail, - - FROM `bms_supplier_visit_address` `bms_supplier_visit_address` - left join - `his_user_supplier` `his_user_supplier` - on `his_user_supplier`.`supplier_id` = bms_supplier_visit_address.`supplier_id` + 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` + LEFT JOIN `bms_supplier_visit_address` `bms_supplier_visit_address` + ON `his_user_supplier`.`supplier_id` = bms_supplier_visit_address.`supplier_id` and `his_user_supplier`.`supplier_id` != 0 and `his_user_supplier`.`id` = #{query.id} @@ -87,8 +95,11 @@ or `his_user_supplier`.`supplier_code` like concat('%',#{query.queryValue},'%') ) - + ORDER BY + distance DESC, + his_user_supplier.supplier_id, + bms_supplier_visit_address.id