From 8c21f863f6e8e68f572a710d5440d1d789c1eb8c Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 11 Nov 2022 11:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=9F=E8=B4=A3=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/bms/common/MasterUserType.java | 13 ++ .../controller/BmsMasterUserController.java | 200 ++++++++++++++++++ .../BmsSupplierChannelController.java | 40 +++- .../modules/bms/entity/BmsMasterUser.java | 106 ++++++++++ .../bms/entity/bo/BmsMasterUserBo.java | 39 ++++ .../bms/entity/bo/BmsSupplierChannelBo.java | 23 ++ .../bms/entity/vo/BmsMasterUserChannelVo.java | 25 +++ .../bms/entity/vo/BmsMasterUserPointVo.java | 21 ++ .../bms/entity/vo/BmsMasterUserVo.java | 80 +++++++ .../bms/mapper/BmsMasterUserMapper.java | 33 +++ .../bms/service/BmsMasterUserService.java | 25 +++ .../impl/BmsMasterUserServiceImpl.java | 46 ++++ .../serve/modules/goods/entity/GoodsSku.java | 2 +- .../modules/goods/entity/bo/GoodsSkuBo.java | 2 +- .../goods/entity/dto/TbsCenterDto.java | 18 ++ .../service/impl/GoodsSkuServiceImpl.java | 4 +- .../sys/controller/SysDictDataController.java | 21 ++ .../modules/tbs/entity/TbsActivityCenter.java | 10 +- .../tbs/entity/bo/TbsActivitySubjectBo.java | 2 +- .../service/impl/TbsActivityServiceImpl.java | 159 +++++++++----- .../mapper/bms/BmsMasterUserMapper.xml | 115 ++++++++++ 21 files changed, 920 insertions(+), 64 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java create mode 100644 src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/bo/BmsMasterUserBo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierChannelBo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserChannelVo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserPointVo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserVo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsMasterUserServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java create mode 100644 src/main/resources/mapper/bms/BmsMasterUserMapper.xml diff --git a/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java b/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java new file mode 100644 index 00000000..7630550d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java @@ -0,0 +1,13 @@ +package com.qs.serve.modules.bms.common; + +/** + * @author YenHex + * @since 2022/11/11 + */ +public interface MasterUserType { + + String Channel = "channel"; + + String Point = "point"; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java new file mode 100644 index 00000000..ac48066b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java @@ -0,0 +1,200 @@ +package com.qs.serve.modules.bms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +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.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.common.MasterUserType; +import com.qs.serve.modules.bms.entity.BmsChannel; +import com.qs.serve.modules.bms.entity.BmsChannelPoint; +import com.qs.serve.modules.bms.entity.BmsRegionUser; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserChannelVo; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserPointVo; +import com.qs.serve.modules.bms.mapper.BmsMasterUserMapper; +import com.qs.serve.modules.bms.service.BmsChannelPointService; +import com.qs.serve.modules.bms.service.BmsChannelService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserVo; +import com.qs.serve.modules.bms.entity.bo.BmsMasterUserBo; +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import com.qs.serve.modules.bms.service.BmsMasterUserService; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; + +/** + * 基础档案 负责人 + * @author YenHex + * @since 2022-11-10 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bms/masterUser") +public class BmsMasterUserController { + + private BmsChannelService bmsChannelService; + private BmsChannelPointService bmsChannelPointService; + private BmsMasterUserService bmsMasterUserService; + private BmsMasterUserMapper bmsMasterUserMapper; + private SysUserService sysUserService; + + /** + * 负责人列表(渠道) + * @param userChannel + * @return + */ + @GetMapping("/list4Channel") + @PreAuthorize("hasRole('bms:masterUser:query')") + public R> getList(BmsMasterUserChannelVo userChannel){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel); + return R.ok(list); + } + + /** + * 负责人翻页(渠道) + * @param userChannel + * @return + */ + @GetMapping("/page4Channel") + @PreAuthorize("hasRole('bms:masterUser:query')") + public R> getPage(BmsMasterUserChannelVo userChannel){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel); + return R.byPageHelperList(list); + } + + /** + * 负责人列表(网点) + * @param param + * @return + */ + @GetMapping("/list4Point") + @PreAuthorize("hasRole('bms:masterUser:query')") + public R> list4Point(BmsMasterUserPointVo param){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectPointMasterUserList(param); + return R.ok(list); + } + + /** + * 负责人翻页(网点) + * @param param + * @return + */ + @GetMapping("/page4Point") + @PreAuthorize("hasRole('bms:masterUser:query')") + public R> page4Point(BmsMasterUserPointVo param){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectPointMasterUserList(param); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.BASE, title = "负责人", biz = BizType.QUERY) + @PreAuthorize("hasRole('bms:masterUser:query')") + public R getById(@PathVariable("id") String id){ + BmsMasterUser bmsMasterUser = bmsMasterUserService.getById(id); + SysUser sysUser = sysUserService.getById(bmsMasterUser.getUserId()); + bmsMasterUser.setUserInfo(sysUser.toSysUserVo()); + if(bmsMasterUser.getType().equals(MasterUserType.Channel)){ + BmsChannel channel = bmsChannelService.getById(bmsMasterUser.getTargetId()); + bmsMasterUser.setObjectInfo(channel); + }else if(bmsMasterUser.getType().equals(MasterUserType.Point)){ + BmsChannelPoint point = bmsChannelPointService.getById(bmsMasterUser.getTargetId()); + bmsMasterUser.setObjectInfo(point); + } + return R.ok(bmsMasterUser); + } + + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/saveBatch") + @SysLog(module = SystemModule.BASE, title = "负责人", biz = BizType.INSERT) + @PreAuthorize("hasRole('bms:masterUser:insert')") + public R save(@RequestBody @Valid BmsMasterUserBo param){ + String type = param.getType(); + List masterUsers = new ArrayList<>(); + for (String userId : param.getUserIds()) { + for (String targetId : param.getTargetIds()) { + BmsMasterUser masterUser = bmsMasterUserService.getByParam(type,targetId,userId); + if(masterUser == null){ + masterUser = new BmsMasterUser(); + masterUser.setType(type); + masterUser.setTargetId(targetId); + masterUser.setUserId(userId); + masterUsers.add(masterUser); + } + } + } + bmsMasterUserService.saveBatch(masterUsers); + return R.ok(); + } + + /** + * 设置为主要负责人 + * @param id + * @return + */ + @PostMapping("/setMaster/{id}") + @SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) + @PreAuthorize("hasRole('bms:regionUser:update')") + public R updateById(@PathVariable("id")Long id){ + bmsMasterUserService.setMaster(id); + return R.ok(); + } + + /** + * 取消主要负责人 + * @param id + * @return + */ + @PostMapping("/cancelMaster/{id}") + @SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) + @PreAuthorize("hasRole('bms:masterUser:update')") + public R cancelMaster(@PathVariable("id")Long id){ + BmsMasterUser regionUser = new BmsMasterUser(); + regionUser.setId(id); + regionUser.setMasterFlag(0); + bmsMasterUserService.updateById(regionUser); + return R.ok(); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.BASE, title = "负责人", biz = BizType.DELETE) + @PreAuthorize("hasRole('bms:masterUser:delete')") + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = bmsMasterUserService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java index ea03a5b0..f9b32f86 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java @@ -6,9 +6,11 @@ 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.CollectionUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.entity.bo.BmsSupplierChannelBo; import com.qs.serve.modules.bms.service.BmsChannelService; import com.qs.serve.modules.bms.service.BmsSupplierService; import lombok.AllArgsConstructor; @@ -20,7 +22,9 @@ import com.qs.serve.modules.bms.entity.BmsSupplierChannel; import com.qs.serve.modules.bms.service.BmsSupplierChannelService; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * 基础档案 客户渠道关系 @@ -91,22 +95,42 @@ public class BmsSupplierChannelController { @PostMapping("/save") @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.INSERT) @PreAuthorize("hasRole('bms:supplierChannel:insert')") - public R save(@RequestBody @Valid BmsSupplierChannel param){ - boolean result = bmsSupplierChannelService.save(param); - return R.isTrue(result); + public R save(@RequestBody @Valid BmsSupplierChannelBo param){ + for (Long channelId : param.getChannelIds()) { + for (Long supplierId : param.getSupplierIds()) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSupplierChannel::getChannelId,channelId); + lqw.eq(BmsSupplierChannel::getSupplierId,supplierId); + boolean exist = bmsSupplierChannelService.count(lqw)>0; + if(!exist){ + BmsSupplierChannel supplierChannel = new BmsSupplierChannel(); + supplierChannel.setSupplierId(supplierId); + supplierChannel.setChannelId(channelId); + bmsSupplierChannelService.save(supplierChannel); + } + } + } + return R.ok(); } /** * 删除 - * @param id + * @param ids * @return */ - @DeleteMapping("/deleteById/{id}") + @DeleteMapping("/deleteById/{ids}") @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.DELETE) @PreAuthorize("hasRole('bms:supplierChannel:delete')") - public R deleteById(@PathVariable("id") Long id){ - boolean result = bmsSupplierChannelService.removeById(id); - return R.isTrue(result); + public R deleteById(@PathVariable("ids") String ids){ + if(ids.contains(",")){ + List idArr = Arrays.asList(ids.split(",")) + .stream().map(a->Long.parseLong(a)) + .collect(Collectors.toList()); + bmsSupplierChannelService.removeByIds(idArr); + }else { + bmsSupplierChannelService.removeById(Long.parseLong(ids)); + } + return R.ok(); } } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java new file mode 100644 index 00000000..ed525b76 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java @@ -0,0 +1,106 @@ +package com.qs.serve.modules.bms.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 负责人 实体类 + * @author YenHex + * @since 2022-11-10 + */ +@Data +@TableName("bms_master_user") +public class BmsMasterUser implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 类型:channel、point */ + @NotBlank(message = "类型不能为空") + @Length(max = 10,message = "类型长度不能超过10字") + private String type; + + /** 目标id */ + @NotBlank(message = "目标id不能为空") + @Length(max = 32,message = "目标id长度不能超过32字") + private String targetId; + + /** 用户id */ + @NotBlank(message = "用户id不能为空") + @Length(max = 32,message = "用户id长度不能超过32字") + private String userId; + + /** 主要负责人 */ + @NotNull(message = "主要负责人不能为空") + private Integer masterFlag; + + /** 拓展字段1 */ + @Length(max = 255,message = "拓展字段1长度不能超过255字") + private String sp1; + + /** 拓展字段2 */ + @Length(max = 255,message = "拓展字段2长度不能超过255字") + private String sp2; + + /** 拓展字段3 */ + @Length(max = 255,message = "拓展字段3长度不能超过255字") + private String sp3; + + /** 备注 */ + @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; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @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; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + @TableField(exist = false) + private Object userInfo; + + @TableField(exist = false) + private Object objectInfo; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsMasterUserBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsMasterUserBo.java new file mode 100644 index 00000000..d3070827 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsMasterUserBo.java @@ -0,0 +1,39 @@ +package com.qs.serve.modules.bms.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 负责人 Bo + * @author YenHex + * @since 2022-11-10 + */ +@Data +public class BmsMasterUserBo implements Serializable { + + /** id列表 */ + private List targetIds; + + /** 类型 */ + @NotNull(message = "类型不能为空") + private String type; + + /** 用户id列表 */ + @NotNull(message = "用户id不能为空") + private List userIds; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierChannelBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierChannelBo.java new file mode 100644 index 00000000..8c949023 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierChannelBo.java @@ -0,0 +1,23 @@ +package com.qs.serve.modules.bms.entity.bo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author YenHex + * @since 2022/11/10 + */ +@Data +public class BmsSupplierChannelBo { + + /** 渠道id */ + @NotNull(message = "渠道id不能为空") + private List channelIds; + + /** 客户id */ + @NotNull(message = "客户id不能为空") + private List supplierIds; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserChannelVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserChannelVo.java new file mode 100644 index 00000000..cf5c36e8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserChannelVo.java @@ -0,0 +1,25 @@ +package com.qs.serve.modules.bms.entity.vo; + +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/11 + */ +@Data +public class BmsMasterUserChannelVo extends BmsMasterUser { + + private String userCode; + + private String userName; + + private String channelName; + + private String channelCode; + + private String pointName; + + private String pointCode; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserPointVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserPointVo.java new file mode 100644 index 00000000..4163cc2f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserPointVo.java @@ -0,0 +1,21 @@ +package com.qs.serve.modules.bms.entity.vo; + +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/11 + */ +@Data +public class BmsMasterUserPointVo extends BmsMasterUser { + + private String userCode; + + private String userName; + + private String pointName; + + private String pointCode; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserVo.java new file mode 100644 index 00000000..c5cc4612 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserVo.java @@ -0,0 +1,80 @@ +package com.qs.serve.modules.bms.entity.vo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 负责人 VO + * @author YenHex + * @since 2022-11-10 + */ +@Data +public class BmsMasterUserVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 类型 */ + private String type; + + /** 目标id */ + private String targetId; + + /** 用户id */ + private String userId; + + /** 主要负责人 */ + private Integer masterFlag; + + /** 拓展字段1 */ + private String sp1; + + /** 拓展字段2 */ + private String sp2; + + /** 拓展字段3 */ + private String sp3; + + /** 备注 */ + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** 创建人 */ + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** 更新人 */ + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + +} + 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 new file mode 100644 index 00000000..51806bd6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java @@ -0,0 +1,33 @@ +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.vo.BmsMasterUserChannelVo; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserPointVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 负责人 Mapper + * @author YenHex + * @date 2022-11-10 + */ +public interface BmsMasterUserMapper extends BaseMapper { + + /** + * 查询渠道负责人 + * @param userChannel + * @return + */ + List selectChannelMasterUserList(@Param("query") BmsMasterUserChannelVo userChannel); + + /** + * 查询站点负责人 + * @param userChannel + * @return + */ + List selectPointMasterUserList(@Param("query") BmsMasterUserPointVo userChannel); + +} + 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 new file mode 100644 index 00000000..59cbac6b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsMasterUserService.java @@ -0,0 +1,25 @@ +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; + +/** + * 负责人 服务接口 + * @author YenHex + * @date 2022-11-10 + */ +public interface BmsMasterUserService extends IService { + + + + BmsMasterUser getByParam(String type, String targetId, String userId); + + /** + * 设置主要负责人 + * @param id + */ + void setMaster(Long id); + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsMasterUserServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsMasterUserServiceImpl.java new file mode 100644 index 00000000..109b4e5e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsMasterUserServiceImpl.java @@ -0,0 +1,46 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.modules.bms.entity.BmsRegionUser; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import com.qs.serve.modules.bms.service.BmsMasterUserService; +import com.qs.serve.modules.bms.mapper.BmsMasterUserMapper; + +/** + * 负责人 服务实现类 + * @author YenHex + * @since 2022-11-10 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsMasterUserServiceImpl extends ServiceImpl implements BmsMasterUserService { + + @Override + public BmsMasterUser getByParam(String type, String targetId, String userId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsMasterUser::getTenantId,targetId); + lqw.eq(BmsMasterUser::getType,type); + lqw.eq(BmsMasterUser::getUserId,userId); + return this.getOne(lqw,false); + } + + @Override + public void setMaster(Long id) { + BmsMasterUser masterUser = this.getById(id); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsMasterUser::getTargetId,masterUser.getTargetId()); + lqw.eq(BmsMasterUser::getType,masterUser.getType()); + lqw.ne(BmsMasterUser::getUserId,masterUser.getUserId()); + BmsMasterUser param = new BmsMasterUser(); + param.setMasterFlag(0); + this.update(param,lqw); + masterUser.setMasterFlag(1); + this.updateById(masterUser); + } +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java index 35871161..63aa4e6f 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java @@ -85,7 +85,7 @@ public class GoodsSku implements Serializable { private Integer version; /** 备注 */ - private Integer remark; + private String remark; /** 最后更新时间 */ @TableField(fill = FieldFill.UPDATE) diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java index a4459454..80a75748 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java @@ -64,7 +64,7 @@ public class GoodsSkuBo implements Serializable { private Integer version; /** 备注 */ - private Integer remark; + private String remark; /** 规格值Ids(更新操作可为空) */ private List specValueIds; diff --git a/src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java b/src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java new file mode 100644 index 00000000..ba687f46 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/dto/TbsCenterDto.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.goods.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/10 + */ +@Data +@AllArgsConstructor +public class TbsCenterDto { + + String centerCode; + + String centerName; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index d5db904e..ea710f99 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java @@ -71,7 +71,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl im } GoodsSku goodsSku = CopierUtil.copy(goodSkuVo,new GoodsSku()); if(dbGoodSku!=null){ - if(goodsSku.getSpuId()!=null&&goodsSku.getSpuId().equals(dbGoodSku.getSpuId())){ + if(goodsSku.getSpuId()!=null&&!goodsSku.getSpuId().equals(dbGoodSku.getSpuId())){ Assert.throwEx("规格编码已被其它商品使用"); } goodsSku.setId(dbGoodSku.getId()); @@ -99,7 +99,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl im } return true; }); - if(!noExist){ + if(goodsSku.getId()==null&&!noExist){ Assert.throwEx("规格值组合已被占用"); } } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysDictDataController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysDictDataController.java index 1593872c..b4846ed2 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysDictDataController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysDictDataController.java @@ -7,6 +7,7 @@ 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.PageUtil; +import com.qs.serve.common.util.StringUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -31,6 +32,22 @@ public class SysDictDataController { private SysDictDataService sysDictDataService; + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/list") + @PreAuthorize("hasRole('sys:dictData:query')") + public R> getList(SysDictData param){ + if(!StringUtils.hasText(param.getGroupKey())){ + return R.ok(); + } + LambdaQueryWrapper dictDataWrapper = new LambdaQueryWrapper<>(param); + List list = sysDictDataService.list(dictDataWrapper); + return R.ok(list); + } + /** * 翻页 * @param param @@ -39,12 +56,16 @@ public class SysDictDataController { @GetMapping("/page") @PreAuthorize("hasRole('sys:dictData:query')") public R> getPage(SysDictData param){ + if(!StringUtils.hasText(param.getGroupKey())){ + return R.byEmptyList(); + } PageUtil.startPage(); LambdaQueryWrapper dictDataWrapper = new LambdaQueryWrapper<>(param); List list = sysDictDataService.list(dictDataWrapper); return R.byPageHelperList(list); } + /** * ID查询 * @param id diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenter.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenter.java index b9437c8f..6366352c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenter.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenter.java @@ -51,14 +51,20 @@ public class TbsActivityCenter implements Serializable { @NotNull(message = "费用额度不能为空") private BigDecimal centerAmount; - /** 成本中心类型 */ + /** 成本中心类型 + center, + customer, + dept, + bizRegion, + saleRegion, + saleman */ @NotBlank(message = "成本中心类型不能为空") @Length(max = 255,message = "成本中心类型长度不能超过255字") private String centerType; /** 成本中心id */ @NotNull(message = "成本中心id不能为空") - private Long centerId; + private String centerId; /** 成本中心编码 */ @NotBlank(message = "成本中心编码不能为空") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivitySubjectBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivitySubjectBo.java index 712c8da3..e778c68b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivitySubjectBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivitySubjectBo.java @@ -62,7 +62,7 @@ public class TbsActivitySubjectBo implements Serializable { /** 成本中心id */ @NotNull(message = "成本中心id不能为空") - private Long centerId; + private String centerId; /** 费用占比率,单位百分位(该成本中心在费用中占比) */ @NotNull(message = "费用占比率不能为空") diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java index 214e65fc..45be3184 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java @@ -4,16 +4,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.modules.bms.entity.BmsSubject; -import com.qs.serve.modules.bms.entity.BmsSupplier; -import com.qs.serve.modules.bms.service.BmsSubjectService; -import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.bms.entity.*; +import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSpu; +import com.qs.serve.modules.goods.entity.dto.TbsCenterDto; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.sys.entity.SysDept; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysDeptService; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo; @@ -47,12 +51,21 @@ public class TbsActivityServiceImpl extends ServiceImpl activityGoodsList = this.buildActGoodsList(activityBo,costApply,activity); + //费用详情 + Map subjectMap = new HashMap<>(); + List activitySubjects = new ArrayList<>(); + List activityCenterList = new ArrayList<>(); + for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { + BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); + subjectMap.put(subject.getId(),subject); + TbsActivitySubject activitySubject = new TbsActivitySubject(); + activitySubject.setCostApplyId(costApply.getId()); + activitySubject.setActivityId(activity.getId()); + activitySubject.setSubjectId(subject.getId()); + activitySubject.setSubjectCode(subject.getSubjectCode()); + activitySubject.setSubjectName(subject.getSubjectName()); + activitySubject.setAmount(subjectBo.getAmount()); + activitySubject.setCountSession(subjectBo.getCountSession()); + activitySubject.setCountPerson(subjectBo.getCountPerson()); + activitySubject.setRemark(subjectBo.getRemark()); + activitySubjects.add(activitySubject); + for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { + String centerType = centerBo.getCenterType(); + String centerId = centerBo.getCenterId(); + TbsCenterDto tbsCenterDto = getCenterDto(centerType,centerId); + TbsActivityCenter activityCenter = new TbsActivityCenter(); + activityCenter.setCostApplyId(costApply.getId()); + activityCenter.setActivityId(activity.getId()); + activityCenter.setSubjectId(subjectBo.getSubjectId()); + activityCenter.setCenterRate(centerBo.getCenterRate()); + //todo 判断是否允许超预算 + activityCenter.setCenterAmount(centerBo.getCenterAmount()); + activityCenter.setCenterType(centerBo.getCenterType()); + activityCenter.setCenterId(centerBo.getCenterId()); + activityCenter.setCenterName(tbsCenterDto.getCenterName()); + activityCenter.setCenterCode(tbsCenterDto.getCenterCode()); + activityCenterList.add(activityCenter); + } + } + //产品成本配占比 + for (TbsActivityCenterGoodsBo centerGoodsBo : activityBo.getActivityCenterGoodsList()) { + BmsSubject subject = subjectMap.get(centerGoodsBo.getCenterId()); + TbsActivityCenterGoods centerGoods = new TbsActivityCenterGoods(); + centerGoods.setCostApplyId(costApply.getId()); + centerGoods.setActivityId(activity.getId()); + centerGoods.setSubjectId(subject.getId()); + centerGoods.setSubjectCode(subject.getSubjectCode()); + centerGoods.setSubjectName(subject.getSubjectName()); + centerGoods.setCenterGoodsAmount(centerGoodsBo.getCenterGoodsAmount()); + centerGoods.setCenterGoodsRate(centerGoodsBo.getCenterGoodsRate()); + //todo 设置成本中心 + + //设置商品 + } + //客户详情 + } + + /** + * 建立活动商品 + * @param activityBo + * @param costApply + * @param activity + * @return + */ + public List buildActGoodsList(TbsActivityBo activityBo,TbsCostApply costApply,TbsActivity activity){ List activityGoodsList = new ArrayList<>(); String goodsType = activityBo.getActivityGoodsType(); if(goodsType.equals(TbsGoodsType.spu.name())){ @@ -132,53 +208,38 @@ public class TbsActivityServiceImpl extends ServiceImpl subjectMap = new HashMap<>(); - List activitySubjects = new ArrayList<>(); - List activityCenterList = new ArrayList<>(); - for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { - BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); - subjectMap.put(subject.getId(),subject); - TbsActivitySubject activitySubject = new TbsActivitySubject(); - activitySubject.setCostApplyId(costApply.getId()); - activitySubject.setActivityId(activity.getId()); - activitySubject.setSubjectId(subject.getId()); - activitySubject.setSubjectCode(subject.getSubjectCode()); - activitySubject.setSubjectName(subject.getSubjectName()); - activitySubject.setAmount(subjectBo.getAmount()); - activitySubject.setCountSession(subjectBo.getCountSession()); - activitySubject.setCountPerson(subjectBo.getCountPerson()); - activitySubject.setRemark(subjectBo.getRemark()); - activitySubjects.add(activitySubject); - for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { - TbsActivityCenter activityCenter = new TbsActivityCenter(); - activityCenter.setCostApplyId(costApply.getId()); - activityCenter.setActivityId(activity.getId()); - activityCenter.setSubjectId(subjectBo.getSubjectId()); - activityCenter.setCenterRate(centerBo.getCenterRate()); - activityCenter.setCenterAmount(centerBo.getCenterAmount()); - activityCenter.setCenterType(centerBo.getCenterType()); - activityCenter.setCenterId(centerBo.getCenterId()); - //todo activityCenter.setCenterCode(centerBo.getCenterCode()); - activityCenterList.add(activityCenter); - } - } - //产品成本配占比 - for (TbsActivityCenterGoodsBo centerGoodsBo : activityBo.getActivityCenterGoodsList()) { - BmsSubject subject = subjectMap.get(centerGoodsBo.getCenterId()); - TbsActivityCenterGoods centerGoods = new TbsActivityCenterGoods(); - centerGoods.setCostApplyId(costApply.getId()); - centerGoods.setActivityId(activity.getId()); - centerGoods.setSubjectId(subject.getId()); - centerGoods.setSubjectCode(subject.getSubjectCode()); - centerGoods.setSubjectName(subject.getSubjectName()); - centerGoods.setCenterGoodsAmount(centerGoodsBo.getCenterGoodsAmount()); - centerGoods.setCenterGoodsRate(centerGoodsBo.getCenterGoodsRate()); - //todo 设置成本中心 - //设置商品 + return activityGoodsList; + } + + /** + * todo 获取成本中心DTO + * @param centerType + * @param centerId + * @return + */ + public TbsCenterDto getCenterDto(String centerType,String centerId){ + TbsCenterDto centerDto = null; + if(centerType.equals(TbsCenterType.center.name())){ + BmsCostCenter costCenter = costCenterService.getById(centerId); + }else if (centerType.equals(TbsCenterType.customer.name())){ + BmsSupplier supplier4Center = supplierService.getById(centerId); + }else if(centerType.equals(TbsCenterType.dept.name())){ + SysDept dept = deptService.getById(centerId); + + }else if(centerType.equals(TbsCenterType.saleRegion.name())){ + BmsRegion saleRegion = saleRegionService.getById(centerId); + + }else if (centerType.equals(TbsCenterType.bizRegion.name())){ + BmsRegion2 bizRegion = bizRegionService.getById(centerId); + + }else if (centerType.equals(TbsCenterType.saleman.name())){ + SysUser sysUser = userService.getById(centerId); + + }else { + Assert.throwEx("无法匹配成本中心类型:"+centerType); } - //客户详情 + return centerDto; } } diff --git a/src/main/resources/mapper/bms/BmsMasterUserMapper.xml b/src/main/resources/mapper/bms/BmsMasterUserMapper.xml new file mode 100644 index 00000000..a742a36d --- /dev/null +++ b/src/main/resources/mapper/bms/BmsMasterUserMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bms_master_user.`id`, + bms_master_user.`type`, + bms_master_user.`target_id`, + bms_master_user.`user_id`, + bms_master_user.`master_flag`, + bms_master_user.`sp1`, + bms_master_user.`sp2`, + bms_master_user.`sp3`, + bms_master_user.`remark`, + bms_master_user.`create_time`, + bms_master_user.`create_by`, + bms_master_user.`update_time`, + bms_master_user.`update_by`, + bms_master_user.`tenant_id`, + bms_master_user.`del_flag` + + + and `bms_master_user`.`id` = #{query.id} + and `bms_master_user`.`type` = #{query.type} + and `bms_master_user`.`target_id` = #{query.targetId} + and `bms_master_user`.`user_id` = #{query.userId} + and `bms_master_user`.`master_flag` = #{query.masterFlag} + and `bms_master_user`.`sp1` = #{query.sp1} + and `bms_master_user`.`sp2` = #{query.sp2} + and `bms_master_user`.`sp3` = #{query.sp3} + and `bms_master_user`.`remark` = #{query.remark} + and `bms_master_user`.`create_time` = #{query.createTime} + and `bms_master_user`.`create_by` = #{query.createBy} + and `bms_master_user`.`update_time` = #{query.updateTime} + and `bms_master_user`.`update_by` = #{query.updateBy} + and `bms_master_user`.`tenant_id` = #{query.tenantId} + and `bms_master_user`.`del_flag` = #{query.delFlag} + + + + + + +