From a5abc392b0c4b97d36ad7f3d0eec87606e02cc85 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 12 Apr 2023 14:51:19 +0800 Subject: [PATCH] update --- .../modules/baz/entity/BazVisitInfo.java | 2 + .../modules/baz/entity/BazVisitInstance.java | 10 +- .../baz/entity/BazVisitInstanceFlow.java | 4 + .../impl/BazVisitInstanceServiceImpl.java | 30 +++- .../controller/BmsChannelPointController.java | 3 + .../controller/BmsMasterUserController.java | 26 ++- .../controller/BmsRegionUserController.java | 49 +++++- .../BmsSupplierVisitAddressController.java | 10 ++ .../bms/mapper/BmsChannelPointMapper.java | 2 + .../bms/mapper/BmsMasterUserMapper.java | 2 + .../bms/mapper/BmsRegionUserMapper.java | 28 +++- .../impl/BmsChannelPointServiceImpl.java | 6 +- .../his/entity/HisUserChannelPoint.java | 107 +++++++++++++ .../his/mapper/HisUserChannelPointMapper.java | 14 ++ .../service/HisUserChannelPointService.java | 46 ++++++ .../impl/HisUserChannelPointServiceImpl.java | 148 ++++++++++++++++++ .../qms/controller/QmsGroupController.java | 4 +- .../impl/QmsGroupScopeServiceImpl.java | 8 +- .../wx/entity/dto/sms/WxSmsNewForm.java | 10 +- .../wx/service/impl/WxUserServiceImpl.java | 3 +- .../mapper/bms/BmsChannelPointMapper.xml | 6 +- 21 files changed, 485 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/his/entity/HisUserChannelPoint.java create mode 100644 src/main/java/com/qs/serve/modules/his/mapper/HisUserChannelPointMapper.java create mode 100644 src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java create mode 100644 src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInfo.java b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInfo.java index edc3429e..632188de 100644 --- a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInfo.java +++ b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInfo.java @@ -44,6 +44,8 @@ public class BazVisitInfo implements Serializable { @NotNull(message = "目标id不能为空") private String targetId; + private String userId; + /** 拜访次数 */ @NotNull(message = "拜访次数不能为空") private Integer visitCount; diff --git a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java index 21f179b4..ea0a0ad1 100644 --- a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java +++ b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java @@ -85,6 +85,10 @@ public class BazVisitInstance implements Serializable { private String targetAddress; private String targetMapAddress; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime finishedTime; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; @@ -135,12 +139,6 @@ public class BazVisitInstance implements Serializable { visitInstance.setTargetCode(targetDTO.getTargetCode()); visitInstance.setTargetName(targetDTO.getTargetName()); visitInstance.setRemark(source.getRemark()); - visitInstance.setCreateTime(source.getCreateTime()); - visitInstance.setUpdateTime(source.getUpdateTime()); - visitInstance.setTenantId(source.getTenantId()); - visitInstance.setDelFlag(source.getDelFlag()); - visitInstance.setCreateBy(source.getCreateBy()); - visitInstance.setUpdateBy(source.getUpdateBy()); return visitInstance; } diff --git a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java index cb039680..1d90f2a2 100644 --- a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java +++ b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java @@ -132,6 +132,10 @@ public class BazVisitInstanceFlow implements Serializable { @Length(max = 255,message = "拜访人长度不能超过255字") private String visitorName; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime submitTime; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java index 6eab2be7..106a69a5 100644 --- a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java @@ -7,14 +7,13 @@ import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.baz.common.BazTargetTypeConsts; -import com.qs.serve.modules.baz.entity.BazVisit; -import com.qs.serve.modules.baz.entity.BazVisitFlow; -import com.qs.serve.modules.baz.entity.BazVisitInstanceFlow; +import com.qs.serve.modules.baz.entity.*; import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo; import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo; import com.qs.serve.modules.baz.mapper.BazVisitFlowMapper; import com.qs.serve.modules.baz.mapper.BazVisitInstanceFlowMapper; import com.qs.serve.modules.baz.mapper.BazVisitMapper; +import com.qs.serve.modules.baz.service.BazVisitInfoService; import com.qs.serve.modules.baz.service.BazVisitInstanceFlowService; import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; @@ -27,10 +26,10 @@ import com.qs.serve.modules.sys.mapper.SysUserMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import com.qs.serve.modules.baz.entity.BazVisitInstance; import com.qs.serve.modules.baz.service.BazVisitInstanceService; import com.qs.serve.modules.baz.mapper.BazVisitInstanceMapper; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** @@ -51,6 +50,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl visitInfoLqw = new LambdaQueryWrapper<>(); + visitInfoLqw.eq(BazVisitInfo::getTargetType, targetType); + visitInfoLqw.eq(BazVisitInfo::getTargetId,targetDTO.getTargetId()); + visitInfoLqw.eq(BazVisitInfo::getUserId,sysUser.getId()); + BazVisitInfo visitInfo = bazVisitInfoService.getOne(visitInfoLqw,false); + if(visitInfo==null){ + visitInfo = new BazVisitInfo(); + visitInfo.setVisitId(visitInstance.getVisitId()); + visitInfo.setTargetId(targetDTO.getTargetId()); + visitInfo.setTargetType(targetType); + visitInfo.setUserId(sysUser.getSyUserId()); + visitInfo.setVisitCount(1); + }else { + visitInfo.setVisitCount(visitInfo.getVisitCount()+1); + } + visitInfo.setLastVisitTime(LocalDateTime.now()); + + //保存 + bazVisitInfoService.saveOrUpdate(visitInfo); this.save(visitInstance); for (BazVisitInstanceFlow instanceFlow : instanceFlowList) { instanceFlow.setVisitInstanceId(visitInstance.getId()); @@ -152,6 +172,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl countLqw = new LambdaQueryWrapper<>(); @@ -160,6 +181,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl channelPointList = bmsChannelPointService.listByIds(param.getTargetIds()); + for (BmsChannelPoint channelPoint : channelPointList) { + hisUserChannelPointService.flushPoint(channelPoint.getId(),channelPoint.getSaleRegionPathIds(),channelPoint.getBizRegionPathIds()); + } + } return R.ok(); } @@ -215,6 +222,17 @@ public class BmsMasterUserController { @PreAuthorize("hasRole('bms:masterUser:delete')") public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); + List masterUserList = bmsMasterUserService.listByIds(idsLong); + if(CollectionUtil.isNotEmpty(masterUserList)){ + if(masterUserList.get(0).getType().equals(MasterUserType.Point)){ + List pointIds = masterUserList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList()); + List channelPointList = bmsChannelPointService.listByIds(pointIds); + for (BmsChannelPoint channelPoint : channelPointList) { + hisUserChannelPointService.flushPoint(channelPoint.getId(),channelPoint.getSaleRegionPathIds(),channelPoint.getBizRegionPathIds()); + } + } + } + boolean result = bmsMasterUserService.removeByIds(idsLong); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java index 7ac96081..f8a18b0f 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java @@ -10,12 +10,15 @@ import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.entity.BmsChannelPoint; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.bo.BmsRegionUserBo; import com.qs.serve.modules.bms.entity.bo.BmsRegionUserSaveBo; +import com.qs.serve.modules.bms.service.BmsChannelPointService; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; @@ -47,11 +50,9 @@ public class BmsRegionUserController { private BmsRegion2Service bmsRegion2Service; private BmsRegionService bmsRegionService; private SysUserService sysUserService; + private HisUserChannelPointService hisUserChannelPointService; + private BmsChannelPointService channelPointService; - public R commentRegionList(){ - - return R.ok(); - } /** * 列表 @@ -132,6 +133,36 @@ public class BmsRegionUserController { } } bmsRegionUserService.saveBatch(bmsRegionUsers); + // 类型:0=销售区域;1=行政区域 + if(type.equals(0)){ + List regionList = bmsRegionService.listByIds(param.getRegionIds()); + for (BmsRegion region : regionList) { + LambdaQueryWrapper pointLqw = new LambdaQueryWrapper<>(); + pointLqw.eq(BmsChannelPoint::getSaleRegionId,region.getId()); + pointLqw.select(BmsChannelPoint::getId); + //区域有那些网点 + List pointList = channelPointService.list(pointLqw); + List pointIds = pointList.stream().map(BmsChannelPoint::getId) + .distinct().collect(Collectors.toList()); + String pathIds = region.getPathIds(); + List userIds = param.getUserIds(); + hisUserChannelPointService.flushBatchUserRegion(userIds,pointIds,2,pathIds); + } + }else { + List regionList = bmsRegion2Service.listByIds(param.getRegionIds()); + for (BmsRegion2 region : regionList) { + LambdaQueryWrapper pointLqw = new LambdaQueryWrapper<>(); + pointLqw.eq(BmsChannelPoint::getBizRegionId,region.getId()); + pointLqw.select(BmsChannelPoint::getId); + //区域有那些网点 + List pointList = channelPointService.list(pointLqw); + List pointIds = pointList.stream().map(BmsChannelPoint::getId) + .distinct().collect(Collectors.toList()); + String pathIds = region.getPathIds(); + List userIds = param.getUserIds(); + hisUserChannelPointService.flushBatchUserRegion(userIds,pointIds,1,pathIds); + } + } return R.ok(); } @@ -174,6 +205,16 @@ public class BmsRegionUserController { @PreAuthorize("hasRole('bms:regionUser:delete')") public R deleteById(@PathVariable String ids){ List idsLong = StringUtils.splitIdLong(ids); + List regionUserList = bmsRegionUserService.listByIds(idsLong); + for (BmsRegionUser regionUser : regionUserList) { + if(regionUser.getType().equals(0)){ + BmsRegion region = bmsRegionService.getById(regionUser.getRegionId()); + hisUserChannelPointService.removeUserRegion(regionUser.getUserId(),region.getPathIds(),null); + }else { + BmsRegion2 region = bmsRegion2Service.getById(regionUser.getRegionId()); + hisUserChannelPointService.removeUserRegion(regionUser.getUserId(),null,region.getPathIds()); + } + } bmsRegionUserService.removeByIds(idsLong); return R.ok(); } 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 64f4f8d4..c7b001c6 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 @@ -9,7 +9,9 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; import com.qs.serve.modules.baz.common.BazTargetTypeConsts; +import com.qs.serve.modules.baz.entity.BazVisitFlow; import com.qs.serve.modules.baz.entity.BazVisitInfo; +import com.qs.serve.modules.baz.service.BazVisitFlowService; import com.qs.serve.modules.baz.service.BazVisitInfoService; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplierVisit; @@ -49,6 +51,7 @@ public class BmsSupplierVisitAddressController { private BmsSupplierService bmsSupplierService; private HisUserSupplierService hisUserSupplierService; private HisUserSupplierMapper hisUserSupplierMapper; + private BazVisitFlowService bazVisitFlowService; /** * 列表 @@ -100,6 +103,7 @@ public class BmsSupplierVisitAddressController { LambdaQueryWrapper visitInfoLqw = new LambdaQueryWrapper<>(); visitInfoLqw.eq(BazVisitInfo::getTargetType, BazTargetTypeConsts.CUSTOMER); visitInfoLqw.eq(BazVisitInfo::getTargetId,supplier.getId()); + visitInfoLqw.eq(BazVisitInfo::getUserId,userId); BazVisitInfo visitInfo = bazVisitInfoService.getOne(visitInfoLqw,false); addressVo.setVisitInfo(visitInfo); break; @@ -183,6 +187,12 @@ public class BmsSupplierVisitAddressController { @PreAuthorize("hasRole('bms:supplierVisitAddress:delete')") public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdString(ids); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BazVisitFlow::getFormId,idsLong); + long count = bazVisitFlowService.count(lqw); + if(count>0){ + return R.error("含有使用表单的业务,无法删除"); + } boolean result = bmsSupplierVisitAddressService.removeByIds(idsLong); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java index c1c8942f..c1136ed5 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java @@ -35,5 +35,7 @@ public interface BmsChannelPointMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "1") List selectUserPointList4Visit(@Param("query") BmsPointVisitSo param); + //List + } diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java index 8962321d..f8786836 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsMasterUser; +import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserChannelVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserPointVo; @@ -38,5 +39,6 @@ public interface BmsMasterUserMapper extends BaseMapper { */ List selectCenterMasterUserList(@Param("query") BmsMasterUser userChannel); + } diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsRegionUserMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsRegionUserMapper.java index 9edadcc4..7d3121e9 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsRegionUserMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsRegionUserMapper.java @@ -2,7 +2,9 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsRegionUser; - +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.util.List; /** * 区域负责人 Mapper * @author YenHex @@ -10,5 +12,29 @@ import com.qs.serve.modules.bms.entity.BmsRegionUser; */ public interface BmsRegionUserMapper extends BaseMapper { + /** + * 我的销售区域 + * @param userId + * @return + */ + @Select("SELECT path_ids FROM" + + " ( SELECT region_id FROM `bms_region_user` " + + " WHERE `bms_region_user`.type = '0' AND `bms_region_user`.del_flag = 0 and `bms_region_user`.user_id = #{userId}" + + " ) reg_user" + + " LEFT JOIN `bms_region` `bms_region` ON reg_user.region_id = `bms_region`.`id` ") + List selectMySaleRegion(@Param("userId")String userId); + + /** + * 我的行政区域 + * @param userId + * @return + */ + @Select(" SELECT path_ids FROM" + + " ( SELECT region_id FROM `bms_region_user`" + + " WHERE `bms_region_user`.type = '1' AND `bms_region_user`.del_flag = 0 and `bms_region_user`.user_id = #{userId}" + + " ) reg_user " + + " LEFT JOIN `bms_region2` `bms_region2` ON reg_user.region_id = `bms_region2`.`id`;") + List selectMyBizRegion(@Param("userId")String userId); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java index 6c8c1ffd..e1e274f5 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -11,6 +11,7 @@ import com.qs.serve.modules.bms.entity.bo.BmsChannelPointBo; import com.qs.serve.modules.bms.service.BmsChannelService; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.his.service.HisUserChannelPointService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -33,6 +34,7 @@ public class BmsChannelPointServiceImpl extends ServiceImpl我管理的;1->行政区域;2->销售区域 */ + @NotNull(message = "来源类型:0->我管理的;1->行政区域;2->销售区域不能为空") + private Integer sourceType; + + /** 来源id路径 */ + @Length(max = 255,message = "来源id路径长度不能超过255字") + private String sourceIds; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 可投放费用 */ + @NotNull(message = "可投放费用不能为空") + private Integer costFlag; + + + public static HisUserChannelPoint toNewObject(HisUserChannelPoint source){ + HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); + userChannelPoint.setId(source.getId()); + userChannelPoint.setUserId(source.getUserId()); + userChannelPoint.setPointId(source.getPointId()); + userChannelPoint.setSourceType(source.getSourceType()); + userChannelPoint.setSourceIds(source.getSourceIds()); + userChannelPoint.setRemark(source.getRemark()); + userChannelPoint.setCreateTime(source.getCreateTime()); + userChannelPoint.setUpdateTime(source.getUpdateTime()); + userChannelPoint.setTenantId(source.getTenantId()); + userChannelPoint.setDelFlag(source.getDelFlag()); + userChannelPoint.setCreateBy(source.getCreateBy()); + userChannelPoint.setUpdateBy(source.getUpdateBy()); + userChannelPoint.setCostFlag(source.getCostFlag()); + return userChannelPoint; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/his/mapper/HisUserChannelPointMapper.java b/src/main/java/com/qs/serve/modules/his/mapper/HisUserChannelPointMapper.java new file mode 100644 index 00000000..809d99c2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/mapper/HisUserChannelPointMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.his.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.his.entity.HisUserChannelPoint; + +/** + * 渠道站点 Mapper + * @author YenHex + * @date 2023-04-12 + */ +public interface HisUserChannelPointMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java b/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java new file mode 100644 index 00000000..662638e2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/service/HisUserChannelPointService.java @@ -0,0 +1,46 @@ +package com.qs.serve.modules.his.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.his.entity.HisUserChannelPoint; +import java.util.List; + +/** + * 渠道站点 服务接口 + * @author YenHex + * @date 2023-04-12 + */ +public interface HisUserChannelPointService extends IService { + + /** + * 删除 + * @param pointId + */ + void removeByPointId(Long pointId); + + /** + * 初始化网点 + * @param pointId + * @param saleRegionIds + * @param bizRegionIds + */ + void flushPoint(Long pointId ,String saleRegionIds,String bizRegionIds); + + /** + * 删除用户区域 + * @param userId + * @param saleRegionIds + * @param bizRegionIds + */ + void removeUserRegion(String userId,String saleRegionIds,String bizRegionIds); + + /** + * 批量刷新 + * @param userIds + * @param pointIds + * @param sourceType + * @param regionIds + */ + void flushBatchUserRegion(List userIds,List pointIds,Integer sourceType,String regionIds); + +} + diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java new file mode 100644 index 00000000..a1c77f37 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserChannelPointServiceImpl.java @@ -0,0 +1,148 @@ +package com.qs.serve.modules.his.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.common.MasterUserType; +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import com.qs.serve.modules.bms.entity.BmsRegionUser; +import com.qs.serve.modules.bms.mapper.BmsMasterUserMapper; +import com.qs.serve.modules.bms.mapper.BmsRegionUserMapper; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.his.entity.HisUserChannelPoint; +import com.qs.serve.modules.his.service.HisUserChannelPointService; +import com.qs.serve.modules.his.mapper.HisUserChannelPointMapper; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 渠道站点 服务实现类 + * @author YenHex + * @since 2023-04-12 + */ +@Slf4j +@Service +@AllArgsConstructor +public class HisUserChannelPointServiceImpl extends ServiceImpl implements HisUserChannelPointService { + + private final BmsRegionUserMapper regionUserMapper; + private final BmsMasterUserMapper masterUserMapper; + + @Override + public void removeByPointId(Long pointId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(HisUserChannelPoint::getPointId,pointId); + this.remove(lqw); + } + + @Override + public void flushPoint(Long pointId, String saleRegionIds, String bizRegionIds) { + this.removeByPointId(pointId); + List channelPointList = new ArrayList<>(); + if(StringUtils.hasText(saleRegionIds)){ + List saleRegionArr = Arrays.asList(saleRegionIds.split("_")); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsRegionUser::getRegionId,saleRegionArr); + lqw.eq(BmsRegionUser::getType,0); + lqw.select(BmsRegionUser::getUserId); + List regionUserList = regionUserMapper.selectList(lqw); + List userIds = regionUserList.stream().map(BmsRegionUser::getUserId) + .distinct().collect(Collectors.toList()); + for (String userId : userIds) { + HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); + userChannelPoint.setUserId(userId); + userChannelPoint.setPointId(pointId); + userChannelPoint.setSourceType(2); + userChannelPoint.setSourceIds(saleRegionIds); + channelPointList.add(userChannelPoint); + } + } + + if(StringUtils.hasText(bizRegionIds)){ + List bizRegionArr = Arrays.asList(bizRegionIds.split("_")); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsRegionUser::getRegionId,bizRegionArr); + lqw.eq(BmsRegionUser::getType,1); + lqw.select(BmsRegionUser::getUserId); + List regionUserList = regionUserMapper.selectList(lqw); + List userIds = regionUserList.stream().map(BmsRegionUser::getUserId) + .distinct().collect(Collectors.toList()); + for (String userId : userIds) { + HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); + userChannelPoint.setUserId(userId); + userChannelPoint.setPointId(pointId); + userChannelPoint.setSourceType(1); + userChannelPoint.setSourceIds(bizRegionIds); + channelPointList.add(userChannelPoint); + } + } + + LambdaQueryWrapper masterUserLqw = new LambdaQueryWrapper<>(); + masterUserLqw.eq(BmsMasterUser::getType, MasterUserType.Point); + masterUserLqw.eq(BmsMasterUser::getTargetId,pointId); + masterUserLqw.select(BmsMasterUser::getUserId); + List masterUsers = masterUserMapper.selectList(masterUserLqw); + List userIds = masterUsers.stream().map(a->a.getUserId()).distinct().collect(Collectors.toList()); + for (String userId : userIds) { + HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); + userChannelPoint.setUserId(userId); + userChannelPoint.setPointId(pointId); + userChannelPoint.setSourceType(0); + channelPointList.add(userChannelPoint); + } + if(CollectionUtil.isNotEmpty(channelPointList)){ + this.saveBatch(channelPointList); + } + + } + + @Override + public void removeUserRegion(String userId, String saleRegionIds, String bizRegionIds) { + if(StringUtils.hasText(saleRegionIds)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(HisUserChannelPoint::getUserId,userId); + lqw.eq(HisUserChannelPoint::getSourceIds,saleRegionIds); + lqw.eq(HisUserChannelPoint::getSourceType,2); + this.remove(lqw); + } + if(StringUtils.hasText(bizRegionIds)){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(HisUserChannelPoint::getUserId,userId); + lqw.eq(HisUserChannelPoint::getSourceIds,bizRegionIds); + lqw.eq(HisUserChannelPoint::getSourceType,1); + this.remove(lqw); + } + } + + @Override + public void flushBatchUserRegion(List userIds, List pointIds, Integer sourceType, String regionIds) { + List hisUserChannelPointList = new ArrayList<>(); + for (String userId : userIds) { + if(sourceType.equals(2)){ + this.removeUserRegion(userId,regionIds,null); + }else { + this.removeUserRegion(userId,null,regionIds); + } + for (Long pointId : pointIds) { + HisUserChannelPoint userChannelPoint = new HisUserChannelPoint(); + userChannelPoint.setUserId(userId); + userChannelPoint.setPointId(pointId); + userChannelPoint.setSourceType(sourceType); + userChannelPoint.setSourceIds(regionIds); + hisUserChannelPointList.add(userChannelPoint); + } + } + if(CollectionUtil.isNotEmpty(hisUserChannelPointList)){ + this.saveBatch(hisUserChannelPointList); + } + } + + +} + diff --git a/src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java b/src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java index b46081f1..846de8bd 100644 --- a/src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java +++ b/src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java @@ -181,7 +181,9 @@ public class QmsGroupController { for (WxUser wxUser : wxUserList) { WxSmsNewForm wxSmsNewForm = new WxSmsNewForm(); wxSmsNewForm.setTitle(qmsGroup.getName()); - wxSmsNewForm.setParam5(qmsGroup.getPublishTime().toString()); + wxSmsNewForm.setUserName(wxUser.getEmpName()); + wxSmsNewForm.setBizType("催办通知"); + wxSmsNewForm.setBitTime(qmsGroup.getPublishTime().toString()); wxSmsNewForm.setRemark(qmsGroup.getRemark()); wxPushService.sendWxMsg(wxUser,"填写问卷通知",wxSmsNewForm,true,hastenBo.getGroupId()+""); } diff --git a/src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java b/src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java index e1c577c2..5a502cc7 100644 --- a/src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java @@ -122,7 +122,9 @@ public class QmsGroupScopeServiceImpl extends ServiceImpl impleme WxOAuth2Service auth2Service = wxMpService.getOAuth2Service(); try { WxOAuth2AccessToken auth2AccessToken = auth2Service.getAccessToken(code); + log.debug("auth2AccessToken:{}",auth2AccessToken.getAccessToken()); WxOAuth2UserInfo auth2UserInfo = auth2Service.getUserInfo(auth2AccessToken, GySysConst.LANG_ZH_CN); WxMpUser wxMpUser = wxMpService.getUserService().userInfo(auth2UserInfo.getOpenid(), GySysConst.LANG_ZH_CN); wxUser = this.getByOpenId(auth2UserInfo.getOpenid()); @@ -192,7 +193,7 @@ public class WxUserServiceImpl extends ServiceImpl impleme updateById(wxUser); } } catch (WxErrorException e) { - e.printStackTrace(); + log.debug("微信登录失败:{}",e.getMessage()); } } //TODO 登录日志 diff --git a/src/main/resources/mapper/bms/BmsChannelPointMapper.xml b/src/main/resources/mapper/bms/BmsChannelPointMapper.xml index 8dc0ddea..0d1112a4 100644 --- a/src/main/resources/mapper/bms/BmsChannelPointMapper.xml +++ b/src/main/resources/mapper/bms/BmsChannelPointMapper.xml @@ -70,7 +70,10 @@ LEFT JOIN bms_supplier_channel ON bms_supplier_channel.`channel_id` = `bms_channel_point`.`channel_id` - and bms_supplier_channel.`supplier_id` = #{query.supplierId} + and `bms_channel_point`.`del_flag` = 0 + + and bms_supplier_channel.`supplier_id` = #{query.supplierId} and bms_supplier_channel.`del_flag` = 0 + and `bms_channel_point`.`id` = #{query.id} and `bms_channel_point`.`channel_id` = #{query.channelId} and `bms_channel_point`.`channel_name` like concat('%',#{query.channelName},'%') @@ -91,7 +94,6 @@ and `bms_channel_point`.`create_time` = #{query.createTime} and `bms_channel_point`.`update_time` = #{query.updateTime} and `bms_channel_point`.`tenant_id` = #{query.tenantId} - and `bms_channel_point`.`del_flag` = #{query.delFlag} and `bms_channel_point`.`create_by` = #{query.createBy} and `bms_channel_point`.`update_by` = #{query.updateBy} and `bms_channel_point`.`cost_flag` = #{query.costFlag}