From c7721ecb5fd18cbe46f05205e37aa436ca7446c8 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 16 May 2023 11:56:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BmsChannelPointController.java | 5 +- .../bms/controller/BmsSupplierController.java | 10 + .../controller/my/BmsChannelMyController.java | 57 +++--- .../my/BmsChannelPointMyController.java | 47 ++--- .../modules/bms/mapper/BmsChannelMapper.java | 5 + .../bms/mapper/BmsChannelPointMapper.java | 4 +- .../bms/service/BmsChannelPointService.java | 3 +- .../bms/service/BmsChannelService.java | 3 + .../bms/service/BmsMasterUserService.java | 2 +- .../impl/BmsChannelPointServiceImpl.java | 5 + .../service/impl/BmsChannelServiceImpl.java | 7 + .../impl/HisUserSupplierServiceImpl.java | 21 +- .../qms/controller/QmsGroupController.java | 7 + .../qs/serve/modules/qms/entity/QmsGroup.java | 8 + .../modules/qms/entity/bo/QmsGroupBo.java | 9 + .../modules/qms/mapper/QmsGroupMapper.java | 4 + .../sys/controller/SysUserController.java | 6 +- .../modules/sys/service/SysUserService.java | 1 + .../sys/service/impl/SysUserServiceImpl.java | 7 + .../TbsActivityPayConditionController.java | 22 +++ .../tbs/entity/TbsActivityPayCondition.java | 8 + .../entity/bo/TbsActivityPayConditionBo.java | 25 +-- .../mapper/TbsActivityPayConditionMapper.java | 6 + .../impl/TzcPolicyApplicationServiceImpl.java | 2 +- .../service/VtbVerificationApplication.java | 18 +- .../impl/VtbVerificationServiceImpl.java | 3 +- .../wx/controller/WxFormPushController.java | 185 +++++++++++------- .../controller/WxFormPushTypeController.java | 8 + .../controller/my/WxFormPushMyController.java | 6 + .../serve/modules/wx/entity/WxFormPush.java | 23 +++ .../modules/wx/entity/WxFormPushUser.java | 3 + .../modules/wx/entity/bo/WxFormPushBo.java | 15 ++ .../wx/entity/so/WxFormPushUserSo.java | 3 + .../modules/wx/mapper/WxFormPushMapper.java | 4 + .../resources/mapper/bms/BmsChannelMapper.xml | 65 ++++++ .../mapper/bms/BmsChannelPointMapper.xml | 55 +++++- .../mapper/bms/BmsSupplierMapper.xml | 1 + .../resources/mapper/wx/WxFormPushMapper.xml | 6 + 38 files changed, 509 insertions(+), 160 deletions(-) create mode 100644 src/main/resources/mapper/bms/BmsChannelMapper.xml diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java index 3cfef981..3c8b6cf4 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java @@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.bms.entity.BmsChannelPoint; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -68,10 +69,8 @@ public class BmsChannelPointController { @GetMapping("/page4Visit") public R> getPage4Visit(BmsPointVisitSo param){ String sysUserId = AuthContextUtils.getSysUserId(); - param.setUserId(sysUserId); - param.setTenantId(AuthContextUtils.getTenant()); PageUtil.startPage(); - List list = channelPointMapper.selectUserPointList4Visit(param); + List list = channelPointMapper.selectUserPointList4Visit(param, Arrays.asList(sysUserId)); for (BmsUserPoint4VisitVo visitVo : list) { LambdaQueryWrapper visitInfoLqw = new LambdaQueryWrapper<>(); visitInfoLqw.eq(BazVisitInfo::getTargetType, BazTargetTypeConsts.POINT); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index 6d9ba60a..5de29c5c 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -272,6 +272,16 @@ public class BmsSupplierController { BmsSupplier supplier1 = new BmsSupplier(); supplier1.setId(supplier.getId()); supplier1.setOtherUserIds(otherUserIds.toArray(new String[otherUserIds.size()])); + if(otherUserIds.size()<1){ + supplier1.setOtherUserNames(""); + supplier1.setOtherUserCodes(""); + }else { + List sysUsers = sysUserService.listByIds(otherUserIds); + String names = sysUsers.stream().map(SysUser::getName).collect(Collectors.joining(",")); + String codes = sysUsers.stream().map(SysUser::getCode).collect(Collectors.joining(",")); + supplier1.setOtherUserNames(names); + supplier1.setOtherUserCodes(codes); + } bmsSupplierService.updateById(supplier1); } initSupplierOtherInfo(Arrays.asList(supplier.getId())); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java index 56d34aaa..c6230284 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java @@ -32,6 +32,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -57,20 +58,22 @@ public class BmsChannelMyController { */ @GetMapping("/page") public R> getPage(BmsChannel param){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(BmsMasterUser::getUserId, AuthContextUtils.getSysUserId()); - lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); - lqw.select(BmsMasterUser::getTargetId); - List masterUsers = bmsMasterUserService.list(lqw); - List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); - if(CollectionUtil.isEmpty(targetIds)){ - return R.byEmptyList(); - } +// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// lqw.eq(BmsMasterUser::getUserId, AuthContextUtils.getSysUserId()); +// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); +// lqw.select(BmsMasterUser::getTargetId); +// List masterUsers = bmsMasterUserService.list(lqw); +// List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); +// if(CollectionUtil.isEmpty(targetIds)){ +// return R.byEmptyList(); +// } +// PageUtil.startPage(); +// LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); +// channelWrapper.orderByDesc(BmsChannel::getCreateTime); +// channelWrapper.in(BmsChannel::getId,targetIds); +// List list = bmsChannelService.list(channelWrapper); PageUtil.startPage(); - LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); - channelWrapper.orderByDesc(BmsChannel::getCreateTime); - channelWrapper.in(BmsChannel::getId,targetIds); - List list = bmsChannelService.list(channelWrapper); + List list = bmsChannelService.selectChannelList(param, Arrays.asList(AuthContextUtils.getSysUserId())); return R.byPageHelperList(list); } @@ -87,20 +90,22 @@ public class BmsChannelMyController { if(CollectionUtil.isEmpty(userIds)){ return R.byEmptyList(); } - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(BmsMasterUser::getUserId, userIds); - lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); - lqw.select(BmsMasterUser::getTargetId); - List masterUsers = bmsMasterUserService.list(lqw); - List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); - if(CollectionUtil.isEmpty(targetIds)){ - return R.byEmptyList(); - } +// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// lqw.in(BmsMasterUser::getUserId, userIds); +// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); +// lqw.select(BmsMasterUser::getTargetId); +// List masterUsers = bmsMasterUserService.list(lqw); +// List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); +// if(CollectionUtil.isEmpty(targetIds)){ +// return R.byEmptyList(); +// } +// PageUtil.startPage(); +// LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); +// channelWrapper.orderByDesc(BmsChannel::getCreateTime); +// channelWrapper.in(BmsChannel::getId,targetIds); +// List list = bmsChannelService.list(channelWrapper); PageUtil.startPage(); - LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); - channelWrapper.orderByDesc(BmsChannel::getCreateTime); - channelWrapper.in(BmsChannel::getId,targetIds); - List list = bmsChannelService.list(channelWrapper); + List list = bmsChannelService.selectChannelList(param, userIds); return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java index d72f4db0..902021d6 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java @@ -10,19 +10,14 @@ import com.qs.serve.common.util.*; import com.qs.serve.modules.baz.common.BazTargetTypeConsts; import com.qs.serve.modules.baz.entity.BazVisitInfo; import com.qs.serve.modules.baz.service.BazVisitInfoService; -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.BmsRegionUser; +import com.qs.serve.modules.bms.common.MasterUserType; +import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.bo.BmsChannelPointBo; import com.qs.serve.modules.bms.entity.bo.BmsChannelPointMapInfoBo; import com.qs.serve.modules.bms.entity.so.BmsPointVisitSo; import com.qs.serve.modules.bms.entity.vo.BmsUserPoint4VisitVo; import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; -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.bms.service.BmsRegionUserService; +import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysPostUserService; @@ -36,6 +31,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -60,6 +56,7 @@ public class BmsChannelPointMyController { private SysUserService sysUserService; private BmsRegionUserService bmsRegionUserService; private SysPostUserService postUserService; + private BmsMasterUserService bmsMasterUserService; /** @@ -70,7 +67,7 @@ public class BmsChannelPointMyController { @GetMapping("/page") public R> getPage(BmsChannelPoint param){ PageUtil.startPage(); - param.setUserId(AuthContextUtils.getSysUserId()); + /*param.setUserId(AuthContextUtils.getSysUserId()); param.setTenantId(AuthContextUtils.getTenant()); List list = bmsChannelPointService.selectChannelPointMyList(param); for (BmsChannelPoint channelPoint : list) { @@ -86,7 +83,8 @@ public class BmsChannelPointMyController { channelPoint.setSaleRegionName(regions[regions.length-1]); } } - } + }*/ + List list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId())); return R.byPageHelperList(list); } @@ -101,19 +99,22 @@ public class BmsChannelPointMyController { public R> getPage4Under(BmsChannelPoint param){ String loginUserId = AuthContextUtils.getSysUserId(); List userIds = postUserService.listByChildIds(loginUserId); - param.setUserIdList(userIds); - LambdaQueryWrapper rulqw = new LambdaQueryWrapper<>(); - rulqw.select(BmsRegionUser::getPathIds,BmsRegionUser::getId); - rulqw.eq(BmsRegionUser::getUserId,loginUserId); - List regionUserList = bmsRegionUserService.list(rulqw); - if(CollectionUtil.isNotEmpty(regionUserList)){ - List regionPaths = regionUserList.stream().map(BmsRegionUser::getPathIds) - .filter(StringUtils::hasText).distinct().collect(Collectors.toList()); - param.setSourceIdsList(regionPaths); - } - PageUtil.startPage(); - param.setTenantId(AuthContextUtils.getTenant()); - List list = bmsChannelPointService.selectChannelPointMyUnderList(param); + //旧版本加载方式 +// param.setUserIdList(userIds); +// LambdaQueryWrapper rulqw = new LambdaQueryWrapper<>(); +// rulqw.select(BmsRegionUser::getPathIds,BmsRegionUser::getId); +// rulqw.eq(BmsRegionUser::getUserId,loginUserId); +// List regionUserList = bmsRegionUserService.list(rulqw); +// if(CollectionUtil.isNotEmpty(regionUserList)){ +// List regionPaths = regionUserList.stream().map(BmsRegionUser::getPathIds) +// .filter(StringUtils::hasText).distinct().collect(Collectors.toList()); +// param.setSourceIdsList(regionPaths); +// } +// PageUtil.startPage(); +// param.setTenantId(AuthContextUtils.getTenant()); +// List list = bmsChannelPointService.selectChannelPointMyUnderList(param); + //新版本加载方式 + List list = bmsChannelPointService.selectChannelPointMyList(param, userIds); for (BmsChannelPoint channelPoint : list) { if(StringUtils.hasText(channelPoint.getBizRegionPath())){ String[] bizRegions = channelPoint.getBizRegionPath().split("_"); diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java index f4c74f5e..33915e2c 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java @@ -2,6 +2,9 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsChannel; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 渠道 Mapper @@ -10,5 +13,7 @@ import com.qs.serve.modules.bms.entity.BmsChannel; */ public interface BmsChannelMapper extends BaseMapper { + List selectChannelList(@Param("query") BmsChannel channel, @Param("userIds") List userIds); + } 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 aa3b331e..ab572e49 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 @@ -31,13 +31,15 @@ public interface BmsChannelPointMapper extends BaseMapper { List selectChannelPointList(@Param("query") BmsChannelPoint channelPoint); + List selectPointByUserIds(@Param("query")BmsChannelPoint channelPoint, @Param("userIds")List userIds); + /** * 直属管理人 * @param param * @return */ @InterceptorIgnore(tenantLine = "1") - List selectUserPointList4Visit(@Param("query") BmsPointVisitSo param); + List selectUserPointList4Visit(@Param("query") BmsPointVisitSo param,@Param("userIds")List userIds); /** * 直属管理人 diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java index d2bd79d8..763a41d1 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java @@ -19,8 +19,9 @@ public interface BmsChannelPointService extends IService { List selectChannelPointList(BmsChannelPoint channelPoint); - List selectChannelPointMyList(BmsChannelPoint channelPoint); + List selectChannelPointMyList(BmsChannelPoint channelPoint,List userIds); + List selectChannelPointMyList(BmsChannelPoint channelPoint); List selectChannelPointMyUnderList(BmsChannelPoint channelPoint); List listByBizRegionId(String id); diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java index 44dcbd37..80c2d11f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.bms.entity.BmsChannel; +import java.util.List; /** * 渠道 服务接口 @@ -10,5 +11,7 @@ import com.qs.serve.modules.bms.entity.BmsChannel; */ public interface BmsChannelService extends IService { + List selectChannelList(BmsChannel channel,List userIds); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java index f639416c..e3d08c77 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java @@ -3,7 +3,7 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.bms.entity.BmsMasterUser; import com.qs.serve.modules.bms.entity.BmsRegionUser; - +import java.util.List; /** * 负责人 服务接口 * @author YenHex 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 94dbffca..f0fe14ee 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 @@ -112,6 +112,11 @@ public class BmsChannelPointServiceImpl extends ServiceImpl selectChannelPointMyList(BmsChannelPoint channelPoint, List userIds) { + return baseMapper.selectPointByUserIds(channelPoint, userIds); + } + @Override public List selectChannelPointMyList(BmsChannelPoint channelPoint) { return baseMapper.selectUserPointList4My(channelPoint); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java index fbd27c60..ebc3915e 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java @@ -8,6 +8,8 @@ import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.service.BmsChannelService; import com.qs.serve.modules.bms.mapper.BmsChannelMapper; +import java.util.List; + /** * 渠道 服务实现类 * @author YenHex @@ -18,5 +20,10 @@ import com.qs.serve.modules.bms.mapper.BmsChannelMapper; @AllArgsConstructor public class BmsChannelServiceImpl extends ServiceImpl implements BmsChannelService { + @Override + public List selectChannelList(BmsChannel channel, List userIds) { + return baseMapper.selectChannelList(channel, userIds); + } + } diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java index 3dc16107..3a8adf3c 100644 --- a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java @@ -15,6 +15,7 @@ import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.bms.service.BmsRegionUserService; import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.sys.service.SysPostUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ public class HisUserSupplierServiceImpl extends ServiceImpl selectSupplier(BmsSupplier param, boolean usePage) { @@ -83,6 +85,10 @@ public class HisUserSupplierServiceImpl extends ServiceImpl childUserList = sysPostUserService.listByChildIds(userId); + for (String childUserId : childUserList) { + this.initByUserId(childUserId,false); + } if(checkInit){ return true; } @@ -141,11 +147,20 @@ public class HisUserSupplierServiceImpl extends ServiceImpl0){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); if(level.equals(1)){ - lqw.in(BmsSupplier::getRegionFirst,regionIds); + lqw.and( + aa->aa.in(BmsSupplier::getRegionFirst,regionIds) + .or().in(BmsSupplier::getRegion2First,regionIds) + ); }else if(level.equals(2)){ - lqw.in(BmsSupplier::getRegionSecond,regionIds); + lqw.and( + aa->aa.in(BmsSupplier::getRegionSecond,regionIds) + .or().in(BmsSupplier::getRegion2Second,regionIds) + ); }else if(level.equals(3)){ - lqw.in(BmsSupplier::getRegionThird,regionIds); + lqw.and( + aa->aa.in(BmsSupplier::getRegionThird,regionIds) + .or().in(BmsSupplier::getRegion2Third,regionIds) + ); } List supplierList = bmsSupplierService.list(lqw); for (BmsSupplier supplier : supplierList) { 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 f3cc3d80..a97b5007 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 @@ -13,6 +13,7 @@ import com.qs.serve.modules.qms.entity.QmsForm; import com.qs.serve.modules.qms.entity.QmsGroupScope; import com.qs.serve.modules.qms.entity.bo.QmsGroupBo; import com.qs.serve.modules.qms.entity.bo.QmsHastenBo; +import com.qs.serve.modules.qms.mapper.QmsGroupMapper; import com.qs.serve.modules.qms.service.QmsFormService; import com.qs.serve.modules.qms.service.QmsGroupScopeService; import com.qs.serve.modules.sys.entity.SysDept; @@ -48,6 +49,7 @@ import java.util.stream.Collectors; @RequestMapping("qms/group") public class QmsGroupController { + private QmsGroupMapper qmsGroupMapper; private QmsGroupService qmsGroupService; private QmsFormService qmsFormService; private QmsGroupScopeService qmsGroupScopeService; @@ -123,7 +125,11 @@ public class QmsGroupController { QmsForm qmsForm = qmsFormService.getById(qmsGroup.getFormId()); qmsGroup.setFormContext(qmsForm.getFormContext()); qmsGroup.setVersion(qmsForm.getVersion()); + qmsGroup.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); qmsGroupService.updateById(qmsGroup); + if(param.getPreNotifyTime()==null){ + qmsGroupMapper.updateSetNotifyTimeNull(param.getId()+""); + } qmsGroupScopeService.removeByGroupId(qmsGroup.getId()); qmsGroupScopeService.saveByBo(qmsGroup.getId(),param); return R.ok(); @@ -245,6 +251,7 @@ public class QmsGroupController { qmsGroup.setFormContext(qmsForm.getFormContext()); qmsGroup.setVersion(qmsForm.getVersion()); qmsGroup.setPublishState(0); + qmsGroup.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); qmsGroupService.save(qmsGroup); qmsGroupScopeService.saveByBo(qmsGroup.getId(),param); return R.ok(); diff --git a/src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java b/src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java index 35b138d7..fb8a5c08 100644 --- a/src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java +++ b/src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java @@ -77,6 +77,14 @@ public class QmsGroup implements Serializable { private Integer version; + /** 预通知标识:0->无通知;1->未通知;2->已通知 */ + private Integer preNotifyStatus; + + /** 预通知时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; + /** 使用范围值 */ //@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) //private String[] scopeValue; diff --git a/src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java b/src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java index 7747ec91..3e59452a 100644 --- a/src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java +++ b/src/main/java/com/qs/serve/modules/qms/entity/bo/QmsGroupBo.java @@ -1,9 +1,12 @@ package com.qs.serve.modules.qms.entity.bo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; /** * @author YenHex @@ -39,4 +42,10 @@ public class QmsGroupBo { * 最少提交人数,0表示不限制 */ private Integer limitSubmit; + + /** 预通知时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; + } diff --git a/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupMapper.java b/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupMapper.java index 0982a26b..29b852d0 100644 --- a/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupMapper.java +++ b/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.qms.entity.QmsGroup; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -22,5 +23,8 @@ public interface QmsGroupMapper extends BaseMapper { */ List listByUserIdOrDeptId(@Param("userId")String userId,@Param("deptId")String deptId); + @Update("update `qms_group` set pre_notify_time = null where id = #{id}") + void updateSetNotifyTimeNull(@Param("id")String id); + } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index 21906de2..b8b8507f 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -465,9 +465,9 @@ public class SysUserController { @PreAuthorize("hasRole('sys:user:reset')") public R resetPwd(@PathVariable("uid") String uid){ SysUser sysUser = sysUserService.getById(uid); - if(sysUser.getSuperFlag().equals(1)){ - Assert.throwEx("最高级管理员不可重置密码"); - } +// if(sysUser.getSuperFlag().equals(1)){ +// Assert.throwEx("最高级管理员不可重置密码"); +// } SysUser sysUser1 = new SysUser(); sysUser1.setId(uid); sysUser1.setPassword(SecureUtil.md5(GySysConst.DEFAULT_PASSWORD)); diff --git a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java index b6abbe83..7e229070 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java +++ b/src/main/java/com/qs/serve/modules/sys/service/SysUserService.java @@ -42,6 +42,7 @@ public interface SysUserService extends IService { LoginUser buildLoginUser(SysUser sysUser); List listByOaMemberIds(List memberIds); + List listByCodes(List codes); SysUser listByOaMemberId(String memberId); diff --git a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java index f485ea72..a5dbc6a4 100644 --- a/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/sys/service/impl/SysUserServiceImpl.java @@ -180,6 +180,13 @@ public class SysUserServiceImpl extends ServiceImpl impl return this.list(lqw); } + @Override + public List listByCodes(List codes) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(SysUser::getCode,codes); + return this.list(lqw); + } + @Override public SysUser listByOaMemberId(String memberId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java index 471360fc..be5f73ae 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityPayConditionController.java @@ -6,11 +6,16 @@ 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.Assert; 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.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsCostApply; +import com.qs.serve.modules.tbs.mapper.TbsActivityPayConditionMapper; import com.qs.serve.modules.tbs.service.TbsActivityService; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -35,8 +40,10 @@ import java.util.List; @RequestMapping("tbs/activityPayCondition") public class TbsActivityPayConditionController { + private TbsActivityPayConditionMapper tbsActivityPayConditionMapper; private TbsActivityPayConditionService tbsActivityPayConditionService; private TbsActivityService tbsActivityService; + private final TbsCostApplyService costApplyService; /** * 列表 @@ -87,7 +94,16 @@ public class TbsActivityPayConditionController { @PostMapping("/updateById") @SysLog(module = SystemModule.Budget, title = "活动支付条件", biz = BizType.UPDATE) public R updateById(@RequestBody @Valid TbsActivityPayConditionBo param){ + TbsCostApply costApply = costApplyService.getById(param.getCostApplyId()); + if(!costApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode()) + &&!costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){ + Assert.throwEx("因费用状态不支持编辑!!"); + } TbsActivityPayCondition entity = CopierUtil.copy(param,new TbsActivityPayCondition()); + entity.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); + if(param.getPreNotifyTime()==null){ + tbsActivityPayConditionMapper.updateSetNotifyTimeNull(entity.getId()+""); + } entity.setCostApplyId(null); boolean result = tbsActivityPayConditionService.updateById(entity); return R.isTrue(result); @@ -101,10 +117,16 @@ public class TbsActivityPayConditionController { @PostMapping("/save") @SysLog(module = SystemModule.Budget, title = "活动支付条件", biz = BizType.INSERT) public R save(@RequestBody @Valid TbsActivityPayConditionBo param){ + TbsCostApply costApply = costApplyService.getById(param.getCostApplyId()); + if(!costApply.getChargeState().equals(TbsCostApplyState.State_0_unPublish.getCode()) + &&!costApply.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){ + Assert.throwEx("因费用状态不支持编辑!!"); + } TbsActivityPayCondition entity = CopierUtil.copy(param,new TbsActivityPayCondition()); List activityList = tbsActivityService.listByCostApplyId(param.getCostApplyId()); Long actId = activityList.get(0).getId(); entity.setActivityId(actId); + entity.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); boolean result = tbsActivityPayConditionService.save(entity); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java index d4706540..7068ca21 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityPayCondition.java @@ -52,6 +52,14 @@ public class TbsActivityPayCondition implements Serializable { @NotNull(message = "付款金额不能为空") private BigDecimal paymentPrice; + /** 预通知标识:0->无通知;1->未通知;2->已通知 */ + private Integer preNotifyStatus; + + /** 预通知时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; + /** 付款时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityPayConditionBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityPayConditionBo.java index 76109675..42b311a2 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityPayConditionBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityPayConditionBo.java @@ -55,29 +55,10 @@ public class TbsActivityPayConditionBo implements Serializable { @Length(max = 255,message = "备注长度不能超过255字") private String remark; - /** 创建时间 */ + /** 预支付通知时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - /** 更新时间 */ - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime updateTime; - - /** 创建人 */ - private String createBy; - - /** 更新人 */ - private String updateBy; - - /** 租户id */ - @JsonIgnore - @JsonProperty - private String tenantId; - - /** 删除标识 */ - @JsonIgnore - @JsonProperty - private Boolean delFlag; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; } diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java index 34e48345..1fdb9333 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsActivityPayConditionMapper.java @@ -2,6 +2,8 @@ package com.qs.serve.modules.tbs.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; /** * 活动支付条件 Mapper @@ -10,5 +12,9 @@ import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition; */ public interface TbsActivityPayConditionMapper extends BaseMapper { + + @Update("update `tbs_activity_pay_condition` set pre_notify_time = null where id = #{id}") + void updateSetNotifyTimeNull(@Param("id")String id); + } diff --git a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java index 98902fec..80bd458b 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java @@ -230,7 +230,7 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ budgetLogService.saveBatch(budgetLogList); } //创建流程后回调 - BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.PolicyConf.Code(),formId); + BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.PolicyConf.Code(),tzcPolicy.getId()+""); seeYonService.createCallbackStatus(callbackBo); } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index efe362be..03e37d1b 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -216,10 +216,12 @@ public class VtbVerificationApplication { vtbVerificationSubjectService.updateBatchById(verSubject4Update); //重新计算合计 if(isFinish){ - //支付条件完成 - TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId()); - payCondition.setFinishedFlag(1); - activityPayConditionService.updateById(payCondition); + if(verification.getPayConditionId()!=null){ + //支付条件完成 + TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId()); + payCondition.setFinishedFlag(1); + activityPayConditionService.updateById(payCondition); + } //更新金额,已完成 VtbVerification vtbVer = new VtbVerification(); vtbVer.setId(verification.getId()); @@ -259,9 +261,11 @@ public class VtbVerificationApplication { vtbVerificationService.updateById(vtbVer); } //还原支付条件 - TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId()); - payCondition.setFinishedFlag(0); - activityPayConditionService.updateById(payCondition); + if(verification.getPayConditionId()!=null){ + TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId()); + payCondition.setFinishedFlag(0); + activityPayConditionService.updateById(payCondition); + } //还原活动为待核销状态 TbsActivity activity = new TbsActivity(); activity.setId(verification.getActivityId()); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 1eb7b510..1e70fddd 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -335,6 +335,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl> getList(WxFormPush param){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); - PageUtil.startPage(); - List list = wxFormPushService.list(lqw); - return R.ok(list); - } - /** * 翻页 * @param param @@ -89,6 +80,13 @@ public class WxFormPushController { LambdaQueryWrapper userlqw = new LambdaQueryWrapper<>(); userlqw.eq(WxFormPushUser::getFormPushId,wxFormPush.getId()); List list = wxFormPushUserService.list(userlqw); + wxFormPush.setShowCompensateButton(0); + for (WxFormPushUser pushUser : list) { + if(pushUser.getPushStatus().equals(0)){ + wxFormPush.setShowCompensateButton(1); + break; + } + } wxFormPush.setWxFormPushUserList(list); if(CollectionUtil.isNotEmpty(wxFormPush.getAttachIds())){ List attachIds = Arrays.asList(wxFormPush.getAttachIds()); @@ -100,20 +98,6 @@ public class WxFormPushController { - /** - * 更新 - * @param param - * @return - */ -// @PostMapping("/updateById") - @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.UPDATE) -// @PreAuthorize("hasRole('wx:formPush:update')") - public R updateById(@RequestBody @Valid WxFormPushBo param){ - WxFormPush entity = CopierUtil.copy(param,new WxFormPush()); - boolean result = wxFormPushService.updateById(entity); - return R.isTrue(result); - } - /** * 发布 * @param param @@ -121,7 +105,6 @@ public class WxFormPushController { */ @PostMapping("/publishById") @SysLog(module = SystemModule.Verification, title = "表单推送发布", biz = BizType.UPDATE) -// @PreAuthorize("hasRole('wx:formPush:update')") public R publishById(@RequestBody WxFormPushBo param){ String id = param.getId(); WxFormPush entity = wxFormPushService.getById(id); @@ -130,11 +113,10 @@ public class WxFormPushController { } entity.setStatus("1"); boolean result = wxFormPushService.updateById(entity); - LambdaQueryWrapper userlqw = new LambdaQueryWrapper<>(); userlqw.eq(WxFormPushUser::getFormPushId,entity.getId()); + userlqw.eq(WxFormPushUser::getPushStatus,0); List list = wxFormPushUserService.list(userlqw); - List userCodes = list.stream().map(WxFormPushUser::getUserCode).collect(Collectors.toList()); if(userCodes.size()<1){ return R.ok(); @@ -162,11 +144,75 @@ public class WxFormPushController { wxSmsNewForm.setBitTime(LocalDateTime.now().toString().replace("T", " ")); wxSmsNewForm.setRemark(entity.getRemark()); wxPushService.sendWxMsg(wxUser, "表单通知", wxSmsNewForm, true, entity.getId()); - } return R.isTrue(result); } + /** + * 补偿通知 + * @param param + * @return + */ + @PostMapping("/compensate") + @SysLog(module = SystemModule.Verification, title = "表单推送发布", biz = BizType.UPDATE) + public R compensate(@RequestBody WxFormPushBo param){ + String id = param.getId(); + List userIds = param.getUserIds(); + WxFormPush entity = wxFormPushService.getById(id); + if(entity.getId().equals("0")){ + return R.error("未发布"); + } + LambdaQueryWrapper userlqw = new LambdaQueryWrapper<>(); + if(StringUtils.hasText(id)){ + userlqw.eq(WxFormPushUser::getFormPushId,entity.getId()); + }else { + userlqw.in(WxFormPushUser::getUserId,userIds); + } + userlqw.eq(WxFormPushUser::getPushStatus,0); + List list = wxFormPushUserService.list(userlqw); + userIds = list.stream().map(WxFormPushUser::getUserId).collect(Collectors.toList()); + if(userIds.size()<1){ + return R.ok(); + } + WxApp app = wxAppService.getOne(new LambdaQueryWrapper<>(),false); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(WxUser::getAppId,app.getId()); + lqw.in(WxUser::getSysUserId,userIds); + List wxUserList = wxUserService.list(lqw); + Set wxUserIdSet = new HashSet<>(); + int successCount = 0; + for (WxFormPushUser pushUser : list) { + boolean pushOk = false; + for (WxUser wxUser : wxUserList) { + if (wxUser.getOpenId().equals("0")) { + continue; + } + boolean exist = wxUserIdSet.stream().anyMatch(a->a.equals(wxUser.getOpenId())); + if(exist){ + continue; + }else { + wxUserIdSet.add(wxUser.getOpenId()); + } + pushOk = true; + WxSmsNewForm wxSmsNewForm = new WxSmsNewForm(); + wxSmsNewForm.setTitle(entity.getTitle()); + wxSmsNewForm.setUserName(wxUser.getEmpName()); + wxSmsNewForm.setBizType(entity.getBusinessType() == null ? "通知" : entity.getBusinessType()); + wxSmsNewForm.setBitTime(LocalDateTime.now().toString().replace("T", " ")); + wxSmsNewForm.setRemark(entity.getRemark()); + wxPushService.sendWxMsg(wxUser, "表单通知", wxSmsNewForm, true, entity.getId()); + } + if(pushOk){ + successCount++; + WxFormPushUser upd_param = new WxFormPushUser(); + upd_param.setId(pushUser.getId()); + upd_param.setPushStatus(1); + wxFormPushUserService.updateById(upd_param); + } + } + return R.ok("成功通知数:"+successCount); + } + /** * 撤消 * @param param @@ -174,46 +220,46 @@ public class WxFormPushController { */ @PostMapping("/unPublishById") @SysLog(module = SystemModule.Verification, title = "撤消表单推送", biz = BizType.UPDATE) -// @PreAuthorize("hasRole('wx:formPush:update')") public R unPublishById(@RequestBody WxFormPushBo param){ String id = param.getId(); WxFormPush entity = wxFormPushService.getById(id); entity.setStatus("0"); boolean result = wxFormPushService.updateById(entity); - LambdaQueryWrapper dellqw = new LambdaQueryWrapper<>(); - dellqw.eq(WxFormPushUser::getFormPushId,entity.getId()); - wxFormPushUserService.remove(dellqw); return R.isTrue(result); } /** - * 新增 + * 新增或保存 * @param param * @return */ @PostMapping("/save") @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.INSERT) -// @PreAuthorize("hasRole('wx:formPush:insert')") - public R save(@RequestBody @Valid WxFormPushBo param){ + public R saveOrUpdate(@RequestBody @Valid WxFormPushBo param){ WxFormPush entity = CopierUtil.copy(param,new WxFormPush()); + entity.setPreNotifyStatus(param.getPreNotifyTime()==null?0:1); WxFormPushType pushType = null; if(param.getTypeId()!=null){ pushType = wxFormPushTypeService.getById(param.getTypeId()); entity.setTypeCode(pushType.getCode()); entity.setTypeName(pushType.getTitle()); }else{ - return R.error("分类不存在"); + entity.setTypeId("0"); + entity.setTypeCode("默认"); + entity.setTypeName("默认分类"); } - - boolean result; + entity.setPreNotifyStatus(entity.getPreNotifyTime()==null?0:1); if(null==entity.getId()) { - result = wxFormPushService.save(entity); + wxFormPushService.save(entity); }else{ WxFormPush ori_entity = wxFormPushService.getById(entity.getId()); if(ori_entity.getStatus().equals("1")){ return R.error("已发布的消息不能更新"); } - result = wxFormPushService.updateById(entity); + if(entity.getPreNotifyTime()==null){ + wxFormPushMapper.updateSetNotifyTimeNull(entity.getId()); + } + wxFormPushService.updateById(entity); } //保存推送人员 @@ -225,37 +271,44 @@ public class WxFormPushController { List wxUserList = wxUserService.list(lqw); List pushUserList = new ArrayList<>(); Set wxUserIdSet = new HashSet<>(); - for (WxUser wxUser : wxUserList) { - if (wxUser.getOpenId().equals("0")) { - continue; - } - boolean exist = wxUserIdSet.stream().anyMatch(a->a.equals(wxUser.getOpenId())); - if(exist){ - continue; - }else { - wxUserIdSet.add(wxUser.getOpenId()); - } - WxSmsNewForm wxSmsNewForm = new WxSmsNewForm(); - wxSmsNewForm.setTitle(param.getTitle()); - wxSmsNewForm.setUserName(wxUser.getEmpName()); - wxSmsNewForm.setBizType(param.getBusinessType()==null?"通知":param.getBusinessType()); - wxSmsNewForm.setBitTime(LocalDateTime.now().toString().replace("T"," ")); - wxSmsNewForm.setRemark(param.getRemark()); - if(param.getStatus().equals("1")) { - wxPushService.sendWxMsg(wxUser, "表单通知", wxSmsNewForm, true, entity.getId()); + List sysUserList = sysUserService.listByIds(userIds); + for (SysUser sysUser : sysUserList) { + int pushOk = 0; + for (WxUser wxUser : wxUserList) { + if(wxUser.getSysUserId().equals(sysUser.getId())){ + if (wxUser.getOpenId().equals("0")) { + continue; + } + boolean exist = wxUserIdSet.stream().anyMatch(a->a.equals(wxUser.getOpenId())); + if(exist){ + continue; + }else { + wxUserIdSet.add(wxUser.getOpenId()); + } + pushOk = 1; + WxSmsNewForm wxSmsNewForm = new WxSmsNewForm(); + wxSmsNewForm.setTitle(param.getTitle()); + wxSmsNewForm.setUserName(wxUser.getEmpName()); + wxSmsNewForm.setBizType(param.getBusinessType()==null?"通知":param.getBusinessType()); + wxSmsNewForm.setBitTime(LocalDateTime.now().toString().replace("T"," ")); + wxSmsNewForm.setRemark(param.getRemark()); + if(param.getStatus().equals("1")) { + wxPushService.sendWxMsg(wxUser, "表单通知", wxSmsNewForm, true, entity.getId()); + } + } } WxFormPushUser pushUser = new WxFormPushUser(); pushUser.setFormPushId(entity.getId()); pushUser.setFormTitle(entity.getTitle()); - pushUser.setUserId(wxUser.getSysUserId()); - pushUser.setUserCode(wxUser.getSysUserCode()); - pushUser.setUserName(wxUser.getEmpName()); + pushUser.setPushStatus(pushOk); + pushUser.setUserId(sysUser.getId()); + pushUser.setUserCode(sysUser.getCode()); + pushUser.setUserName(sysUser.getName()); pushUser.setTypeId(pushType.getId()); pushUser.setTypeCode(pushType.getCode()); pushUser.setTypeName(pushType.getTitle()); pushUserList.add(pushUser); } - pushUserList = pushUserList.stream().distinct().collect(Collectors.toList()); if(null==entity.getId()) { wxFormPushUserService.saveBatch(pushUserList); }else{ diff --git a/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushTypeController.java b/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushTypeController.java index 76141f72..46aacb6c 100644 --- a/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushTypeController.java +++ b/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushTypeController.java @@ -88,6 +88,9 @@ public class WxFormPushTypeController { @PostMapping("/updateById") @SysLog(module = SystemModule.Verification, title = "表单类型", biz = BizType.UPDATE) public R updateById(@RequestBody @Valid WxFormPushTypeBo param){ + if(param.getId().equals("0")){ + return R.error("默认分类无法删除"); + } WxFormPushType entity = CopierUtil.copy(param,new WxFormPushType()); boolean result = wxFormPushTypeService.updateById(entity); return R.isTrue(result); @@ -115,6 +118,11 @@ public class WxFormPushTypeController { @SysLog(module = SystemModule.Verification, title = "表单类型", biz = BizType.DELETE) public R deleteById(@PathVariable("ids") String ids){ List idsString = StringUtils.splitIdString(ids); + for (String id : idsString) { + if(id.equals("0")){ + return R.error("默认分类无法删除"); + } + } boolean result = wxFormPushTypeService.removeByIds(idsString); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/wx/controller/my/WxFormPushMyController.java b/src/main/java/com/qs/serve/modules/wx/controller/my/WxFormPushMyController.java index b4783ac2..0da43db2 100644 --- a/src/main/java/com/qs/serve/modules/wx/controller/my/WxFormPushMyController.java +++ b/src/main/java/com/qs/serve/modules/wx/controller/my/WxFormPushMyController.java @@ -85,6 +85,12 @@ public class WxFormPushMyController { @GetMapping("/getById/{id}") @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.QUERY) public R getById(@PathVariable("id") String id){ + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(WxFormPushUser::getFormPushId,id); + lqw2.eq(WxFormPushUser::getUserId, AuthContextUtils.getSysUserId()); + if(wxFormPushUserService.count(lqw2)<1){ + return R.error("表单已撤销"); + } WxFormPush wxFormPush = wxFormPushService.getById(id); if(wxFormPush.getStatus().equals("0")){ //未发布不能查询 diff --git a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java index 4326cb42..e0f58cb0 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java @@ -49,6 +49,7 @@ public class WxFormPush implements Serializable { private String typeName; /** 业务类型,默认:通知 */ + @TableField(condition = SqlCondition.LIKE) private String businessType; /** 标题 */ @Length(max = 255,message = "标题长度不能超过255字") @@ -68,6 +69,24 @@ public class WxFormPush implements Serializable { @Length(max = 600,message = "备注长度不能超过600字") private String remark; + /** 预通知标识:0->无通知;1->未通知;2->已通知 */ + private Integer preNotifyStatus; + + /** 生效开始时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime effectiveStartTime; + + /** 生效结束时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime effectiveEndTime; + + /** 预通知时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; + /** 附件ids */ @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) private String[] attachIds; @@ -130,6 +149,10 @@ public class WxFormPush implements Serializable { @TableField(exist = false) private List attachList; + /** 显示补偿按钮 */ + @TableField(exist = false) + private Integer showCompensateButton; + public static WxFormPush toNewObject(WxFormPush source){ WxFormPush formPush = new WxFormPush(); formPush.setId(source.getId()); diff --git a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java index 344e66a5..bb022cb6 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java @@ -38,6 +38,9 @@ public class WxFormPushUser implements Serializable { @TableField(condition = SqlCondition.LIKE) private String formTitle; + /** 推送状态 0-N,1-Y */ + private Integer pushStatus; + /** 用户id */ @Length(max = 64,message = "用户id长度不能超过64字") private String userId; diff --git a/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java b/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java index 2a18e0d0..66e53a04 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java @@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.List; /** * 表单推送 实体类 @@ -53,5 +54,19 @@ public class WxFormPushBo implements Serializable { /** 附件ids */ private String[] attachIds; + /** 预通知时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime preNotifyTime; + + /** 生效开始时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime effectiveStartTime; + + /** 生效结束时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime effectiveEndTime; } diff --git a/src/main/java/com/qs/serve/modules/wx/entity/so/WxFormPushUserSo.java b/src/main/java/com/qs/serve/modules/wx/entity/so/WxFormPushUserSo.java index 1268e54e..7e232cc8 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/so/WxFormPushUserSo.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/so/WxFormPushUserSo.java @@ -34,6 +34,9 @@ public class WxFormPushUserSo implements Serializable { /** 用户id */ private String userId; + /** 推送状态 0-N,1-Y */ + private Integer pushStatus; + /** 用户编码 */ private String userCode; diff --git a/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java index ade5b116..a03f17cc 100644 --- a/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java +++ b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java @@ -3,6 +3,8 @@ package com.qs.serve.modules.wx.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.wx.entity.WxFormPush; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + import java.util.List; /** * 表单推送 Mapper @@ -13,5 +15,7 @@ public interface WxFormPushMapper extends BaseMapper { List selectUserFormPushList(@Param("query") WxFormPush param); + @Update("update `wx_form_push` set pre_notify_time = null where id = #{id}") + void updateSetNotifyTimeNull(@Param("id")String id); } diff --git a/src/main/resources/mapper/bms/BmsChannelMapper.xml b/src/main/resources/mapper/bms/BmsChannelMapper.xml new file mode 100644 index 00000000..e5ba83b8 --- /dev/null +++ b/src/main/resources/mapper/bms/BmsChannelMapper.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + bms_channel.`id`, + bms_channel.`channel_code`, + bms_channel.`channel_name`, + bms_channel.`channel_type`, + bms_channel.`remark`, + bms_channel.`create_time`, + bms_channel.`update_time`, + bms_channel.`tenant_id`, + bms_channel.`del_flag`, + bms_channel.`create_by`, + bms_channel.`update_by`, + bms_channel.`cost_flag` + + + + diff --git a/src/main/resources/mapper/bms/BmsChannelPointMapper.xml b/src/main/resources/mapper/bms/BmsChannelPointMapper.xml index ccc9dc9e..3d9f5320 100644 --- a/src/main/resources/mapper/bms/BmsChannelPointMapper.xml +++ b/src/main/resources/mapper/bms/BmsChannelPointMapper.xml @@ -129,12 +129,28 @@ POINT ( bms_channel_point.local_y, bms_channel_point.local_x ), POINT ( #{query.localY}, #{query.localX} )) AS distance - FROM ( SELECT DISTINCT mu.point_id target_id FROM `his_user_channel_point` mu WHERE del_flag = 0 AND user_id = #{query.userId} AND tenant_id = #{query.tenantId} ) pmu - LEFT JOIN `bms_channel_point` `bms_channel_point` ON `bms_channel_point`.id = pmu.target_id + FROM + ( SELECT channel_id FROM `bms_supplier_channel` + LEFT JOIN `his_user_supplier` ON `his_user_supplier`.supplier_id = bms_supplier_channel.supplier_id + where his_user_supplier.user_id in + + #{selectId} + + and `bms_supplier_channel`.`del_flag` = 0 + GROUP BY channel_id + ) tmp + left join bms_channel_point ON `tmp`.channel_id = bms_channel_point.`channel_id` and `bms_channel_point`.`del_flag` = 0 + and `bms_supplier_channel`.`del_flag` = 0 and `bms_channel_point`.`point_code` like concat('%',#{query.pointCode},'%') and `bms_channel_point`.`point_name` like concat('%',#{query.pointName},'%') + + and his_user_supplier.user_id in + + #{selectId} + + ORDER BY @@ -239,4 +255,39 @@ + + + diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index ef8f7d85..3758f784 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -82,6 +82,7 @@ and `bms_supplier`.`region_first` = #{query.regionFirst} and `bms_supplier`.`region_second` = #{query.regionSecond} and `bms_supplier`.`region_third` = #{query.regionThird} + and `bms_supplier`.`supplier_flag` = #{query.supplierFlag} and `bms_supplier`.`address` = #{query.address} and `bms_supplier`.`name` like concat('%',#{query.name},'%') and `bms_supplier`.`code` like concat('%',#{query.code},'%') diff --git a/src/main/resources/mapper/wx/WxFormPushMapper.xml b/src/main/resources/mapper/wx/WxFormPushMapper.xml index ea502d3a..dace15ab 100644 --- a/src/main/resources/mapper/wx/WxFormPushMapper.xml +++ b/src/main/resources/mapper/wx/WxFormPushMapper.xml @@ -22,6 +22,9 @@ + + + @@ -40,6 +43,9 @@ wx_form_push.`update_by`, wx_form_push.`del_flag`, wx_form_push.`status`, + wx_form_push.`pre_notify_status`, + wx_form_push.`effective_start_time`, + wx_form_push.`effective_end_time`, wx_form_push.`business_type`